Two Pyroxene functions

Thermobar.two_pyroxene.P_Put2008_eq38(T=None, *, Na_Opx_cat_6ox, Al_IV_Opx_cat_6ox, Al_VI_Opx_cat_6ox, Ti_Opx_cat_6ox, Ca_Opx_cat_6ox, Cr_Opx_cat_6ox, Mg_Opx_cat_6ox, Fet_Opx_cat_6ox, Mn_Opx_cat_6ox, Ca_Cpx_cat_6ox, Fm2Si2O6, En_Opx, Di_Opx)[source]

Two pyroxene barometer of Putirka (2008) Eq38. Calibrated on Mg#-rich systems (>0.75) [Putirka, 2008]

SEE=+-3.7 kbar
Thermobar.two_pyroxene.P_Put2008_eq39(T, *, Na_Opx_cat_6ox, Al_IV_Opx_cat_6ox, Al_VI_Opx_cat_6ox, Ti_Opx_cat_6ox, Cr_Opx_cat_6ox, Fet_Opx_cat_6ox, Mn_Opx_cat_6ox, Ca_Opx_cat_6ox, Mg_Opx_cat_6ox, Na_Cpx_cat_6ox, Al_IV_cat_6ox, Al_VI_cat_6ox, Ti_Cpx_cat_6ox, Ca_Cpx_cat_6ox, Mg_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Cr_Cpx_cat_6ox, Fm2Si2O6, En_Opx, EnFs)[source]

Two pyroxene barometer of Putirka (2008) Eq39. Similar to Eq38, but has a temperature term. [Putirka, 2008]

