Feldspar Functions

Thermobar.feldspar.H_Masotta2019(T, *, An_Plag, Ab_Plag, Si_Liq_cat_frac, Al_Liq_cat_frac, Na_Liq_cat_frac, Ca_Liq_cat_frac, K_Liq_cat_frac)[source]

Plagioclase-Hygrometer of Masotta et al. (2019), for trachytic systems. [Masotta and Mollo, 2019]

Thermobar.feldspar.H_Put2005_eqH(T, *, An_Plag, Si_Liq_cat_frac, Al_Liq_cat_frac, Na_Liq_cat_frac, Ca_Liq_cat_frac, Pred_Ab_EqF, Pred_An_EqE, K_Liq_cat_frac, Mg_Liq_cat_frac)[source]

Plagioclase-Hygrometer of Putirka (2005) eq. H Tends to overpredict water in global datasets [Putirka, 2005]

Thermobar.feldspar.H_Put2008_eq25b(T, *, P, An_Plag, Si_Liq_cat_frac, Al_Liq_cat_frac, Ca_Liq_cat_frac, K_Liq_cat_frac, Mg_Liq_cat_frac)[source]

Plagioclase-Hygrometer of Putirka (2008) eq. 25b [Putirka, 2008]

Global calibration improving estimate of Putirka (2005) eq H SEE=+-1.1 wt%

Thermobar.feldspar.H_Waters2015(T, *, liq_comps=None, plag_comps=None, P, XAn=None, XAb=None)[source]

Plagioclase-Hygrometer of Waters and Lange (2015), update from Lange et al. (2009). [Waters and Lange, 2015]

SEE=+-0.35 wt%

Thermobar.feldspar.P_Put2008_eq25(T, *, Ab_Plag, Al_Liq_cat_frac, Ca_Liq_cat_frac, Na_Liq_cat_frac, Si_Liq_cat_frac, An_Plag, K_Liq_cat_frac)[source]

Plagioclase-Liquid barometer of Putirka (2008) eq. 26. [Putirka, 2008]

SEE=+-2.2 kbar But in spreadsheet, Putirka warns plag is not a good barometer

Thermobar.feldspar.T_Put2008_eq23(P, *, An_Plag, Si_Liq_cat_frac, Al_Liq_cat_frac, Ca_Liq_cat_frac, Ab_Plag, H2O_Liq)[source]

Plagioclase-Liquid thermometer of Putirka (2008) eq. 23 [Putirka, 2008] SEE=+-43C

Thermobar.feldspar.T_Put2008_eq24a(P, *, An_Plag, Si_Liq_cat_frac, Al_Liq_cat_frac, Ca_Liq_cat_frac, K_Liq_cat_frac, Ab_Plag, H2O_Liq)[source]

Plagioclase-Liquid thermometer of Putirka (2008) eq. 24a [Putirka, 2008]

Global regression, improves equation 23 SEE by 6C SEE=+-36C

Thermobar.feldspar.T_Put2008_eq24b(P, *, Ab_Kspar, Al_Liq_cat_frac, Na_Liq_cat_frac, K_Liq_cat_frac, Si_Liq_cat_frac, Ca_Liq_cat_frac)[source]

Alkali Felspar-Liquid thermometer of Putirka (2008) eq. 24b. [Putirka, 2008]

SEE=+-23 C (Calibration data)

SEE=+-25 C (All data)

Thermobar.feldspar.T_Put2008_eq27a(P, *, K_Barth, Si_Kspar_cat_frac, Ca_Kspar_cat_frac, An_Kspar, An_Plag, Ab_Plag)[source]

Two feldspar thermometer: Equation 27a of Putirka (2008). [Putirka, 2008]

SEE±23°C for calibration

SEE±44°C for test data

Thermobar.feldspar.T_Put2008_eq27b(P, *, K_Barth, Si_Kspar_cat_frac, Ca_Kspar_cat_frac, An_Kspar, An_Plag, Ab_Plag)[source]

Two feldspar thermometer: Equation 27b of Putirka (2008). Putirka recomends using this thermometer over 27a, with preference being 27b>global>27a Global calibration (unlike 27a, which is calibrated on a smaller dataset) [Putirka, 2008]

SEE±30°C for calibration

Thermobar.feldspar.T_Put_Global_2Fspar(P, *, K_Barth, Si_Kspar_cat_frac, Ca_Kspar_cat_frac, Ab_Kspar, Or_Kspar, Na_Plag_cat_frac, An_Kspar, An_Plag, Ab_Plag)[source]

Two feldspar thermometer from supporting spreadsheet of Putirka (2008) Global calibration [Putirka, 2008]

Thermobar.feldspar.calculate_fspar_liq_hygr(*, liq_comps, plag_comps=None, kspar_comps=None, equationH=None, P=None, T=None, XAn=None, XAb=None, XOr=0)[source]

