PEC correction
Start by importing MagmaPEC and MagmaPandas and any other packages you want to use. Here we also import Pandas for importing pressure data. For details on the use of MagmaPandas, please see it’s documentation.
[1]:
import MagmaPEC as mpc
import MagmaPandas as mp
import pandas as pd
Import your melt inclusion and olivine data as magmapandas dataframes. Expected units are wt.%, and in the column headers only the first letter of each element should be capitalized. Iron is expected to be expressed as FeO (total), with column name ‘FeO’.
[ ]:
melt_file = "./data/melt.csv"
olivine_file = "./data/olivine.csv"
melt = mp.read_melt(melt_file, index_col=["name"], units="wt.%")
olivine = mp.read_olivine(olivine_file, index_col=["name"], units="wt.%")
Here’s an example of the expected column header formatting:
[3]:
print(melt.columns.values)
['SiO2' 'Al2O3' 'MgO' 'CaO' 'FeO' 'Na2O' 'K2O' 'MnO' 'TiO2' 'P2O5' 'Cr2O3'
'CO2' 'H2O' 'F' 'S' 'Cl']
If you have data for internal inclusion pressures (in bars) you can also import those. The data need to be list-like (e.g. list, numpy array, pandas series) and if you use a pandas series you need to make sure the index matches those of the melt and olivine dataframes.
The pressures we use here were calculated previously with CO2-H2O solubility models. CO2 from the glass only was used, i.e. not from the bubble, and resulting pressures are final pressures inside the inclusions, at the end of post-entrapment crystallization.
In reality, pressures are not fixed during post-entrapment crystallisation. Olivine has a lower specific volume than silicate melt, so as inclusions crystallize olivine, their internal pressures decrease. However, many melt inclusions are trapped at high pressure (>5 kbar) and compared to that, PEC-driven pressure decreases are relatively minor (<2 kbar). Moreover, modelling pressure changes during post-entrapment crystallization is complicated and requires tight thermodynamic constraints. MagmaPEC therefore runs at fixed pressures.
Suitable pressure options are final, post-PEC, pressures or an approximations of entrapment pressures. Entrapment pressures can be approximated by calculating CO2 saturation pressures of uncorrected inclusions with their total CO2 budgets (glass + bubble + carbonates), or by running PEC corrections iteratively. Note that the former results in overestimated saturation pressures as PEC corrections dilute inclusion CO2 concentrations. Modelled PEC extents increase with pressure. Post-PEC pressures will therefore yield slightly underestimated PEC extents, and entrapment pressures slightly overestimated PEC extents.
[4]:
pressure_file ="./data/pressure.csv"
pressure = pd.read_csv(pressure_file, index_col = ["name"]).squeeze()
pressure
[4]:
name
PI032-04-01 4104.410589
PI032-04-02 4231.966408
PI041-02-02 1956.244091
PI041-03-01 3548.843351
PI041-03-03 3500.514426
PI041-05-04 1386.274577
PI041-05-06 2512.013195
PI041-07-01 3668.361134
PI041-07-02 2449.116051
PI052-01-02 1404.218415
Name: IaconoMarziano, dtype: float64
Alternatively, if you have melt CO2 (and H2O) data, you can use MagmaPandas to calculate volatile saturation pressures. First calculate temperature with some initial pressure and then iteratively calculate pressure and temperature. See the MagmaPandas documentation for more details.
The melt compositions in this example have been corrected for CO2 bubbles and the pressures calculated here are therefore overestimated approximations of inclusion entrapment pressures (see above).
In the rest of this notebook we do not use these modelled pressures, and instead use the above imported post-PEC pressures.
[5]:
melt
[5]:
| SiO2 | Al2O3 | MgO | CaO | FeO | Na2O | K2O | MnO | TiO2 | P2O5 | Cr2O3 | CO2 | H2O | F | S | Cl | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | ||||||||||||||||
| PI032-04-01 | 50.028862 | 15.226979 | 5.330006 | 10.522019 | 8.59454 | 3.914280 | 0.730798 | 0.126266 | 2.669216 | 0.303542 | NaN | 0.658252 | 1.508379 | 0.082590 | 0.152337 | 0.035565 |
| PI032-04-02 | 49.558861 | 16.041588 | 5.117479 | 10.266067 | 8.25471 | 3.782408 | 0.997826 | 0.129969 | 2.814807 | 0.356900 | NaN | 0.713472 | 1.412274 | 0.089010 | 0.175511 | 0.047265 |
| PI041-02-02 | 49.112045 | 16.972038 | 4.864153 | 9.195718 | 10.07540 | 3.793512 | 1.079184 | 0.153456 | 2.807967 | 0.561756 | NaN | 0.464520 | 0.656341 | 0.047715 | 0.068108 | 0.021185 |
| PI041-03-01 | 47.098515 | 17.448515 | 4.650640 | 12.154110 | 7.95402 | 3.707263 | 1.268282 | 0.101370 | 3.493271 | 0.611504 | NaN | 0.883720 | 0.324968 | 0.088070 | 0.096228 | 0.059958 |
| PI041-03-03 | 46.478870 | 17.637102 | 4.762752 | 12.364033 | 7.84027 | 3.789446 | 1.294603 | 0.077221 | 3.617484 | 0.574248 | NaN | 0.910470 | 0.344988 | 0.090605 | 0.088145 | 0.061584 |
| PI041-05-04 | 47.138298 | 17.956741 | 4.024120 | 9.080720 | 11.06460 | 4.443080 | 1.552079 | 0.137008 | 2.402199 | 0.797181 | NaN | 0.492738 | 0.445967 | 0.084777 | 0.117315 | 0.057016 |
| PI041-05-06 | 46.501282 | 17.311686 | 4.228429 | 9.097128 | 11.04740 | 4.082553 | 1.445413 | 0.162975 | 3.707347 | 0.631987 | NaN | 0.652985 | 0.597560 | 0.109584 | 0.130704 | 0.064655 |
| PI041-07-01 | 46.719250 | 16.933716 | 4.811947 | 10.734431 | 9.19577 | 3.480676 | 1.414640 | 0.135673 | 3.927458 | 0.616899 | NaN | 0.520014 | 1.134939 | 0.083496 | 0.181692 | 0.062622 |
| PI041-07-02 | 46.703835 | 17.152630 | 4.807799 | 11.070642 | 9.02066 | 3.513364 | 1.498242 | 0.127613 | 3.893234 | 0.678595 | NaN | 0.409963 | 0.678781 | 0.081043 | 0.154646 | 0.063188 |
| PI052-01-02 | 47.820721 | 15.705019 | 4.604759 | 9.579294 | 11.98700 | 4.545954 | 1.414319 | 0.230238 | 1.627613 | 0.631908 | 0.043855 | 0.265884 | 1.035920 | 0.075849 | 0.116614 | 0.049536 |
[6]:
temperature = melt.temperature(P_bar = 5e3)
pressure_calc = melt.volatile_saturation_pressure(T_K=temperature)
while True:
temperature = melt.temperature(P_bar=pressure_calc)
pressure_calc_new = melt.volatile_saturation_pressure(T_K=temperature)
dP = (pressure_calc_new - pressure_calc) / pressure_calc_new # calculate percentage change
pressure_calc = pressure_calc_new.copy()
if (dP < 0.01).all():
# break when all pressure have converged within 1% of previous values.
break
pressure_calc
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.6s
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.3s
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.3s
[6]:
name
PI032-04-01 6152.773380
PI032-04-02 6822.817783
PI041-02-02 4801.389400
PI041-03-01 6957.131799
PI041-03-03 6825.409494
PI041-05-04 4012.681954
PI041-05-06 5267.599946
PI041-07-01 4966.863409
PI041-07-02 4174.413404
PI052-01-02 2387.565435
dtype: float64
Here we will also use a whole-rock dataset to set up a model for predicting the initial FeO contents of our melt inclusions. For explanation of this model, follow the Initial FeO prediction example.
[7]:
wholerock_file = "./data/wholerock.csv"
wholerock = mp.read_melt(wholerock_file, index_col=["name"])
Let’s begin by setting up the model to predict the initial FeO content of our melt inclusions according to the previous example. Here, the FeO prediction model is based on TiO2, Al2O3 and CaO, which we can check by accessing their coefficients:
[8]:
x = wholerock.drop(columns=["FeO"])
FeOi_predict = mpc.FeOi_prediction(x=x, FeO=wholerock["FeO"])
do_not_use = ["MnO", "P2O5", "Cr2O3", "total"]
model_fits = FeOi_predict.calculate_model_fits(exclude=do_not_use)
FeOi_predict.select_predictors(idx=3)
[9]:
FeOi_predict.coefficients
[9]:
intercept 11.585125
TiO2 1.463365
Al2O3 -0.230722
CaO -0.169262
dtype: float64
To use this model during PEC correction, we need to store this model as a callable function, which we can do with the model attribute:
[10]:
FeO_model = FeOi_predict.model
Let’s first quickly test the model by predicting FeO contents for our uncorrected melt compositions:
[11]:
FeO_model(melt)
[11]:
name
PI032-04-01 10.196984
PI032-04-02 10.265411
PI041-02-02 10.221895
PI041-03-01 10.614069
PI041-03-03 10.716794
PI041-05-04 9.420381
PI041-05-06 11.476340
PI041-07-01 11.608516
PI041-07-02 11.451018
PI052-01-02 8.722012
dtype: float32
This all looks good, so let continue with setting up the PEC correction model.
First, preview the melt and olivine data to check everything looks ok:
[12]:
melt.head()
[12]:
| SiO2 | Al2O3 | MgO | CaO | FeO | Na2O | K2O | MnO | TiO2 | P2O5 | Cr2O3 | CO2 | H2O | F | S | Cl | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | ||||||||||||||||
| PI032-04-01 | 50.028862 | 15.226979 | 5.330006 | 10.522019 | 8.59454 | 3.914280 | 0.730798 | 0.126266 | 2.669216 | 0.303542 | NaN | 0.658252 | 1.508379 | 0.082590 | 0.152337 | 0.035565 |
| PI032-04-02 | 49.558861 | 16.041588 | 5.117479 | 10.266067 | 8.25471 | 3.782408 | 0.997826 | 0.129969 | 2.814807 | 0.356900 | NaN | 0.713472 | 1.412274 | 0.089010 | 0.175511 | 0.047265 |
| PI041-02-02 | 49.112045 | 16.972038 | 4.864153 | 9.195718 | 10.07540 | 3.793512 | 1.079184 | 0.153456 | 2.807967 | 0.561756 | NaN | 0.464520 | 0.656341 | 0.047715 | 0.068108 | 0.021185 |
| PI041-03-01 | 47.098515 | 17.448515 | 4.650640 | 12.154110 | 7.95402 | 3.707263 | 1.268282 | 0.101370 | 3.493271 | 0.611504 | NaN | 0.883720 | 0.324968 | 0.088070 | 0.096228 | 0.059958 |
| PI041-03-03 | 46.478870 | 17.637102 | 4.762752 | 12.364033 | 7.84027 | 3.789446 | 1.294603 | 0.077221 | 3.617484 | 0.574248 | NaN | 0.910470 | 0.344988 | 0.090605 | 0.088145 | 0.061584 |
[13]:
olivine.head()
[13]:
| SiO2 | FeO | MgO | NiO | MnO | Al2O3 | CaO | total | |
|---|---|---|---|---|---|---|---|---|
| name | ||||||||
| PI032-04-01 | 38.204800 | 15.981400 | 44.194000 | 0.172665 | 0.234256 | 0.005229 | 0.240552 | 99.032906 |
| PI032-04-02 | 38.638500 | 15.898400 | 43.467400 | 0.188024 | 0.219599 | -0.007310 | 0.234622 | 98.639236 |
| PI041-02-02 | 37.270100 | 20.815901 | 41.015099 | 0.104744 | 0.293681 | 0.016547 | 0.214939 | 99.731003 |
| PI041-03-01 | 38.795799 | 15.469300 | 44.750999 | 0.180198 | 0.212197 | 0.031333 | 0.259919 | 99.699745 |
| PI041-03-03 | 38.701900 | 15.782500 | 44.920799 | 0.164372 | 0.214836 | 0.037263 | 0.275049 | 100.096718 |
Make sure that each row in melt and olivine is a matching pair of melt inclusion and olivine host. Here we use the sample names stored in the indices of both dataframes:
[14]:
print(melt.index, "\n\n", olivine.index)
Index(['PI032-04-01', 'PI032-04-02', 'PI041-02-02', 'PI041-03-01',
'PI041-03-03', 'PI041-05-04', 'PI041-05-06', 'PI041-07-01',
'PI041-07-02', 'PI052-01-02'],
dtype='object', name='name')
Index(['PI032-04-01', 'PI032-04-02', 'PI041-02-02', 'PI041-03-01',
'PI041-03-03', 'PI041-05-04', 'PI041-05-06', 'PI041-07-01',
'PI041-07-02', 'PI052-01-02'],
dtype='object', name='name')
We can verify that the indices are the same with the equals method:
[15]:
melt.index.equals(olivine.index)
[15]:
True
Confirm the model and PEC configurations. If you want to change models or PEC settings, follow the configuration example.
[16]:
print(mpc.model_configuration)
print(mpc.PEC_configuration)
################## MagmaPandas ###################
##################################################
General settings__________________________________
fO2 buffer.....................................QFM
ΔfO2.............................................1
Melt Fe3+/Fe2+.............................sun2024
Kd Fe-Mg ol-melt........................toplis2005
Melt thermometer....................putirka2008_15
Volatile solubility model.......iaconomarziano2012
Volatile species.............................mixed
##################################################
############ Post-entrapment crystallisation ############
################### correction model ####################
Settings_________________________________________________
Fe2+ behaviour...................................buffered
Stepsize equilibration (moles)...................0.002
Stepsize crystallisation (moles).................0.05
Decrease factor..................................5
FeO convergence (wt. %)..........................0.05
Kd convergence...................................0.005
#########################################################
Now we can initialise the PEC model, where we need the following data:
inclusions
inclusion major element compositions in oxide wt. % as a MagmaPandas Melt frame.
olivines
olivine major element compositions in oxide wt. % as a MagmaPandas Olivine frame.
P_bar
pressures in bar at which to run the model. You can use a fixed pressure for all inclusions, e.g. P_bar=2e3 for 2 kbar, or indicate specific pressures per inclusion. In this example we do the latter, by passing the above imported pandas Series with internal inclusion pressures
FeO_target
Estimated initial FeO contents of melt inclusions. You can use a fixed value for all melt inclusions, e.g. FeO = 11, specific values for individual melt inclusions, stored in a pandas Series, or a predictive equation based on melt major element composition. This equation needs to be a callable function that accepts a Pandas DataFrame with melt compositions in oxide wt. % as input and return an array-like object with initial FeO contents per inclusion. In the example above we showed how to set up a function like this using MagmaPEC.
[17]:
pec_model = mpc.PEC(inclusions=melt, olivines=olivine, P_bar=pressure, FeO_target=FeO_model)
Now we simply run the model with the correct method. It runs in two stages: the first stage equilibrates Fe and Mg between melt inclusions and olivine hosts through Fe-Mg cation exchange and the second stage corrects melt inclusions back to their initial FeO contents by melting or crystallising olivine.
This method returns three objects:
corrected melt compositions as a MagmaPandas Melt frame
PEC extents as a pandas DataFrame
checks to confirm the inclusions have equilibrated and reached FeOi
in equilibration_vector.py line 167, iterrows() now returns pandas series instead of MagmaSeries. _constructor_sliced needs to be modified to fix that
[18]:
melts_corrected, pec, checks = pec_model.correct()
Equilibrating ... |██████████████████████████████| 100% [10/10] in 6.7s
Correcting ... |██████████████████████████████| 100% [10/10] in 19.8s
The checks dataframe shows that isothermal equilibration during stage [1], Kd equilibration in stage [2], and FeO convergence in stage [2] were successful for all inclusions. This is the expected result, but during Monte Carlo error propagation, extreme cases of random error sampling may yield melt-olivine pairs that cannot be equilibrated without requiring crystallising exceeding the mass of the inclusion inclusion or
exchange of more Mg or Fe than the inclusion contains. If that is the case, no corrected compositions are calculated and the isothermal- of Kd-equilibration column is set to False.
[19]:
checks
[19]:
| isothermal_equilibration | Kd_equilibration | FeO_converge | |
|---|---|---|---|
| name | |||
| PI032-04-01 | True | True | True |
| PI032-04-02 | True | True | True |
| PI041-02-02 | True | True | True |
| PI041-03-01 | True | True | True |
| PI041-03-03 | True | True | True |
| PI041-05-04 | True | True | True |
| PI041-05-06 | True | True | True |
| PI041-07-01 | True | True | True |
| PI041-07-02 | True | True | True |
| PI052-01-02 | True | True | True |
The pec dataframe has three columns:
equilibration_crystallisation:
crystallisation extents during the equilibration stage.
PE_crystallisation:
crystallisation extents during the crystallisation stage.
total_crystallisation:
total amount of post-entrapment crystallisation
with all data in percent and positive values indicating post-entrapment crystallisation and negative melting
[20]:
pec
[20]:
| equilibration_crystallisation | PE_crystallisation | total_crystallisation | |
|---|---|---|---|
| name | |||
| PI032-04-01 | -2.603516 | 12.4 | 9.796851 |
| PI032-04-02 | -2.193359 | 13.0 | 10.807312 |
| PI041-02-02 | -0.405518 | 0.4 | -0.005502 |
| PI041-03-01 | -1.754883 | 14.4 | 12.645239 |
| PI041-03-03 | -0.868164 | 13.0 | 12.131775 |
| PI041-05-04 | -1.603516 | -2.8 | -4.403699 |
| PI041-05-06 | -1.605469 | 3.6 | 1.994775 |
| PI041-07-01 | -2.988281 | 15.2 | 12.212329 |
| PI041-07-02 | -1.681641 | 12.8 | 11.118481 |
| PI052-01-02 | -3.164062 | -5.0 | -8.164673 |
These crystallization extents result in the following corrected melt compositions:
[21]:
melts_corrected
[21]:
| SiO2 | Al2O3 | MgO | CaO | FeO | Na2O | K2O | MnO | TiO2 | P2O5 | Cr2O3 | CO2 | H2O | F | S | Cl | total | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | |||||||||||||||||
| PI032-04-01 | 48.931758 | 13.998598 | 7.676413 | 9.696297 | 10.314543 | 3.598378 | 0.671819 | 0.138918 | 2.453798 | 0.279044 | 0.000000 | 0.605128 | 1.386646 | 0.075925 | 0.140043 | 0.032695 | 100.0 |
| PI032-04-02 | 48.477480 | 14.628877 | 7.541123 | 9.386328 | 10.350319 | 3.449483 | 0.909998 | 0.140873 | 2.567050 | 0.325486 | 0.000000 | 0.650673 | 1.287967 | 0.081176 | 0.160063 | 0.043104 | 100.0 |
| PI041-02-02 | 49.150270 | 16.987606 | 4.816300 | 9.204823 | 10.177479 | 3.796980 | 1.080170 | 0.154551 | 2.810533 | 0.562269 | 0.000000 | 0.464944 | 0.656941 | 0.047759 | 0.068170 | 0.021204 | 100.0 |
| PI041-03-01 | 45.917206 | 15.664742 | 7.208409 | 10.936977 | 10.704627 | 3.327557 | 1.138382 | 0.113616 | 3.135482 | 0.548873 | 0.000000 | 0.793207 | 0.291684 | 0.079049 | 0.086372 | 0.053817 | 100.0 |
| PI041-03-03 | 45.331347 | 15.888018 | 7.026156 | 11.161789 | 10.801348 | 3.412875 | 1.165953 | 0.090181 | 3.258002 | 0.517183 | 0.000000 | 0.819993 | 0.310706 | 0.081601 | 0.079386 | 0.055464 | 100.0 |
| PI041-05-04 | 47.861750 | 18.767904 | 3.606197 | 9.486395 | 9.278998 | 4.643904 | 1.622232 | 0.136676 | 2.510777 | 0.833213 | 0.000000 | 0.515009 | 0.466125 | 0.088609 | 0.122617 | 0.059593 | 100.0 |
| PI041-05-06 | 46.422057 | 17.057608 | 4.659523 | 8.968947 | 11.468577 | 4.022350 | 1.424099 | 0.168946 | 3.652677 | 0.622667 | 0.000000 | 0.643356 | 0.588748 | 0.107968 | 0.128776 | 0.063701 | 100.0 |
| PI041-07-01 | 45.800372 | 15.243442 | 7.279566 | 9.691332 | 11.555568 | 3.132808 | 1.273257 | 0.148874 | 3.534937 | 0.555245 | 0.000000 | 0.468043 | 1.021510 | 0.075151 | 0.163533 | 0.056363 | 100.0 |
| PI041-07-02 | 45.865123 | 15.594001 | 6.875621 | 10.088217 | 11.467293 | 3.193868 | 1.361996 | 0.136368 | 3.539193 | 0.616885 | 0.000000 | 0.372682 | 0.617054 | 0.073673 | 0.140583 | 0.057442 | 100.0 |
| PI052-01-02 | 49.251862 | 17.077155 | 3.884960 | 10.416230 | 8.467349 | 4.943130 | 1.537887 | 0.238123 | 1.769816 | 0.687118 | 0.047686 | 0.289114 | 1.126428 | 0.082476 | 0.126803 | 0.053864 | 100.0 |
Results are also stored in the pec object and can be accessed via the inclusions and olivine_corrected attributes.
[22]:
pec_model.inclusions
[22]:
| SiO2 | Al2O3 | MgO | CaO | FeO | Na2O | K2O | MnO | TiO2 | P2O5 | Cr2O3 | CO2 | H2O | F | S | Cl | total | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | |||||||||||||||||
| PI032-04-01 | 48.931758 | 13.998598 | 7.676413 | 9.696297 | 10.314543 | 3.598378 | 0.671819 | 0.138918 | 2.453798 | 0.279044 | 0.000000 | 0.605128 | 1.386646 | 0.075925 | 0.140043 | 0.032695 | 100.0 |
| PI032-04-02 | 48.477480 | 14.628877 | 7.541123 | 9.386328 | 10.350319 | 3.449483 | 0.909998 | 0.140873 | 2.567050 | 0.325486 | 0.000000 | 0.650673 | 1.287967 | 0.081176 | 0.160063 | 0.043104 | 100.0 |
| PI041-02-02 | 49.150270 | 16.987606 | 4.816300 | 9.204823 | 10.177479 | 3.796980 | 1.080170 | 0.154551 | 2.810533 | 0.562269 | 0.000000 | 0.464944 | 0.656941 | 0.047759 | 0.068170 | 0.021204 | 100.0 |
| PI041-03-01 | 45.917206 | 15.664742 | 7.208409 | 10.936977 | 10.704627 | 3.327557 | 1.138382 | 0.113616 | 3.135482 | 0.548873 | 0.000000 | 0.793207 | 0.291684 | 0.079049 | 0.086372 | 0.053817 | 100.0 |
| PI041-03-03 | 45.331347 | 15.888018 | 7.026156 | 11.161789 | 10.801348 | 3.412875 | 1.165953 | 0.090181 | 3.258002 | 0.517183 | 0.000000 | 0.819993 | 0.310706 | 0.081601 | 0.079386 | 0.055464 | 100.0 |
| PI041-05-04 | 47.861750 | 18.767904 | 3.606197 | 9.486395 | 9.278998 | 4.643904 | 1.622232 | 0.136676 | 2.510777 | 0.833213 | 0.000000 | 0.515009 | 0.466125 | 0.088609 | 0.122617 | 0.059593 | 100.0 |
| PI041-05-06 | 46.422057 | 17.057608 | 4.659523 | 8.968947 | 11.468577 | 4.022350 | 1.424099 | 0.168946 | 3.652677 | 0.622667 | 0.000000 | 0.643356 | 0.588748 | 0.107968 | 0.128776 | 0.063701 | 100.0 |
| PI041-07-01 | 45.800372 | 15.243442 | 7.279566 | 9.691332 | 11.555568 | 3.132808 | 1.273257 | 0.148874 | 3.534937 | 0.555245 | 0.000000 | 0.468043 | 1.021510 | 0.075151 | 0.163533 | 0.056363 | 100.0 |
| PI041-07-02 | 45.865123 | 15.594001 | 6.875621 | 10.088217 | 11.467293 | 3.193868 | 1.361996 | 0.136368 | 3.539193 | 0.616885 | 0.000000 | 0.372682 | 0.617054 | 0.073673 | 0.140583 | 0.057442 | 100.0 |
| PI052-01-02 | 49.251862 | 17.077155 | 3.884960 | 10.416230 | 8.467349 | 4.943130 | 1.537887 | 0.238123 | 1.769816 | 0.687118 | 0.047686 | 0.289114 | 1.126428 | 0.082476 | 0.126803 | 0.053864 | 100.0 |
[23]:
pec_model.olivine_corrected
[23]:
| equilibration_crystallisation | PE_crystallisation | total_crystallisation | |
|---|---|---|---|
| name | |||
| PI032-04-01 | -2.603516 | 12.4 | 9.796851 |
| PI032-04-02 | -2.193359 | 13.0 | 10.807312 |
| PI041-02-02 | -0.405518 | 0.4 | -0.005502 |
| PI041-03-01 | -1.754883 | 14.4 | 12.645239 |
| PI041-03-03 | -0.868164 | 13.0 | 12.131775 |
| PI041-05-04 | -1.603516 | -2.8 | -4.403699 |
| PI041-05-06 | -1.605469 | 3.6 | 1.994775 |
| PI041-07-01 | -2.988281 | 15.2 | 12.212329 |
| PI041-07-02 | -1.681641 | 12.8 | 11.118481 |
| PI052-01-02 | -3.164062 | -5.0 | -8.164673 |
pressures, temperatures, ol-melt Fe-Mg Kd (current inclusion value, not modelled), melt Fe3Fe2, and fO2 of corrected and uncorrected inclusions can be calculated with the get_PTX method. Pressures can be inputted as a method argument, or calculated as entrapment pressures with H2O-CO2 solubility models if concentrations for those elements are available.
[24]:
# with fixed pressures
ptx_1bar = pec_model.get_PTX(P_bar=1)
ptx_1bar
[24]:
| Fe3Fe2 | Kd | P_bar | T_K | fO2_Pa | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | |
| name | ||||||||||
| PI032-04-01 | 0.188707 | 0.178602 | 0.319915 | 0.264316 | 1 | 1 | 1457.224238 | 1395.488794 | 2.514881e-08 | 4.262862e-09 |
| PI032-04-02 | 0.190549 | 0.178294 | 0.317263 | 0.267176 | 1 | 1 | 1455.928031 | 1391.605641 | 2.426294e-08 | 3.794287e-09 |
| PI041-02-02 | 0.227242 | 0.226382 | 0.294751 | 0.300484 | 1 | 1 | 1395.578651 | 1396.965854 | 4.274333e-09 | 4.455222e-09 |
| PI041-03-01 | 0.262410 | 0.247293 | 0.293857 | 0.252094 | 1 | 1 | 1462.190071 | 1392.912964 | 2.883712e-08 | 3.946251e-09 |
| PI041-03-03 | 0.268013 | 0.250184 | 0.289796 | 0.266827 | 1 | 1 | 1458.446689 | 1396.671131 | 2.601251e-08 | 4.416189e-09 |
| PI041-05-04 | 0.255278 | 0.269758 | 0.274488 | 0.259831 | 1 | 1 | 1368.094432 | 1384.513171 | 1.850474e-09 | 3.062590e-09 |
| PI041-05-06 | 0.251762 | 0.249761 | 0.285880 | 0.268891 | 1 | 1 | 1398.976578 | 1385.746363 | 4.730457e-09 | 3.179285e-09 |
| PI041-07-01 | 0.218306 | 0.204438 | 0.305101 | 0.250548 | 1 | 1 | 1456.448592 | 1387.774688 | 2.461506e-08 | 3.380520e-09 |
| PI041-07-02 | 0.246088 | 0.231809 | 0.294981 | 0.259206 | 1 | 1 | 1452.391339 | 1394.223449 | 2.199493e-08 | 4.104411e-09 |
| PI052-01-02 | 0.222466 | 0.249766 | 0.286341 | 0.245094 | 1 | 1 | 1369.139908 | 1397.202337 | 1.911440e-09 | 4.486780e-09 |
[25]:
# with entrapment pressures calculated from inclusions CO2-H2O
ptx = pec_model.get_PTX()
ptx
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.1s
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.0s
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.1s
Saturation pressure... |█████████████████████████| 100% [10/10] in 2.4s
Saturation pressure... |█████████████████████████| 100% [10/10] in 3.8s
Saturation pressure... |█████████████████████████| 100% [10/10] in 3.4s
Saturation pressure... |█████████████████████████| 100% [10/10] in 3.3s
Saturation pressure... |█████████████████████████| 100% [10/10] in 3.5s
Saturation pressure... |█████████████████████████| 100% [10/10] in 3.3s
[25]:
| Fe3Fe2 | Kd | P_bar | T_K | fO2_Pa | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | corrected | uncorrected | |
| name | ||||||||||
| PI032-04-01 | 0.170581 | 0.158949 | 0.315037 | 0.259909 | 5615.105531 | 6537.215656 | 1481.152191 | 1421.055549 | 1.213766e-07 | 2.773475e-08 |
| PI032-04-02 | 0.170426 | 0.160329 | 0.311900 | 0.263102 | 6539.207337 | 6844.720943 | 1481.531633 | 1418.632866 | 1.426248e-07 | 2.730719e-08 |
| PI041-02-02 | 0.208505 | 0.207741 | 0.290251 | 0.295917 | 4802.704675 | 4806.074256 | 1414.382126 | 1415.782524 | 1.704781e-08 | 1.775339e-08 |
| PI041-03-01 | 0.239178 | 0.223352 | 0.288449 | 0.247255 | 6444.492208 | 6959.958721 | 1487.422787 | 1420.164238 | 1.636735e-07 | 2.907688e-08 |
| PI041-03-03 | 0.243432 | 0.224927 | 0.284178 | 0.261436 | 6346.014723 | 6828.606410 | 1483.293766 | 1423.408030 | 1.446803e-07 | 3.113879e-08 |
| PI041-05-04 | 0.233976 | 0.246523 | 0.269830 | 0.255077 | 4149.081003 | 4019.235493 | 1384.338317 | 1400.248581 | 6.331567e-09 | 9.896748e-09 |
| PI041-05-06 | 0.229090 | 0.227719 | 0.280703 | 0.264149 | 5197.309478 | 5276.607931 | 1419.325326 | 1406.408389 | 2.099857e-08 | 1.471747e-08 |
| PI041-07-01 | 0.202829 | 0.188507 | 0.301225 | 0.247234 | 4429.331516 | 4968.682766 | 1475.872867 | 1407.228133 | 8.691853e-08 | 1.428748e-08 |
| PI041-07-02 | 0.229221 | 0.212882 | 0.290988 | 0.255224 | 3801.216987 | 4179.238377 | 1467.272989 | 1410.585431 | 6.228765e-08 | 1.373113e-08 |
| PI052-01-02 | 0.207545 | 0.237972 | 0.282846 | 0.242781 | 2581.149109 | 2393.387486 | 1379.243772 | 1406.570927 | 4.120173e-09 | 8.973845e-09 |