Amp and Amp-Liquid functions Functions

Thermobar.amphibole.P_Anderson1995(T, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Anderson and Smith (1995) [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Blundy1990(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Blundy et al. 1990 [Blundy and Holland, 1990]

Thermobar.amphibole.P_Hammarstrom1986_eq1(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Hammarstrom and Zen, 1986 eq.1 [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Hammarstrom1986_eq2(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Hammarstrom and Zen, 1986 eq.2 [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Hammarstrom1986_eq3(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Hammarstrom and Zen, 1986 eq.3 [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Hollister1987(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Hollister et al. 1987 [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Johnson1989(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Johnson and Rutherford, 1989 [Hammarstrom and Zen, 1986]

Thermobar.amphibole.P_Kraw2012(T=None, *, Mgno_Amp, deltaNNO)[source]

Amphibole-only barometer (PH2O) from Krawczynski et al. (2012) [Krawczynski et al., 2012]

Note - this is only the pressure for the first appearance of amphibole, so should only be applied to the highest Mg# amphiboles in each suite. it also only gives the partial pressure of H2O, if there is CO2 in the system, this will not be equal to the total pressure.

Thermobar.amphibole.P_Medard2022_LeakeSites(T=None, *, amp_comps)[source]

Regression strategy of Medard 2022 linking AlVI to pressure, using site allocation strategy used by Leake (implemented in Putirka) for consistency

Statistics on calibration dataset:

R2=0.94 RMSE=87 Int of reg=32 Grad of reg=0.94

Thermobar.amphibole.P_Medard2022_MutchSites(T=None, *, amp_comps)[source]

Regression strategy of Medard 2022 linking AlVI to pressure, using site allocation strategy used by Mutch 2016 for consistency

Statistics on calibration dataset:

R2=0.93 RMSE=93.9 Int of reg=38.19 Grad of reg=0.93

Thermobar.amphibole.P_Medard2022_RidolfiSites(T=None, *, amp_comps)[source]

Regression strategy of Medard 2022 linking AlVI to pressure, using site allocation strategy used by Ridolfi 2022 for consistency

Statistics on calibration dataset:

R2=0.93 RMSE=93.48 Int of reg=37.7 Grad of reg=0.92

Thermobar.amphibole.P_Put2016_eq7a(T=None, *, Al_Amp_cat_23ox, Na_Amp_cat_23ox, K_Amp_cat_23ox, Al2O3_Liq_mol_frac_hyd, Na2O_Liq_mol_frac_hyd, H2O_Liq_mol_frac_hyd, P2O5_Liq_mol_frac_hyd)[source]

Amphibole-Liquid barometer: Equation 7a of Putirka et al. (2016) Preferred equation [Putirka, 2016]

Thermobar.amphibole.P_Put2016_eq7b(T=None, *, Al2O3_Liq_mol_frac_hyd, P2O5_Liq_mol_frac_hyd, Al_Amp_cat_23ox, SiO2_Liq_mol_frac_hyd, Na2O_Liq_mol_frac_hyd, K2O_Liq_mol_frac_hyd, CaO_Liq_mol_frac_hyd)[source]

Amphibole-Liquid barometer: Equation 7b of Putirka et al. (2016) While 7a is preferred, Putirka (2008) say that 7b may be more precise at low T, and >10 kbar :cite:``

Thermobar.amphibole.P_Put2016_eq7c(T=None, *, Al_Amp_cat_23ox, K_Amp_cat_23ox, P2O5_Liq_mol_frac, Al2O3_Liq_mol_frac, Na_Amp_cat_23ox, Na2O_Liq_mol_frac)[source]

Amphibole-Liquid barometer: Equation 7c of Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.P_Ridolfi2010(T=None, *, Al_Amp_cat_23ox, cation_sum_Si_Ca)[source]

Amphibole-only (Al) barometer: Ridolfi et al. (2010) [Ridolfi et al., 2010]

Thermobar.amphibole.P_Ridolfi2012_1a(T=None, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only barometer: Equation 1a of Ridolfi and Renzulli (2012). Calibrated between 1.3-22 kbars [Ridolfi and Renzulli, 2012]

Thermobar.amphibole.P_Ridolfi2012_1b(T=None, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only barometer: Equation 1b of Ridolfi and Renzulli (2012). Calibrated between 1.3-5 kbars [Ridolfi and Renzulli, 2012]

Thermobar.amphibole.P_Ridolfi2012_1c(T=None, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only barometer: Equation 1c of Ridolfi and Renzulli (2012). Calibrated between 1.3-5 kbars [Ridolfi and Renzulli, 2012]

Thermobar.amphibole.P_Ridolfi2012_1d(T=None, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only barometer: Equation 1d of Ridolfi and Renzulli (2012). Calibrated between 4-15 kbars [Ridolfi and Renzulli, 2012]

Thermobar.amphibole.P_Ridolfi2012_1e(T=None, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only barometer: Equation 1e of Ridolfi and Renzulli (2012). Calibrated between 9.3-22 kbars [Ridolfi and Renzulli, 2012]

Thermobar.amphibole.P_Schmidt1992(T=None, *, Al_Amp_cat_23ox)[source]

Amphibole-only (Al) barometer: Schmidt 1992 [Schmidt, 1992]

Thermobar.amphibole.T_Put2016_SiHbl(P=None, *, Si_Amp_cat_23ox)[source]

Amphibole-only thermometer: Si in Hbl, Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq4a_amp_sat(P=None, *, FeOt_Liq_mol_frac_hyd, TiO2_Liq_mol_frac_hyd, Al2O3_Liq_mol_frac_hyd, MnO_Liq_mol_frac_hyd, MgO_Liq_mol_frac_hyd, Na_Amp_cat_23ox, Na2O_Liq_mol_frac_hyd)[source]

Amphibole-Liquid thermometer Saturation surface of amphibole, Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq4b(P=None, *, H2O_Liq_mol_frac_hyd, Fet_Amp_cat_23ox, FeOt_Liq_mol_frac_hyd, MgO_Liq_mol_frac_hyd, MnO_Liq_mol_frac_hyd, Al2O3_Liq_mol_frac_hyd, Ti_Amp_cat_23ox, TiO2_Liq_mol_frac_hyd)[source]

Amphibole-Liquid thermometer: Eq4b, Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq5(P=None, *, Si_Amp_cat_23ox, Ti_Amp_cat_23ox, Fet_Amp_cat_23ox, Na_Amp_cat_23ox)[source]

Amphibole-only thermometer: Equation 5 of Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq6(P, *, Si_Amp_cat_23ox, Ti_Amp_cat_23ox, Fet_Amp_cat_23ox, Na_Amp_cat_23ox)[source]

Amphibole-only thermometer: Equation 6 of Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq8(P, *, Si_Amp_cat_23ox, Ti_Amp_cat_23ox, Mg_Amp_cat_23ox, Na_Amp_cat_23ox)[source]

Amphibole-only thermometer: Eq8, Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Put2016_eq9(P=None, *, Si_Amp_cat_23ox, Ti_Amp_cat_23ox, Mg_Amp_cat_23ox, Fet_Amp_cat_23ox, Na_Amp_cat_23ox, FeOt_Liq_mol_frac_hyd, Al_Amp_cat_23ox, Al2O3_Liq_mol_frac_hyd, K_Amp_cat_23ox, Ca_Amp_cat_23ox, Na2O_Liq_mol_frac_hyd, K2O_Liq_mol_frac_hyd)[source]

Amphibole-Liquid thermometer: Eq9, Putirka et al. (2016) [Putirka, 2016]

Thermobar.amphibole.T_Ridolfi2012(P, *, Si_Amp_13_cat, Ti_Amp_13_cat, Fet_Amp_13_cat, Mg_Amp_13_cat, Ca_Amp_13_cat, K_Amp_13_cat, Na_Amp_13_cat, Al_Amp_13_cat)[source]

Amphibole-only thermometer of Ridolfi and Renzuli, 2012 [Ridolfi and Renzulli, 2012]

SEE=22C

Thermobar.amphibole.calculate_amp_liq_press(*, amp_comps=None, liq_comps=None, meltmatch=None, equationP=None, T=None, eq_tests=False, H2O_Liq=None)[source]

Amphibole-liquid barometer. Returns pressure in kbar

Parameters
amp_comps: pandas DataFrame

amphibole compositions (SiO2_Amp, TiO2_Amp etc.)

liq_comps: pandas DataFrame

liquid compositions (SiO2_Liq, TiO2_Liq etc.)

equationP: str
P_Put2016_eq7a (T-independent, H2O-dependent)
P_Put2016_eq7b (T-independent, H2O-dependent (as hyd frac))
P_Put2016_eq7c (T-independent, H2O-dependent (as hyd frac))
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. Default False

If True, also calcualtes Kd Fe-Mg, which Putirka (2016) suggest as an equilibrium test.

pandas.core.series.Series (for simple barometers)

Pressure in kbar

pandas DataFrame for barometers like P_Ridolfi_2021, P_Mutch2016

Thermobar.amphibole.calculate_amp_liq_press_temp(*, liq_comps=None, amp_comps=None, meltmatch=None, equationT, equationP, iterations=30, T_K_guess=1300, H2O_Liq=None, eq_tests=False)[source]

Solves simultaneous equations for temperature and pressure using amphibole only thermometers and barometers.

Parameters
amp_comps: pandas.DataFrame

Amphibole compositions with column headings SiO2_Amp, MgO_Amp etc.

equationP: str
P_Put2016_eq7a (T-independent, H2O-dependent (as hyd frac))
P_Put2016_eq7b (T-independent, H2O-dependent (as hyd frac))
P_Put2016_eq7c (T-independent, H2O-dependent (as hyd frac))
equationT: str

T_Put2016_eq4a_amp_sat (P-independent, H2O-dep through hydrous fractions) T_Put2016_eq4b (P-independent, H2O-dep through hydrous fractions) T_Put2016_eq9 (P-independent, H2O-dep through hydrous fractions)

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. Default False

If True, also calcualtes Kd Fe-Mg, which Putirka (2016) suggest as an equilibrium test.

pandas.DataFrame: Pressure in Kbar, Temperature in K, Kd-Fe-Mg if eq_tests=True

Thermobar.amphibole.calculate_amp_liq_press_temp_matching(*, liq_comps, amp_comps, equationT=None, equationP=None, P=None, T=None, H2O_Liq=None, Kd_Match=0.28, Kd_Err=0.11, return_all_pairs=False, iterations=30)[source]

Evaluates all possible Amp-Liq pairs from N Liquids, M amp 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.

amp_comps: pandas.DataFrame

Panda DataFrame of amp compositions with column headings SiO2_Amp etc.

equationP: str
P_Put2016_eq7a (T-independent, H2O-dependent)
P_Put2016_eq7b (T-independent, H2O-dependent (as hyd frac))
P_Put2016_eq7c (T-independent, H2O-dependent (as hyd frac))
equationT: str

T_Put2016_eq4a_amp_sat (P-independent, H2O-dep through hydrous fractions) T_Put2016_eq4b (P-independent, H2O-dep) T_Put2016_eq9 (P-independent, H2O-dep through hydrous fractions)

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 assessed using the 0.28+-0.11 value of Putirka (2016)

Kd_Err: int or float, optional

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

Fe3Fet_Liq: int or float, optional

Fe3FeT ratio used to assess Kd Fe-Mg equilibrium between amp 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 amp. E.g., if amp1 matches Liq1, Liq4, Liq6, Liq10, averages outputs for all 4 of those liquids. Returns mean and 1 sigma of these averaged parameters for each Amp.

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

Thermobar.amphibole.calculate_amp_liq_temp(*, amp_comps=None, liq_comps=None, meltmatch=None, equationT=None, P=None, H2O_Liq=None, eq_tests=False)[source]

Amphibole-liquid thermometers. Returns temperature in Kelvin.

Parameters
amp_comps: pandas DataFrame

amphibole compositions (SiO2_Amp, TiO2_Amp etc.)

liq_comps: pandas DataFrame

liquid compositions (SiO2_Liq, TiO2_Liq etc.)

equationT: str

T_Put2016_eq4a_amp_sat (P-independent, H2O-dep through hydrous fractions) T_Put2016_eq4b (P-independent, H2O-dep) T_Put2016_eq9 (P-independent, H2O-dep through hydrous fractions)

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. Default False

If True, also calcualtes Kd Fe-Mg, which Putirka (2016) suggest as an equilibrium test.

pandas.core.series.Series

Temperature in Kelvin

Thermobar.amphibole.calculate_amp_only_hygr(amp_comps=None, T=None)[source]

Exists just to tell users to use a different function

Thermobar.amphibole.calculate_amp_only_melt_comps(amp_comps=None, T=None)[source]

Calculates melt compositions from Amphibole compositions using Zhang et al. (2017), Ridolfi et al. 2021 and Putirka (2016).

Parameters:
  • amp_comps (pandas.DataFrame) – Amphibole compositions with column headings SiO2_Amp, MgO_Amp etc.

  • T (optional, float, int) – Temperature in Kelvin, needed for equation3 and 5 of Zhang et al. (2017), and SiO2 from Putirka (2017)

Returns:

Contains calculated melt compositions, and all amphibole components used in the calculation.

Return type:

DataFrame

Thermobar.amphibole.calculate_amp_only_press(amp_comps=None, equationP=None, T=None, deltaNNO=None, classification=False, Ridolfi_Filter=True)[source]

Amphibole-only barometry, returns pressure in kbar.

Parameters:

amp_comps (pandas.DataFrame) – Amphibole compositions with column headings SiO2_Amp, MgO_Amp etc.

EquationP: str
P_Mutch2016 (T-independent)
P_Ridolfi2012_1a (T-independent)
P_Ridolfi2012_1b (T-independent)
P_Ridolfi2012_1c (T-independent)
P_Ridolfi2012_1d (T-independent)
P_Ridolfi2012_1e (T-independent)
P_Ridolfi2021 - (T-independent)- Uses new algorithm in 2021 paper to

select pressures from equations 1a-e. | P_Medard2022. Choose how you want the sites calculated:

P_Medard2022_RidolfiSites, LeakeSites, MutchSites

P_Ridolfi2010 (T-independent)
P_Hammarstrom1986_eq1 (T-independent)
P_Hammarstrom1986_eq2 (T-independent)
P_Hammarstrom1986_eq3 (T-independent)
P_Hollister1987 (T-independent)
P_Johnson1989 (T-independent)
P_Blundy1990 (T-independent)
P_Schmidt1992 (T-independent)
P_Anderson1995 (T-dependent)
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

Returns:

Pressure in kbar

Return type:

pandas series

Thermobar.amphibole.calculate_amp_only_press_temp(amp_comps, equationT, equationP, iterations=30, T_K_guess=1300, Ridolfi_Filter=True, return_amps=True, deltaNNO=None)[source]

Solves simultaneous equations for temperature and pressure using amphibole only thermometers and barometers.

Parameters
amp_comps: pandas.DataFrame

Amphibole compositions with column headings SiO2_Amp, MgO_Amp etc.

EquationP: str

P_Mutch2016 (T-independent)
P_Ridolfi2012_1a (T-independent)
P_Ridolfi2012_1b (T-independent)
P_Ridolfi2012_1c (T-independent)
P_Ridolfi2012_1d (T-independent)
P_Ridolfi2012_1e (T-independent)
P_Ridolfi2021 - (T-independent)- Uses new algorithm in 2021 paper to

select pressures from equations 1a-e.

P_Ridolfi2010 (T-independent)
P_Hammarstrom1986_eq1 (T-independent)
P_Hammarstrom1986_eq2 (T-independent)
P_Hammarstrom1986_eq3 (T-independent)
P_Hollister1987 (T-independent)
P_Johnson1989 (T-independent)
P_Blundy1990 (T-independent)
P_Schmidt1992 (T-independent)
P_Anderson1995 (T-dependent)
equationT: str
T_Put2016_eq5 (P-independent)
T_Put2016_eq6 (P-dependent)
T_Put2016_SiHbl (P-independent)
T_Ridolfi2012 (P-dependent)
T_Put2016_eq8 (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.

pandas.DataFrame: Pressure in Kbar, Temperature in K

Thermobar.amphibole.calculate_amp_only_temp(amp_comps, equationT, P=None)[source]

Amphibole-only thermometry, calculates temperature in Kelvin.

Parameters:

equationT (str) –

choose from:

T_Put2016_eq5 (P-independent)
T_Put2016_eq6 (P-dependent)
T_Put2016_SiHbl (P-independent)
T_Ridolfi2012 (P-dependent)
T_Put2016_eq8 (P-dependent)

P: float, int, pandas.Series, str

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

Returns:

pandas.Series

Return type:

Pressure in kbar (if eq_tests=False)

Thermobar.amphibole.calculate_amp_plag_temp(*, amp_comps=None, plag_comps=None, XAn=None, XAb=None, equationT=None, P=None, meltmatch=None)[source]

This function calculates Plag and Amp temperatures

Parameters:
  • amp_comps (pandas.DataFrame) – Panda DataFrame of amp compositions with column headings SiO2_Amp etc.

  • Either

  • plag_comps (pandas.DataFrame) – Panda DataFrame of plag compositions with column headings SiO2_Plag etc.

  • OR

  • XAn (int, float, pd.Series) – An and Ab content of plag, all the function uses

  • XAb (int, float, pd.Series) – An and Ab content of plag, all the function uses

  • equationT (str) – Choose from T_HB1994_A and T_HB1994__B (Holland and Blundy, 1994).

  • P (str, int, pd.Series:) – Pressure in kbar.

Return type:

pd.Series of temp

Thermobar.amphibole.calculate_amp_plag_temp_matching(amp_comps, plag_comps, equationT=None, P=None)[source]

This function pairs up all possible plag-amp pairs, and calculates temps for them.

Parameters:

amp_comps (pandas.DataFrame) – Panda DataFrame of amp compositions with column headings SiO2_Amp etc.

plag_comps: pandas.DataFrame

Panda DataFrame of plag compositions with column headings SiO2_Plag etc.

equationT: str

Choose from T_HB1994_A and T_HB1994__B (Holland and Blundy, 1994).

P: str, int, pd.Series:

Pressure in kbar.

Return type:

Dataframe of temps and matches and all intermediate calc steps