Opx and Opx-Liquid functions

Thermobar.orthopyroxene_thermobarometry.P_Put2008_eq29a(T, *, Si_Liq_cat_frac, Mg_Liq_cat_frac, Fet_Opx_cat_6ox, FmAl2SiO6, Na_Liq_cat_frac, Al_Liq_cat_frac, K_Liq_cat_frac, H2O_Liq, NaAlSi2O6)[source]

Orthopyroxene-Liquid barometer of Putirka, (2008) eq 29a. Global calibration of experiments. [Putirka, 2008]

SEE=+-2.6 kbar (all data) SEE=+-2.1 kbar for hydrous data

Thermobar.orthopyroxene_thermobarometry.P_Put2008_eq29b(T, *, ln_FmAl2SiO6_liq, Al_Liq_cat_frac, Mg_Liq_cat_frac, Fet_Liq_cat_frac, Si_Opx_cat_6ox, Fet_Opx_cat_6ox, Na_Liq_cat_frac, K_Liq_cat_frac, H2O_Liq)[source]

Orthopyroxene-Liquid barometer of Putirka, (2008) eq 29b. Global calibration of experiments. [Putirka, 2008]

Exact SEE not given, but ~2-3 kbar.

Thermobar.orthopyroxene_thermobarometry.P_Put2008_eq29c(T, *, Al_Opx_cat_6ox, Ca_Opx_cat_6ox, Cr_Opx_cat_6ox)[source]

Orthopyroxene-only barometer of Putirka, (2008) eq 29c. Doesn’t require liquid composition. Global calibration of experiments, has systematic error for hydrous data. [Putirka, 2008]

SEE=+-3 kbar (anhydrous)

SEE=+-4.1 kbar (hydrous)

Thermobar.orthopyroxene_thermobarometry.P_Put_Felsic_Opx(T=None, *, Al2O3_Opx, Al2O3_Liq)[source]

New Opx_Liq barometer released in Putirka spreadsheets. Addresses problem in low pressure Opxs that Al(VI)=0. Uses the Al2O3 content of the Opx instead. Felsic regression. [Putirka, 2008]

SEE=+-1.2 kbar
Thermobar.orthopyroxene_thermobarometry.P_Put_Global_Opx(T=None, *, MgO_Liq, Al2O3_Opx, Al2O3_Liq, Na2O_Liq, K2O_Liq)[source]

New Opx-Liquid barometer released in Putirka spreadsheets. Addresses problem in low pressure Opxs that Al(VI)=0. Uses the Al2O3 content of the Opx instead. [Putirka, 2008]

SEE=+-3.2 kbar

Thermobar.orthopyroxene_thermobarometry.T_Beatt1993_opx(P, *, Ca_Liq_cat_frac, Fet_Liq_cat_frac, Mg_Liq_cat_frac, Mn_Liq_cat_frac, Al_Liq_cat_frac, Ti_Liq_cat_frac)[source]

Opx-Liquid thermometer of Beattie (1993). Only uses liquid composition. Putirka (2008) warn that overpredicts for hydrous compositions at <1200°C, and anhydrous compositions at <1100°C [Beattie, 1993]

Thermobar.orthopyroxene_thermobarometry.T_Put2008_eq28a(P, *, H2O_Liq, ln_Fm2Si2O6_liq, Mg_Liq_cat_frac, K_Liq_cat_frac, Fet_Liq_cat_frac, Fet_Opx_cat_6ox)[source]

Putirka (2008) Equation 28a. Global calibration: T=750-1600°C, SiO2=33-77 wt%, P=atm-11 GPa. H2O=0-14.2 wt%. [Putirka, 2008]

SEE= ±26°C for calibration data

SEE=± 41°C for testing data

Thermobar.orthopyroxene_thermobarometry.T_Put2008_eq28b_opx_sat(P, *, H2O_Liq, Mg_Liq_cat_frac, Ca_Liq_cat_frac, K_Liq_cat_frac, Mn_Liq_cat_frac, Fet_Liq_cat_frac, Fet_Opx_cat_6ox, Al_Liq_cat_frac, Ti_Liq_cat_frac, Mg_Number_Liq_NoFe3)[source]

