Cpx and Cpx-Liquid functions

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_Liq(T=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid barometer of Jorgenson et al. (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-2.7 kbar

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_Liq_Norm(T=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid barometer of Jorgenson et al. (2022) based on Machine Learning. Normalizes, unlike published model. [Jorgenson et al., 2021]

SEE==+-2.7 kbar

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_Liq_onnx(T=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid barometer of Jorgenson et al. (2022) based on Machine Learning. Uses onnx, so doesnt return voting [Jorgenson et al., 2021]

SEE==+-2.7 kbar

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_only(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer of Jorgenson et al. (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-3.2 kbar

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_only_Norm(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer of Jorgenson et al. (2022) based on Machine Learning. Normalizes inputs unlike published model [Jorgenson et al., 2021]

SEE==+-3.2 kbar

Thermobar.clinopyroxene_thermobarometry.P_Jorgenson2022_Cpx_only_onnx(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer of Jorgenson et al. (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-3.2 kbar

Thermobar.clinopyroxene_thermobarometry.P_Mas2013_Palk2012(T=None, *, lnK_Jd_liq, H2O_Liq, Na_Liq_cat_frac, K_Liq_cat_frac, Kd_Fe_Mg_Fet)[source]

Clinopyroxene-liquid barometer of Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-1.15 kbar

Thermobar.clinopyroxene_thermobarometry.P_Mas2013_eqPalk1(T, *, lnK_Jd_liq, Na_Liq_cat_frac, Al_Liq_cat_frac)[source]

Recalibration of the clinopyroxene-liquid barometer of Putirka (1996) EqP1 by Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-1.71 kbar

Thermobar.clinopyroxene_thermobarometry.P_Mas2013_eqPalk2(T, *, lnK_Jd_liq, Na_Liq_cat_frac, Al_Liq_cat_frac)[source]

Recalibration of the clinopyroxene-liquid barometer of Putirka (1996) EqP2 by Masotta et al. (2013) for alkaline melts. Cite [Masotta et al., 2013]

SEE=+-1.70 kbar

Thermobar.clinopyroxene_thermobarometry.P_Mas2013_eqalk32c(T, *, Fet_Liq_cat_frac, CaTs, H2O_Liq, Ca_Liq_cat_frac, Si_Liq_cat_frac, Al_Cpx_cat_6ox, Al_Liq_cat_frac)[source]

Recalibration of the clinopyroxene-liquid barometer of Putirka (2008) Eq32c by Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-1.67 kbar

Thermobar.clinopyroxene_thermobarometry.P_Mollo2018_AMAM(T, *, lnK_Jd_liq, Ca_Liq_cat_frac, Si_Liq_cat_frac, Mg_Number_Liq_NoFe3)[source]

Clinopyroxene-liquid barometer of Mollo et al. (2018) AMAM (Eq 11 in paper).

SEE (2018) paper = +-1.71 kbar on calibration, 1.16 kbar on test, 1.5 kbar overlal

Thermobar.clinopyroxene_thermobarometry.P_Neave2017(T, *, lnK_Jd_liq, DiHd_2003, Al_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac)[source]

Clinopyroxene-liquid barometer of Neave and Putirka (2017) [Neave and Putirka, 2017]

SEE=+-1.4 kbar

Thermobar.clinopyroxene_thermobarometry.P_Nimis1999_BA(T=None)[source]

This is a placeholder, function is being called from other .py file’)

Thermobar.clinopyroxene_thermobarometry.P_Petrelli2020_Cpx_Liq(T=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid barometer of Petrelli et al. (2021) based on Machine Learning. []

SEE==+-2.6 kbar

Thermobar.clinopyroxene_thermobarometry.P_Petrelli2020_Cpx_Liq_onnx(T=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid barometer of Petrelli et al. (2021) based on Machine Learning. Uses onnx, so wont return voting. []

SEE==+-2.6 kbar

Thermobar.clinopyroxene_thermobarometry.P_Petrelli2020_Cpx_only(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer of Petrelli et al. (2021) based on Machine Learning. []

SEE==+-3.1 kbar

Thermobar.clinopyroxene_thermobarometry.P_Petrelli2020_Cpx_only_onnx(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer of Petrelli et al. (2021) based on Machine Learning. Uses onnx for consistency, so dont get voting []

SEE==+-3.1 kbar

Thermobar.clinopyroxene_thermobarometry.P_Petrelli2020_Cpx_only_withH2O(T=None, *, cpx_comps)[source]

Clinopyroxene-only barometer following the Machine learning approach of Petrelli et al. (2021), but including the H2O content of the liquid while training the model.

[] and cite Thermobar.

Thermobar.clinopyroxene_thermobarometry.P_Put1996_eqP1(T, *, lnK_Jd_liq, Na_Liq_cat_frac, Al_Liq_cat_frac)[source]

Clinopyroxene-liquid barometer of Putirka (1996) EqP1 [Putirka et al., 1996]

SEE=+-1.36 kbar (1996 paper, calibration dataset)

Revised SEE by Putirka (2008)

SEE=+-4.6 kbar (anhydrous)

SEE=+-5.4 kbar (hydrous)

Thermobar.clinopyroxene_thermobarometry.P_Put1996_eqP2(T, *, lnK_Jd_liq, Na_Liq_cat_frac, Al_Liq_cat_frac)[source]

Clinopyroxene-liquid barometer of Putirka (1996) EqP2 [Putirka et al., 1996]

SEE=+-1.51 kbar (1996 paper, calibration dataset)

Thermobar.clinopyroxene_thermobarometry.P_Put2003(T, *, lnK_Jd_liq, Ca_Liq_cat_frac, Si_Liq_cat_frac, Mg_Number_Liq_NoFe3)[source]

Clinopyroxene-liquid barometer of Putirka (2003) Eq1. Cite [Putirka et al., 2003]

SEE (2003) paper = +-1.7 kbar

Stated errors Putirka (2008) SEE=+-4.8 kbar (anhydrous)

SEE=+-5.0 kbar (hydrous)

Thermobar.clinopyroxene_thermobarometry.P_Put2008_eq30(T, *, lnK_Jd_liq, Fet_Liq_cat_frac, Mg_Liq_cat_frac, DiHd_2003, Mg_Number_Liq_NoFe3, Na_Liq_cat_frac, K_Liq_cat_frac, H2O_Liq)[source]

Clinopyroxene-liquid barometer of Putirka (2008) Eq30. Cite [Putirka, 2008]

SEE=+-3.6 kbar (all data) SEE=+-1.6 kbar (calibration data)

Thermobar.clinopyroxene_thermobarometry.P_Put2008_eq31(T, *, lnK_Jd_liq, Ca_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac, Si_Liq_cat_frac, Mg_Liq_cat_frac, Fet_Liq_cat_frac, DiHd_2003, EnFs, Al_Cpx_cat_6ox, H2O_Liq)[source]

Clinopyroxene-liquid barometer of Putirka (2008) Eq31 [Putirka, 2008]

SEE=+-2.9 kbar (all data)

Thermobar.clinopyroxene_thermobarometry.P_Put2008_eq32a(T, *, Mg_Cpx_cat_6ox, Na_Cpx_cat_6ox, Al_VI_cat_6ox, DiHd_2003, EnFs)[source]

Clinopyroxene-only barometer of Putirka (2008) Eq32a [Putirka, 2008]

SEE=+-3.1 kbar (anhydrous)

Thermobar.clinopyroxene_thermobarometry.P_Put2008_eq32b(T, *, H2O_Liq, Ca_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Na_Cpx_cat_6ox, Al_Cpx_cat_6ox, K_Cpx_cat_6ox, Al_IV_cat_6ox, Ti_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Al_VI_cat_6ox, Fet_Cpx_cat_6ox, DiHd_1996, Mg_Cpx_cat_6ox, Jd)[source]

Clinopyroxene-only barometer of Putirka (2008) Eq32b. Unlike 32a, requires H2O_Liq to be specified. [Putirka, 2008]

SEE=+-2.6 kbar (anhydrous)

Thermobar.clinopyroxene_thermobarometry.P_Put2008_eq32c(T, *, Fet_Liq_cat_frac, CaTs, H2O_Liq, Ca_Liq_cat_frac, Si_Liq_cat_frac, Al_Cpx_cat_6ox, Al_Liq_cat_frac)[source]

Clinopyroxene-liquid barometer of Putirka (2008) Eq32c based on partitioning of Al between cpx and liquid [Putirka, 2008]

SEE=+-5 kbar (all data) SEE=+-1.5 kbar (calibration data)

Thermobar.clinopyroxene_thermobarometry.P_Wang2021_eq1(T=None, *, Al_VI_cat_6ox, Si_Cpx_cat_6ox, Ti_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Mg_Cpx_cat_6ox, Na_Cpx_cat_6ox, K_Cpx_cat_6ox, Ca_Cpx_cat_6ox)[source]

Clinopyroxene-only barometer of Wang et al. (2021) equation 1 [Wang et al., 2021]

SEE=1.66 kbar

Thermobar.clinopyroxene_thermobarometry.T_Brug2019(P=None, *, CaTs, DiHd_2003, Si_Liq_cat_frac, Ti_Liq_cat_frac, Fet_Liq_cat_frac, Mg_Liq_cat_frac, Ca_Liq_cat_frac, K_Liq_cat_frac)[source]

Clinopyroxene-liquid thermometer of Brugmann and Till (2019) for evolved systems, (Cpx Mg#>64, Al2O3 Cpx<7 wt%, SiO2_Liq>70 wt%) [Brugman and Till, 2019]

SEE==+-20°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_Liq(P=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid thermometer of Jorgenson et al. (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-44.9°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_Liq_Norm(P=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid thermometer of Jorgenson et al. (2022) based on Machine Learning. Normalizes, unlike Jorgenson model. [Jorgenson et al., 2021]

SEE==+-44.9°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_Liq_onnx(P=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid thermometer of Jorgenson et al. (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-44.9°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_only(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer of Jorgenson et al (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-51°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_only_Norm(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer of Jorgenson et al (2022) based on Machine Learning. Normalized, unlike published model [Jorgenson et al., 2021]

SEE==+-51°C

Thermobar.clinopyroxene_thermobarometry.T_Jorgenson2022_Cpx_only_onnx(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer of Jorgenson et al (2022) based on Machine Learning. [Jorgenson et al., 2021]

SEE==+-51°C

Thermobar.clinopyroxene_thermobarometry.T_Mas2013_Talk2012(P=None, *, H2O_Liq, Kd_Fe_Mg_Fet, lnK_Jd_DiHd_liq_2003, Mg_Number_Liq_NoFe3, DiHd_2003, Na_Liq_cat_frac, K_Liq_cat_frac, Ti_Liq_cat_frac, lnK_Jd_liq, Ca_Liq_cat_frac, Si_Liq_cat_frac)[source]

Clinopyroxene-liquid thermometer of Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-18.2C

Thermobar.clinopyroxene_thermobarometry.T_Mas2013_eqTalk1(P=None, *, lnK_Jd_DiHd_liq_1996, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac)[source]

Recalibration of the clinopyroxene-liquid thermometer of Putirka (1996) EqT1 by Masotta et al. (2013) for alkaline melts. [Masotta et al., 2013]

SEE=+-31.6°C

Thermobar.clinopyroxene_thermobarometry.T_Mas2013_eqTalk2(P, *, lnK_Jd_DiHd_liq_1996, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac)[source]

Recalibration of the clinopyroxene-liquid thermometer of Putirka (1996), EqT2 by Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-31.2°C

Thermobar.clinopyroxene_thermobarometry.T_Mas2013_eqalk33(P, *, H2O_Liq, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac, Si_Liq_cat_frac, Ti_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac, EnFs, lnK_Jd_DiHd_liq_2003)[source]

Recalibration of the clinopyroxene-liquid thermometer of Putirka (2008) Eq 33 by Masotta et al. (2013) for alkaline melts [Masotta et al., 2013]

SEE=+-24°C

Thermobar.clinopyroxene_thermobarometry.T_Mollo2018_eq33MAM(P, *, H2O_Liq, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac, Si_Liq_cat_frac, Ti_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac, EnFs, lnK_Jd_DiHd_liq_2003, Ti_Cpx_cat_6ox)[source]

Clinopyroxene-liquid thermometer of Mollo et al (2018) Eq33MAM (Eq17 in paper) adapted from Putirka (2008) Eq 33

SEE=+-20°C (all data)

Thermobar.clinopyroxene_thermobarometry.T_Petrelli2020_Cpx_Liq(P=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid thermometer of Petrelli et al. (2021) based on Machine Learning. []

SEE==+-40°C

Thermobar.clinopyroxene_thermobarometry.T_Petrelli2020_Cpx_Liq_onnx(P=None, *, cpx_comps=None, liq_comps=None, meltmatch=None)[source]

Clinopyroxene-liquid thermometer of Petrelli et al. (2021) based on Machine Learning. Use onnx, so will always return the same answer, but can’t do voting, unlike T_Petrelli2020_Cpx_Liq. []

SEE==+-40°C

Thermobar.clinopyroxene_thermobarometry.T_Petrelli2020_Cpx_only(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer using the method and training dataset of Petrelli et al. (2020) (although they didnt provide a Cpx-only thermometer). []

SEE= N/A

Thermobar.clinopyroxene_thermobarometry.T_Petrelli2020_Cpx_only_onnx(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer of Petrelli et al. (2021) based on Machine Learning. Using onnx, so doesnt do voting []

SEE==+-51°C

Thermobar.clinopyroxene_thermobarometry.T_Petrelli2020_Cpx_only_withH2O(P=None, *, cpx_comps)[source]

Clinopyroxene-only thermometer of Petrelli et al. (2021) based on Machine Learning, but adding water. [] and this study.

SEE==+-51°C

Thermobar.clinopyroxene_thermobarometry.T_Put1996_eqT1(P=None, *, lnK_Jd_DiHd_liq_1996, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac)[source]

Clinopyroxene-liquid thermometer of Putirka (1996) EqT1 (pressure-independent) [Putirka et al., 1996]

SEE=+-26.8 K (1996 paper, calibration dataset)

Thermobar.clinopyroxene_thermobarometry.T_Put1996_eqT2(P, *, lnK_Jd_DiHd_liq_1996, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac)[source]

Clinopyroxene-liquid thermometer of Putirka (1996) EqT2 (pressure-dependent) [Putirka et al., 1996]

SEE=+-23.8 K (1996 paper, calibration dataset)

Thermobar.clinopyroxene_thermobarometry.T_Put1999(P, *, Mg_Liq_cat_frac, Fet_Liq_cat_frac, Ca_Liq_cat_frac, Si_Liq_cat_frac, Al_Liq_cat_frac)[source]

Equation in Keith’s Cpx-Liquid spreadsheet labelled “Putirka 1999”. [Putirka, 1999]

Thermobar.clinopyroxene_thermobarometry.T_Put2003(P, *, lnK_Jd_DiHd_liq_2003, Mg_Number_Liq_NoFe3, Na_Liq_cat_frac, Si_Liq_cat_frac, Jd)[source]

Clinopyroxene-liquid thermometer of Putirka (2003) [Putirka et al., 2003]

SEE=+-33 K (1996 paper, calibration dataset)

Thermobar.clinopyroxene_thermobarometry.T_Put2008_eq32d(P, *, Ti_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Al_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Na_Cpx_cat_6ox, K_Cpx_cat_6ox, a_cpx_En)[source]

Clinopyroxene-only thermometer of Putirka (2008) Eq32d. Overestimates temperature for hydrous data [Putirka, 2008]

SEE=±58°C (anhydrous) SEE=±87°C (hydrous)

Thermobar.clinopyroxene_thermobarometry.T_Put2008_eq32dH_Wang2021adap(P, *, Ti_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Al_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Na_Cpx_cat_6ox, K_Cpx_cat_6ox, a_cpx_En, H2O_Liq)[source]

Adaptation of the clinopyroxene-only thermometer of Putirka (2008) Eq32d by Wang et al. (2021) to account for the effect of H2O [Wang et al., 2021] and [Putirka, 2008]

Thermobar.clinopyroxene_thermobarometry.T_Put2008_eq32d_subsol(P, *, Ti_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Al_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Na_Cpx_cat_6ox, K_Cpx_cat_6ox, a_cpx_En)[source]

Adapted version of clinopyroxene-only thermoter of Putirka (2008) Eq32d, provides better fit to subsolidus T estimates [Putirka, 2008]

Thermobar.clinopyroxene_thermobarometry.T_Put2008_eq33(P, *, H2O_Liq, Mg_Number_Liq_NoFe3, Ca_Liq_cat_frac, Si_Liq_cat_frac, Ti_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac, EnFs, lnK_Jd_DiHd_liq_2003)[source]

Clinopyroxene-liquid thermometer of Putirka (2008) Eq 33. [Putirka, 2008]

SEE=+-45°C (all data)

Thermobar.clinopyroxene_thermobarometry.T_Put2008_eq34_cpx_sat(P, *, H2O_Liq, Ca_Liq_cat_frac, Si_Liq_cat_frac, Mg_Liq_cat_frac)[source]

Liquid-only thermometer- temperature at which a liquid is saturated in clinopyroxene (for a given P). Equation 34 of Putirka et al. (2008)

Thermobar.clinopyroxene_thermobarometry.T_Wang2021_eq2(P=None, *, Al_VI_cat_6ox, Si_Cpx_cat_6ox, Ti_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Mg_Cpx_cat_6ox, Na_Cpx_cat_6ox, K_Cpx_cat_6ox, FeII_Wang21, H2O_Liq, Al_Cpx_cat_6ox, Ca_Cpx_cat_6ox)[source]

Clinopyroxene-only thermometer of Wang et al. (2021) Eq 2 [Wang et al., 2021]

SEE=36.6 C

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_liq_press(*, equationP, cpx_comps=None, liq_comps=None, meltmatch=None, T=None, eq_tests=False, Fe3Fet_Liq=None, H2O_Liq=None, sigma=1, Kd_Err=0.03)[source]

Clinopyroxene-Liquid barometer, calculates pressure in kbar (and equilibrium tests as an option)

Parameters:
  • cpx_comps (pandas.DataFrame) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

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

  • EquationP (str) –

    choose from:

    P_Put1996_eqP1 (T-dep, H2O-indep)
    P_Mas2013_eqPalk1 (T-dep, H2O-indep, alk adaption of P1)
    P_Put1996_eqP2 (T-dep, H2O-indep)
    P_Mas2013_eqPalk2 (T-dep, H2O-indep, alk adaption of P2)
    P_Put2003 ((T-dep, H2O-indep)
    P_Neave2017 (T-dep, H2O-indep)
    P_Put2008_eq30 (T-dep, H2O-dep)
    P_Put2008_eq31 (T-dep, H2O-dep)
    P_Put2008_eq32c (T-dep, H2O-dep)
    P_Mas2013_eqalk32c (T-dep, H2O-dep, alk adaption of 32c)
    P_Petrelli2020_Cpx_Liq (Returns voting)
    P_Jorgenson2022_Cpx_Liq (Returns voting)
    P_Petrelli2020_Cpx_Liq_onnx (Uses onnx, so consistent results, no voting)
    P_Wang2021_eq1
    P_Mollo2018_AMAM

T: float, int, pandas.Series, str

Temperature in Kelvin to perform calculations at. 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 cpx and liq comps and components

Returns:

  • Pressure in kbar (pandas.Series) – If eq_tests is False

  • Pressure in kbar + eq Tests + input compositions (pandas.DataFrame) – If eq_tests is True

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_liq_press_all_eqs(cpx_comps, liq_comps, H2O_Liq=None)[source]

This function calculates Cpx-Liq and Cpx-only P and T using a wide range of popular equations in the literature. Happy to add more to this on request!

Parameters:

cpx_comps (pandas.DataFrame (opt, either specify cpx_comps AND liq_comps or meltmatch)) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

liq_comps: pandas.DataFrame

Liquid compositions with column headings SiO2_Liq, MgO_Liq etc.

H2O_Liq: float, int, pandas.Series, optional

If users don’t specify, uses H2O_Liq from liq_comps, if specified overwrites this.

Return type:

Pandas dataframe with temperature in kelvin, pressure in kbar.

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_liq_press_temp(*, liq_comps=None, cpx_comps=None, meltmatch=None, equationP=None, equationT=None, T=None, P=None, iterations=None, Fe3Fet_Liq=None, H2O_Liq=None, T_K_guess=1300, eq_tests=False)[source]

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

Parameters:

cpx_comps (pandas.DataFrame (opt, either specify cpx_comps AND liq_comps or meltmatch)) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

liq_comps: pandas.DataFrame

Liquid compositions with column headings SiO2_Liq, MgO_Liq etc.

Or

meltmatch: pandas.DataFrame

Combined dataframe of cpx-Liquid compositions Used for calculate_cpx_liq_press_temp_matching function.

EquationP: str

Barometer Cpx-Liquid | P_Put1996_eqP1 (T-dep, H2O-indep) | P_Mas2013_eqPalk1 (T-dep, H2O-indep, alk adaption of P1) | P_Put1996_eqP2 (T-dep, H2O-indep) | P_Mas2013_eqPalk2 (T-dep, H2O-indep, alk adaption of P2) | P_Put2003 ((T-dep, H2O-indep) | P_Neave2017 (T-dep, H2O-indep) | P_Put2008_eq30 (T-dep, H2O-dep) | P_Put2008_eq31 (T-dep, H2O-dep) | P_Put2008_eq32c (T-dep, H2O-dep) | P_Mas2013_eqalk32c (T-dep, H2O-dep, alk adaption of 32c) | P_Mollo2018_AMAM

EquationT: str

Thermometer Cpx-Liquid | T_Put1996_eqT1 (P-indep, H2O-indep) | T_Mas2013_eqTalk1 (P-indep, H2O-indep, alk adaption of T1) | T_Brug2019 (P-indep, H2O-indep) | T_Put1996_eqT2 (P-dep, H2O-indep) | T_Mas2013_eqTalk2 (P-dep, H2O-indep, alk adaption of T2) | T_Put1999 (P-dep, H2O-indep) | T_Put2003 (P-dep, H2O-indep) | T_Put1999 (P-dep, H2O-indep) | T_Put2008_eq33 (P-dep, H2O-dep) | T_Mas2013_eqalk33 (P-dep, H2O-dep, alk adaption of eq33) | T_Mas2013_Palk2012 (P-indep, H2O_dep) | T_Mollo2018_eq33MAM

Optional:

iterations: int (optional). Default is 20.

Number of iterations used to converge to solution

T_K_guess: int or float. Default is 1300K

Initial guess of temperature.

Fe3Fet_Liq: float, int, pandas.Series,

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

H2O_Liq: float, int, pandas.Series, optional

If users don’t specify, uses H2O_Liq from liq_comps, if specified overwrites this.

eq_tests: bool

If False, just returns pressure in kbar, tempeature in Kelvin as a dataframe If True, returns pressure and temperature, Eq tests (Kd, EnFs, DiHd, CaTs, CrCaTs), as well as user-entered cpx 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 + cpx+liq comps + components

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_liq_press_temp_matching(*, liq_comps, cpx_comps, equationT=None, equationP=None, P=None, T=None, PMax=30, PMin=-10, Fe3Fet_Liq=None, Kd_Match='Putirka', Kd_Err=0.03, DiHd_Err=0.06, EnFs_Err=0.05, CaTs_Err=0.03, Cpx_Quality=False, H2O_Liq=None, return_all_pairs=False, iterations=30)[source]

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

Parameters:
  • liq_comps (pandas.DataFrame) – Panda DataFrame of liquid compositions with column headings SiO2_Liq etc.

  • cpx_comps (pandas.DataFrame) – Panda DataFrame of cpx compositions with column headings SiO2_Cpx etc.

  • equationT (str) –

    Specify equation for cpx thermometry (options):

    T_Put1996_eqT1 (P-indep, H2O-indep)
    T_Mas2013_eqTalk1 (P-indep, H2O-indep, alk adaption of T1)
    T_Brug2019 (P-indep, H2O-indep)
    T_Put1996_eqT2 (P-dep, H2O-indep)
    T_Mas2013_eqTalk2 (P-dep, H2O-indep, alk adaption of T2)
    T_Put1999 (P-dep, H2O-indep)
    T_Put2003 (P-dep, H2O-indep)
    T_Put1999 (P-dep, H2O-indep)
    T_Put2008_eq33 (P-dep, H2O-dep)
    T_Mas2013_eqalk33 (P-dep, H2O-dep, alk adaption of eq33)
    T_Mas2013_Palk2012 (P-indep, H2O_dep)

equationP: str

specify equation for cpx barometry (options):

P_Put1996_eqP1 (T-dep, H2O-indep)
P_Mas2013_eqPalk1 (T-dep, H2O-indep, alk adaption of P1)
P_Put1996_eqP2 (T-dep, H2O-indep)
P_Mas2013_eqPalk2 (T-dep, H2O-indep, alk adaption of P2)
P_Put2003 ((T-dep, H2O-indep)
P_Neave2017 (T-dep, H2O-indep)
P_Put2008_eq30 (T-dep, H2O-dep)
P_Put2008_eq31 (T-dep, H2O-dep)
P_Put2008_eq32c (T-dep, H2O-dep)
P_Mas2013_eqalk32c (T-dep, H2O-dep, alk adaption of 32c)

Or

T: int, float

Can also run calculations at a fixed temperature

P: int, float

Can also run calculations at a fixed pressure

Optional:

Kd_Match: int, str, optional

allows users to override the default of calculating Kd Fe-Mg based on temperature using eq 35 of putirka Set at fixed value (e.g., Kd_Match=0.27) OR specify Kd_Match=Masotta to use the Kd model fo Masotta et al. (2013), which is also a function of Na and K, for trachytic and phonolitic magmas.

Kd_Err: int or float, Default=0.03

Allows users to specify the permitted error on Kd Fe-Mg (default=0.03 from Neave et al. 2019)

DiHd_Err: int or float, optional. Default=0.06

Allows users to specify the permitted error on DiHd (default=0.06 from Neave et al. 2019) Compares measured and calculated values from Mollo et al. (2013)

EnFs_Err: int or float, optional. Default=0.05

Allows users to specify the permitted error on EnFs (default=0.05 from Neave et al. 2019) Compares measured and calculated values from Mollo et al. (2013)

CaTs_Err: int or float, optional. Default=0.03

Allows users to specify the permitted error on CaTs (default=0.03 from Neave et al. 2019) Compares measured and calculated values from Putirka (1999).

Fe3Fet_Liq: float, int, pandas.Series, optional

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

H2O_Liq: float, int, pandas.Series, optional

If users don’t specify, uses H2O_Liq from liq_comps, if specified overwrites this.

Cpx Quality: bool, optional

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

PMax: int or float, optional

Default value of 30 kbar. Uses to apply a preliminary KdFe-Mg filter based on the T equation specified by the user.

PMin: int or float, optional

Default value of -10 kbar. Uses to apply a preliminary KdFe-Mg filter based on the T equation specified by the user.

Returns: dict

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

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

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_liq_temp(*, equationT, cpx_comps=None, liq_comps=None, meltmatch=None, P=None, eq_tests=False, H2O_Liq=None, Fe3Fet_Liq=None, sigma=1, Kd_Err=0.03)[source]

Clinopyroxene-Liquid thermometry, calculates temperature in Kelvin (and equilibrium tests as an option)

Parameters:
  • cpx_comps (pandas.DataFrame) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

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

  • Or

  • meltmatch (pandas.DataFrame) – Combined dataframe of cpx-Liquid compositions Used for calculate_cpx_liq_press_temp_matching function.

  • EquationT (str) – Choice of equation: Cpx-Liquid | T_Put1996_eqT1 (P-indep, H2O-indep) | T_Mas2013_eqTalk1 (P-indep, H2O-indep, alk adaption of T1) | T_Brug2019 (P-indep, H2O-indep) | T_Put1996_eqT2 (P-dep, H2O-indep) | T_Mas2013_eqTalk2 (P-dep, H2O-indep, alk adaption of T2) | T_Put1999 (P-dep, H2O-indep) | T_Put2003 (P-dep, H2O-indep) | T_Put1999 (P-dep, H2O-indep) | T_Put2008_eq33 (P-dep, H2O-dep) | T_Mas2013_eqalk33 (P-dep, H2O-dep, alk adaption of eq33) | T_Mas2013_Palk2012 (P-indep, H2O_dep) | T_Petrelli2020_Cpx_Liq (gives voting) | T_Jorgenson2022_Cpx_Liq (gives voting) | T_Petrelli2020_Cpx_Liq_onnx (gives consistent result every time) | T_Mollo2018_eq33MAM

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, just returns pressure (default) as a panda series If True, returns pressure, Values of Eq tests, Values of Eq tests (Kd, EnFs, DiHd, CaTs, CrCaTs), as well as user-entered cpx and liq comps and components.

Returns:

  • If eq_tests=False – pandas.Series: Temperature in Kelvin

  • If eq_tests=True – pandas.DataFrame: Temperature in Kelvin + Eq Tests + cpx+liq comps + components

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_only_press(*, cpx_comps, equationP, T=None, H2O_Liq=None, eq_tests=False, return_input=None)[source]

Clinopyroxene only barometry. Enter a panda dataframe with Cpx compositions, returns a pressure in kbar.

Parameters:
  • cpx_comps (pandas.DataFrame) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

  • equationP (str) –

    P_Nimis1999_BA (T-independent)
    P_Put2008_eq32a (T-dependent)
    P_Put2008_eq32b (T-dependent, H2O dependent)
    P_Petrelli2020_Cpx_only (T_independent, H2O-independent)
    P_Petrelli2020_Cpx_only_withH2O (T_independent, H2O-dependent)
    P_Wang2021_eq1 (T_independent, H2O-independent)
    P_Jorgenson2022_Cpx_only (T_independent, H2O-independent)
    P_Jorgenson2022_Cpx_only_Norm (T_independent, H2O-independent)* v similar, uses standard scalar

T: float, int, pandas.Series, float, None

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

H2O_Liq: int, float, pd.Series, None

H2O content in the liquid. used for some Cpx-only equations.

eq_tests: bool

If True, returns cpx_components as well.

Returns:

Pressure in kbar

Return type:

pandas series

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_only_press_all_eqs(cpx_comps, eq_tests=True, H2O_Liq=None)[source]

This function calculates Cpx-only pressures and temperatures using all supported equations. It returns these calcs as a dataframe

Parameters:
  • cpx_comps (pandas.DataFrame) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

  • H2O_Liq (int, float, pd.Series) – Used for equations which have a term for this. Uses 0 by default and returns a warning

  • eq_tests (bool) – If True, returns cpx_components as well.

Return type:

pd.DataFrame of calcs and Cpx comps

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_only_press_temp(*, cpx_comps=None, equationP=None, equationT=None, iterations=30, T_K_guess=1300, H2O_Liq=None, eq_tests=True, return_input=None)[source]

Solves simultaneous equations for temperature and pressure using clinopyroxene-lonly thermometers and barometers.

Parameters:
  • cpx_comps (pandas.DataFrame) – Clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

  • equationP (str) –

    P_Put2008_eq32a (T-dependent)
    P_Put2008_eq32b (T-dependent, H2O dependent)

  • equationT (str) –

    T_Put2008_eq32d (P-dependent)
    T_Put2008_eq32d_subsol (P-dependent)

  • H2O_Liq (float, int, pandas.Series, optional) – Needed if you select P_Put2008_eq32b, which is H2O-dependent.

  • Optional

iterations: int, default=30

Number of iterations used to converge to solution.

T_K_guess: int or float. Default is 1300 K

Initial guess of temperature.

eq_tests: bool

if True, also returns cpx_components

Returns:

pandas.DataFrame: Pressure in kbar, Temperature in K

Thermobar.clinopyroxene_thermobarometry.calculate_cpx_only_temp(*, cpx_comps=None, equationT=None, P=None, H2O_Liq=None, eq_tests=False, return_input=None)[source]

Clinopyroxene only thermometer. Enter a panda dataframe with Cpx compositions, returns a temperature in Kelvin.

Parameters:
  • cpx_comps (pandas.DataFrame) – clinopyroxene compositions with column headings SiO2_Cpx, MgO_Cpx etc.

  • equationT (str) –

    T_Put2008_eq32d (P-dependent)
    T_Put2008_eq32d_subsol (P-dependent)
    T_Put2008_eq32dH_Wang2021adap (P-dependent, H2O-dependent)
    T_Petrelli2020_Cpx_only (P-independent, H2O-independent)
    T_Petrelli2020_Cpx_only_withH2O (P-independent, H2O-dependent)
    T_Wang2021_eq2 (P-independent, H2O-dependent)
    T_Jorgenson2022_Cpx_only (P-independent, H2O-independent)
    T_Jorgenson2022_Cpx_only_Norm (P-independent, H2O-independent)*As above, uses python scalar

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 True, also returns cpx_components. No actual equilibrium tests.

Returns:

Temperature in Kelvin

Return type:

pandas series