SEE=+-2.8 kbar (Cpx Mg#>0.75)
SEE=+-3.2 kbar (all data)
Thermobar.two_pyroxene.T_Brey1990(P, *, Fet_Cpx_cat_6ox, Ca_Cpx_cat_6ox, Mg_Cpx_cat_6ox, Na_Cpx_cat_6ox, Fet_Opx_cat_6ox, Mg_Opx_cat_6ox, Ca_Opx_cat_6ox, Na_Opx_cat_6ox)[source]

Two-pyroxene thermometer of Brey and Kohler (1990). [Brey and Köhler, 1990]

SEE=+-50C for Cpx Mg#>0.75 SEE=+-70C for all data

Thermobar.two_pyroxene.T_Put2008_eq36(P, *, EnFs, Fm2Si2O6, Ca_Cpx_cat_6ox, CrCaTs, Mn_Opx_cat_6ox, Na_Opx_cat_6ox, En_Opx, Di_Opx)[source]

Two-pyroxene thermometer of Putirka (2008) eq 36. Best for Cpx with Mg#>0.75, but calibrated using all. [Putirka, 2008]

SEE=+-45C for Cpx Mg#>0.75 SEE=+-56C for all data

Thermobar.two_pyroxene.T_Put2008_eq37(P, *, EnFs, Di_Cpx, Fm2Si2O6, Mn_Opx_cat_6ox, FmAl2SiO6, Mg_Cpx_cat_6ox, Fet_Cpx_cat_6ox)[source]

Two-pyroxene thermometer of Putirka (2008) eq 37. Calibrated on Cpx with Mg#>0.75 [Putirka, 2008]

SEE=+-38C for Cpx Mg#>0.75 SEE=+-60C for all data

Thermobar.two_pyroxene.T_Wells1977(P=None, *, Mg_Opx_cat_6ox, Ca_Opx_cat_6ox, Mn_Opx_cat_6ox, Fet_Opx_cat_6ox, Na_Opx_cat_6ox, Al_IV_Opx_cat_6ox, Al_VI_Opx_cat_6ox, Ti_Opx_cat_6ox, Cr_Opx_cat_6ox, Mg_Cpx_cat_6ox, Ca_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Na_Cpx_cat_6ox, Al_IV_cat_6ox, Al_VI_cat_6ox, Ti_Cpx_cat_6ox, Cr_Cpx_cat_6ox)[source]

Two-pyroxene thermometer of Wells 1977 [Wells, 1977]

Thermobar.two_pyroxene.T_Wood1973(P=None, *, Mg_Opx_cat_6ox, Ca_Opx_cat_6ox, Mn_Opx_cat_6ox, Fet_Opx_cat_6ox, Na_Opx_cat_6ox, Al_IV_Opx_cat_6ox, Al_VI_Opx_cat_6ox, Ti_Opx_cat_6ox, Cr_Opx_cat_6ox, Mg_Cpx_cat_6ox, Ca_Cpx_cat_6ox, Mn_Cpx_cat_6ox, Fet_Cpx_cat_6ox, Na_Cpx_cat_6ox, Al_IV_cat_6ox, Al_VI_cat_6ox, Ti_Cpx_cat_6ox, Cr_Cpx_cat_6ox)[source]

Two-pyroxene thermometer of Wood and Banno (1973) [Wood and Banno, 1973]

Thermobar.two_pyroxene.calculate_cpx_opx_press(*, cpx_comps=None, opx_comps=None, Two_Px_Match=None, equationP=None, eq_tests=False, T=None)[source]

calculates pressure in kbar for Opx-Cpx pairs

The function requires inputs of cpx_comps and opx_comps, or input of a combined dataframe of cpx-opx compositions (this is used for the calculate_cpx_opx_press_temp_matching function)

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

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

  • Two_Px_Match (pandas.DataFrame) – Combined Cpx-Opx compositions instead of separate dataframes. Used for calculate Cpx_Opx_press_temp_matching function.

  • equationP (str) –

    Choose from:

    P_Put2008_eq38 (T-independent)
    P_Put2008_eq39 (T-dependent)

  • T (float, int, pd.Series, str ("Solve")) – Temperature in Kelvin to perform calculations at. Only needed for T-sensitive barometers. If T=”Solve”, returns a partial function. Else, enter an integer, float, or panda series.

  • eq_tests (bool) – If False, just returns temperature in K (default) as a panda series. If True, returns pressure in kbar, Kd Fe-Mg for opx-cpx, and the user-entered cpx and opx comps as a panda dataframe.

Returns:

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

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

Thermobar.two_pyroxene.calculate_cpx_opx_press_temp(*, cpx_comps=None, opx_comps=None, Two_Px_Match=None, equationP=None, equationT=None, iterations=30, T_K_guess=1300, eq_tests=False)[source]

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

The function requires inputs of cpx_comps and opx_comps, or input of a combined dataframe of cpx-opx compositions (this is used for the calculate_cpx_opx_press_temp_matching function).

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

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

  • meltmatch (pandas.DataFrame) – Combined dataframe of Opx-Cpx compositions (headings SiO2_Cpx, SiO2_Opx etc.). Used for calculate cpx_opx_press_temp_matching function.

  • equationP (str) –

    Choose from:

    P_Put2008_eq38 (T-independent)
    P_Put2008_eq39 (T-dependent)

  • equationT (str) –

    Choose from:

    T_Put2008_Eq36 (P-dependent)
    T_Put2008_Eq37 (P-dependent)
    T_Brey1990 (P-dependent)
    T_Wood1973 (P-independent)
    T_Wells1977 (P-independent)

  • Optional

  • iterations (int, Default = 20) – Number of iterations used to converge to solution

  • T_K_guess (int or float. Default = 1300K) – Initial guess of temperature to start iterations at

  • 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 cpx comps and components.

Returns:

  • If eq_tests is False – pandas.DataFrame: Temperature in Kelvin, pressure in kbar

  • If eq_tests is True – pandas.DataFrame: Temperature in Kelvin, pressure in kbar, eq Tests + opx+cpx comps + components

Thermobar.two_pyroxene.calculate_cpx_opx_press_temp_matching(*, opx_comps, cpx_comps, equationT=None, equationP=None, Kd_Match=None, Kd_Err=None, Cpx_Quality=False, Opx_Quality=False, P=None, T=None, return_all_pairs=False, iterations=30)[source]

Evaluates all possible Cpx-Opx pairs for user supplied dataframes of opx and cpx comps (can be different lengths). Returns P (kbar) and T (K) for those in Kd Fe-Mg equilibrium.

Parameters:
  • opx_comps (pandas.DataFrame) – Panda DataFrame of opx compositions with column headings SiO2_Opx etc.

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

  • equationP (str) –

    Choose from:

    P_Put2008_eq38 (T-independent)
    P_Put2008_eq39 (T-dependent)

  • equationT (str) –

    Choose from:

    T_Put2008_Eq36 (P-dependent)
    T_Put2008_Eq37 (P-dependent)
    T_Brey1990 (P-dependent)
    T_Wood1973 (P-independent)
    T_Wells1977 (P-independent)

  • P (float, int, pandas.Series. Instead of specifying equationP or equationT) –

    P is pressure in kbar to perform calculations at if equationP not specified

    T is temperature in Kelvin to perform calculations at if equationT not specified

  • T (float, int, pandas.Series. Instead of specifying equationP or equationT) –

    P is pressure in kbar to perform calculations at if equationP not specified

    T is temperature in Kelvin to perform calculations at if equationT not specified

  • Kd_Match (str) –

    If None, returns all cpx-opx pairs.
    If “HighTemp”, returns all cpxs-opxs within Kd cpx-opx=1.09+-0.14 suggested by Putirka (2008)
    If “Subsolidus” returns all cpxs-opxs within Kd cpx-opx=0.7+-0.2 suggested by Putirka (2008)
    If int or float, also need to specify Kd_Err. Returns all matches within Kd_Match +- Kd_Err

  • matches (Or specify return_all_pairs=True to get all) –

  • Kd_Err (float or int (defaults given in Kd_Match)) – Optional input to change defaults. Returns all cpx-opx pairs within Kd_Match+-Kd_Err

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

  • Opx_Quality (bool) – Default False, no filter If True, filters out orthopyroxenes with cation sums outside of 4.02-3.99

Returns:

  • Dict with keys (‘Av_PTs_per_Cpx’, ‘All_PTs’.)

  • ’Av_PTs_perCpx’ (Average P and T for each cpx, e.g., if cpx1 matches Opx1,)

  • Opx4, Opx6, Opx10, returns mean and 1 sigma for each cpx.

  • ’All_PTs’ (Returns output parameters for all matches, e.g, cpx1-opx1,)

  • cpx1-opx4 without any averaging.

Thermobar.two_pyroxene.calculate_cpx_opx_temp(*, cpx_comps=None, opx_comps=None, Two_Px_Match=None, equationT=None, P=None, eq_tests=False)[source]

calculates temperature in Kelvin for Opx-Cpx pairs.

The function requires inputs of cpx_comps and opx_comps, or input of a combined dataframe of cpx-opx compositions (this is used for the calculate_cpx_opx_press_temp_matching function).

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

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

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

  • equationT (str) –

    Choose from:

    T_Put2008_Eq36 (P-dependent)
    T_Put2008_Eq37 (P-dependent)
    T_Brey1990 (P-dependent)
    T_Wood1973 (P-independent)
    T_Wells1977 (P-independent)

  • P (int, float, pandas.Series, str ("Solve")) – Pressure in kbar to perform calculations at. Can enter float or int to use same P for all calculations If “Solve”, returns partial if function is P-dependent

  • eq_tests (bool) – If False, just returns pressure in kbar (default) as a panda series If True, returns pressure in kbar, Kd Fe-Mg for opx-cpx, and the user-entered cpx and opx comps as a panda dataframe.

Returns:

  • If eq_tests is False – pandas.Series: Temperature in K

  • If eq_tests is True – pandas.DataFrame: Temperature in K + Kd-Fe-Mg + cpx + opx comps