calculates H2O content (wt%) from composition of equilibrium plagioclase and liquid.

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

  • plag_comps (pandas.DataFrame) – Plag compositions with column headings SiO2_Plag, MgO_Plag etc. Or users can enter XAn, XAb, without the other oxides.

  • XAn+XAb (float, int, pandas.Series) – If plag_comps is None, enter XAn= and XAb= for plagioclases instead. XOr is set to zero by default, but can be overwritten for equilibrium tests

  • equationH (str) –

    choose from:

    H_Waters2015 (T-dependent, P-dependent)
    H_Masotta2019 (T-dependent, P-independent, for Trachytes)
    H_Put2005_eqH (T-dependent, P-independent)
    H_Put2008_eq25b (T-dependent, P-dependent)

P: float, int, pandas.Series

Pressure in kbar to perform calculations at

T: float, int, pandas.Series

Temperature in Kelvin to perform calculations at

Returns:

Calculated H2O, eq tests, and input plag and liq parameters

Return type:

pandas.DataFrame

Thermobar.feldspar.calculate_fspar_liq_press(*, plag_comps=None, kspar_comps=None, liq_comps=None, equationP=None, T=None, H2O_Liq=None, eq_tests=False)[source]

Liquid-Feldspar barometer (at the moment, only options for Plag). Note, Putirka warns that plagioclase is not a reliable barometer! For a user-selected equation returns a pressure in kbar.

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

  • plag_comps (pandas.DataFrame) – Plag compositions with column headings SiO2_Plag, MgO_Plag etc.

  • EquationP (str) –

    Choose from

    P_Put2008_eq25 (Plag-Liq, P-dependent, H2O-independent)

  • T (float, int, pandas.Series, str ("Solve")) – 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.

  • H2O_Liq (optional.) – If None, uses H2O_Liq column from input. If int, float, pandas.Series, uses this instead of H2O_Liq Column

Returns:

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

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

Thermobar.feldspar.calculate_fspar_liq_press_temp(*, liq_comps=None, plag_comps=None, kspar_comps=None, meltmatch=None, equationP=None, equationT=None, iterations=30, T_K_guess=1300, H2O_Liq=None, eq_tests=False)[source]

Solves simultaneous equations for temperature and pressure using feldspar-liquid thermometers and barometers. Currently no Kspar barometers exist.

Parameters:
  • plag_comps (pandas.DataFrame) – Plag compositions with column headings SiO2_Plag, MgO_Plag etc.

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

  • EquationP (str) –

    choose from;

    P_Put2008_eq25 (Plag-Liq, P-dependent, H2O-independent)

  • EquationT (str) –

    choose from:

    T_Put2008_eq24b (Kspar-Liq, P-dependent, H2O-independent)
    T_Put2008_eq23 (Plag-Liq, P-dependent, H2O-dependent)
    T_Put2008_eq24a (Plag-Liq, P-dependent, H2O-dependent)

  • iterations (int (default=30)) – Number of iterations used to converge to solution.

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

  • eq_tests (bool) –

Returns:

pandas.DataFrame

Return type:

Pressure in kbar, Temperature in K + fspar+liq comps (if eq_tests=True)

Thermobar.feldspar.calculate_fspar_liq_temp(*, plag_comps=None, kspar_comps=None, meltmatch_plag=None, meltmatch_kspar=None, liq_comps=None, equationT=None, P=None, H2O_Liq=None, eq_tests=False)[source]