Equation 28b of Putirka et al. (2008). Orthopyroxene-liquid thermometer- temperature at which a liquid is saturated in orhopyroxene (for a given P). [Putirka, 2008]

Thermobar.orthopyroxene_thermobarometry.calculate_opx_liq_press(*, equationP, opx_comps=None, liq_comps=None, meltmatch=None, T=None, eq_tests=False, H2O_Liq=None, Fe3Fet_Liq=None)[source]

Orthopyroxene-Liquid barometer, user specifies equation, and calculates pressure in kbar. Also has option to calculate equilibrium tests.

Parameters:
  • opx_comps (pandas.DataFrame) – Orthopyroxene compositions with column headings SiO2_Opx, MgO_Opx etc.

  • liq_comps (pandas.DataFrame) – Liquid compositions with column headings SiO2_Liq, MgO_Liq etc.

  • Or

  • meltmatch (pandas.DataFrame) – Combined Opx-Liquid compositions. Used for calculate_opx_liq_press_temp_matching.

  • EquationP (str) –

    choose from:

    P_Put2008_eq28a
    P_Put2008_eq28b
    P_Put2008_eq28c
    P_Put_Global_Opx
    P_Put_Felsic_Opx

T: float, int, pandas.Series, str (“Solve”)

Temperature in Kelvin Only needed for T-sensitive barometers. If enter T=”Solve”, returns a partial function Else, enter an integer, float, or panda series

eq_tests: bool

If False, just returns pressure (default) as a panda series If True, returns pressure, Values of Eq tests, as well as user-entered opx and liq comps and components.

Returns:

  • If eq_tests=False – pandas.Series: Pressure in kbar (if eq_tests=False)

  • If eq_tests=True – pandas.DataFrame: Pressure in kbar + Kd-Fe-Mg + opx+liq comp

Thermobar.orthopyroxene_thermobarometry.calculate_opx_liq_press_temp(*, liq_comps=None, opx_comps=None, meltmatch=None, equationP=None, equationT=None, iterations=30, T_K_Guess=1300, eq_tests=False, H2O_Liq=None, Fe3Fet_Liq=None)[source]

Solves simultaneous equations for temperature and pressure using orthopyroxene-liquid thermometers and barometers.

Parameters:
  • opx_comps (pandas.DataFrame) – Orthopyroxene compositions with column headings SiO2_Opx, MgO_Opx etc.

  • liq_comps (pandas.DataFrame) – Liquid compositions with column headings SiO2_Liq, MgO_Liq etc.

  • EquationP (str) – Barometer | P_Put2008_eq28a | P_Put2008_eq28b | P_Put2008_eq28c | P_Put_Global | P_Put_Felsic

  • EquationT (str) – Thermometer | T_Opx_Beatt1993 | T_Put2008_eq28a | T_Put2008_eq28b_opx_sat

  • Optional

iterations: int (default=30)

Number of iterations used to converge to solution.

T_K_guess: int or float (default=1300K)

Initial guess of temperature. Default is 1300K

eq_tests: bool

If False, just returns pressure in Kbar, temp in Kelvin as a dataframe If True, returns pressure, temperature, Values of Eq tests, as well as user-entered opx and liq comps and components.

Returns:

  • If eq_tests=False – pandas.DataFrame: Temperature in Kelvin, pressure in Kbar

  • If eq_tests=True – pandas.DataFrame: Temperature in Kelvin, pressure in Kbar Eq Tests + opx+liq comps + components

Thermobar.orthopyroxene_thermobarometry.calculate_opx_liq_press_temp_matching(*, liq_comps, opx_comps, equationT=None, equationP=None, P=None, T=None, eq_crit=False, Fe3Fet_Liq=None, H2O_Liq=None, Kd_Match=None, Kd_Err=None, Opx_Quality=False, return_all_pairs=False, iterations=30)[source]

Evaluates all possible Opx-Liq pairs from N Liquids, M opx compositions returns P (kbar) and T (K) for those in equilibrium.

liq_comps: pandas.DataFrame