Liquid-Feldspar thermometery (same function for Plag and Kspar), returns temperature in Kelvin.

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

  • (pandas.DataFrame) (kspar_comps or plag_comps) –

    Specify kspar_comps=… for Kspar-Liquid thermometry (with column headings SiO2_Kspar, MgO_Kspar) etc

    Specify plag_comps=… for Plag-Liquid thermometry (with column headings SiO2_Plag, MgO_Plag) etc

  • EquationT (str) –

    choose from:

    T_Put2008_eq24b (Kspar-Liq, P-dependent, H2O-independent
    T_Put2008_eq23 (Plag-Liq, P-dependent, H2O-dependent)
    T_Put2008_eq24a (Plag-Liq, P-dependent, H2O-dependent)

  • P (float, int, pandas.Series, str ("Solve")) – 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

  • H2O_Liq (optional.) – If None, uses H2O_Liq column from input. If int, float, pandas.Series, uses this instead of H2O_Liq Column

Returns:

  • Temperature in Kelvin (pandas.Series) – If eq_tests is False

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

Thermobar.feldspar.calculate_fspar_liq_temp_hygr(*, liq_comps, plag_comps, equationT, equationH, iterations=20, P=None, kspar_comps=None, eq_tests=True)[source]

Iterates temperature and water content for Plag-liquid pairs for a user-specified number of iterations. Returns calculated T and H2O, as well as change in T and H with the # of iterations.

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

  • plag_comps (pandas.DataFrame (optional)) – Plag compositions with column headings SiO2_Plag, MgO_Plag etc.

  • equationH (str) –

    choose from:

    H_Waters2015 (T-dependent, P-dependent)
    H_Put2005_eqH (T-dependent, P-independent)
    H_Put2008_eq25b (T-dependent, P-dependent)

  • equationT (str) –

    choose from:

    T_Put2008_eq23 (Plag-Liq, P-dependent, H2O-dependent)
    T_Put2008_eq24a (Plag-Liq, P-dependent, H2O-dependent)

  • P (float, int, pandas.Series) – Pressure (kbar) to perform calculations at

  • iterations (int) – number of times to iterate temperature and H2O. Default 20.

Returns:

  • Dictionary with keys ‘T_H_calc’ and ‘T_H_Evolution’ (Dictionary)

  • ’T_H_calc’ (pandas.DataFrame) – Calculated H2O, calculated T, plag-liq equilibrium parameters, and change in T and H between second last and last iteration

  • ’T_H_Evolution’ (pandas.DataFrame) – Pandas dataframes, where rows are number of iterations, and column headings show the T and H2O calculated for each sample.

Thermobar.feldspar.calculate_fspar_liq_temp_hygr_matching(liq_comps, plag_comps, equationT, equationH, iterations=20, P=None, kspar_comps=None, Ab_An_P2008=True)[source]

Evaluates all possible Plag-liq pairs, iterates T and H2O returns T (K) and equilibrium test values. Users must investigate correct values for eq tests.

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

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

  • EquationT (str) –

    Choose from:

    T_Put2008_eq24b (Kspar-Liq, P-dependent, H2O-independent
    T_Put2008_eq23 (Plag-Liq, P-dependent, H2O-dependent)
    T_Put2008_eq24a (Plag-Liq, P-dependent, H2O-dependent)

P: float, int, pandas.Series

Pressure in kbar to perform calculations at.

iterations: int

number of times to iterate temperature and H2O. Default 20.

Returns:

‘Av_HTs’: df of averaged T and H for each Plag, and all the liquids it matches (+eq tests etc) ‘All_HTs: df of all T and H for all possible Plag-Liq combinations (+eq tests etc) ‘T_H_Evolution’: dataframe of T-H evolution against number of iterations.

Return type:

dict

Thermobar.feldspar.calculate_fspar_liq_temp_matching(*, liq_comps, plag_comps=None, kspar_comps=None, H2O_Liq=None, equationT=None, P=None, Ab_An_P2008=False)[source]

Evaluates all possible Plag-liq or kspar-liq pairs, returns T (K) and equilibrium test values. Users must investigate correct values for eq tests.

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

  • kspar_comps (pandas.DataFrame) – Panda DataFrame of kspar compositions with column headings SiO2_Kspar, CaO_Kspar etc.

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

  • EquationT (str) –

    Choose from:

    T_Put2008_eq24b (Kspar-Liq, P-dependent, H2O-independent
    T_Put2008_eq23 (Plag-Liq, P-dependent, H2O-dependent)
    T_Put2008_eq24a (Plag-Liq, P-dependent, H2O-dependent)

P: float, int, pandas.Series

Pressure in kbar to perform calculations at.

Returns:

‘Av_PTs’: df of averaged T for each Plag, and all the liquids it matches (+eq tests etc) ‘All_PTs: df of all T for all possible Plag-Liq combinations (+eq tests etc)

Return type:

dict

Thermobar.feldspar.calculate_plag_kspar_temp(*, plag_comps=None, kspar_comps=None, Two_Fspar_Match=None, equationT=None, P=None, eq_tests=False)[source]

Two feldspar thermometer (Kspar-Plag), returns temperature in Kelvin

Parameters:
  • plag_comps (pandas.DataFrame) – Plag compositions with column headings SiO2_Plag, MgO_Plag etc.

  • kspar_comps (pandas.DataFrame) – Kspar compositions with column headings SiO2_Kspar, MgO_Kspar etc.

  • EquationT (str) –

    choose from:

    T_Put2008_eq27a (P-dependent, H2O-independent)
    T_Put2008_eq27b (P-dependent, H2O-independent)
    T_Put_Global_2Fspar (P-dependent, H2O-independent)

  • P (float, int, pandas.Series, str) – Pressure in kbar to perform calculations at. Only needed for P-sensitive thermometers. If P=”Solve”, returns a partial function, else, enter an integer, float, or panda series.

Returns:

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

  • If eq_tests is True – pandas.DataFrame: Temperature in Kelvin+eq Tests + input compositions

Thermobar.feldspar.calculate_plag_kspar_temp_matching(*, kspar_comps, plag_comps, equationT=None, P=None)[source]

Evaluates all possible Plag-Kspar pairs, returns T (K) and equilibrium tests

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

  • kspar_comps (pandas.DataFrame) – Panda DataFrame of kspar compositions with column headings SiO2_Kspar etc.

  • EquationT (str) –

    Choose from:

    T_Put2008_eq27a (P-dependent, H2O-independent)
    T_Put2008_eq27b (P-dependent, H2O-independent)
    T_Put_Global_2Fspar (P-dependent, H2O-independent)

  • P (float, int, pandas.Series) – Pressure in kbar to perform calculations at.

Returns:

T in K for all posible plag-kspar matches, along with equilibrium tests, components and input mineral compositions

Return type:

pandas.DataFrame