Panda DataFrame of liquid compositions with column headings SiO2_Liq etc.

opx_comps: pandas.DataFrame

Panda DataFrame of opx compositions with column headings SiO2_Opx etc.

EquationP: str

Barometer | P_Put2008_eq28a | P_Put2008_eq28b | P_Put2008_eq28c | P_Put_Global | P_Put_Felsic

EquationT: str

Thermometer | T_Opx_Beatt1993 | T_Put2008_eq28a | T_Put2008_eq28b_opx_sat

Or:

P: int, float

Can also specify a pressure to run calculations at, rather than iterating using an equation for pressure. E.g., specify an equationT, but no equationP

T: int, float

Can also specify a temperature to run calculations at, rather than iterating using an equation for temperature. E.g., specify an equationP, but no equationT

Optional:

Kd_Match: int of float, optional

Allows users to ovewrite the default where Kd is calculated from the expression in Putirka (2008) based on the Si content of the liquid.

Kd_Err: int or float, optional

Allows users to override the defualt 1 sigma on Kd matches of +-0.06

Opx Quality: bool, optional

If True, filters out orthopyroxenes with cation sums outside of 4.02-3.99 (after Neave et al. 2017)

Fe3Fet_Liq: int or float, optional

Fe3FeT ratio used to assess Kd Fe-Mg equilibrium between opx and melt. If users don’t specify, uses Fe3Fet_Liq from liq_comps. If specified, overwrites the Fe3Fet_Liq column in the liquid input.

Returns: dict

Av_PTs: Average P and T for each opx. E.g., if opx1 matches Liq1, Liq4, Liq6, Liq10, averages outputs for all 4 of those liquids. Returns mean and 1 sigma of these averaged parameters for each Opx.

All_PTs: Returns output parameters for all matches (e.g, opx1-Liq1, opx1-Liq4) without any averaging.

Thermobar.orthopyroxene_thermobarometry.calculate_opx_liq_temp(*, equationT, opx_comps=None, liq_comps=None, meltmatch=None, P=None, eq_tests=False, Fe3Fet_Liq=None, H2O_Liq=None)[source]

Orthopyroxene-Liquid thermometer, user specifies equation, and calculates temperature in Kelvin. Also has option to calculate equilibrium tests.

Parameters:
  • opx_comps (pandas.DataFrame) – Orthopyroxene compositions with column headings SiO2_Opx, MgO_Opx etc.

  • liq_comps (pandas.DataFrame) – Liquid compositions with column headings SiO2_Liq, MgO_Liq etc.

  • meltmatch (pandas.DataFrame) – Combined Opx-Liquid compositions. Used for “melt match” functionality.

  • EquationT (str) – Choice of equation: | T_Opx_Beatt1993 | T_Put2008_eq28a | T_Put2008_eq28b_opx_sat

P: float, int, pandas.Series, str (“Solve”)

Pressure in kbar Only needed for P-sensitive thermometers. If enter P=”Solve”, returns a partial function Else, enter an integer, float, or panda series

eq_tests: bool

If False (default), returns temperature as a panda series If True, returns prsesure, Kd Fe-Mg for liq-opx, as well as user-entered opx and liq comps as a panda dataframe.

Returns:

  • If eq_tests=False – pandas.Series: Pressure in kbar (if eq_tests=False)

  • If eq_tests=True – pandas.DataFrame: Pressure in kbar + Kd-Fe-Mg + opx+liq comps

Thermobar.orthopyroxene_thermobarometry.calculate_opx_only_press(*, opx_comps, equationP, T=None)[source]

Orthopyroxene only barometry. Enter a panda dataframe with orthopyroxene compositions, returns a pressure in kbar.

Parameters
opx_comps: pandas.DataFrame

orthopyroxene compositions with column headings SiO2_Opx, MgO_Opx etc.

equationP: str
P_Put2008_eq29c
T: float, int, pandas.Series, str (“Solve”)

Temperature in Kelvin Only needed for T-sensitive barometers. If enter T=”Solve”, returns a partial function Else, enter an integer, float, or panda series

pandas series

Pressure in kbar