Model dependent variables

Functions for calculating various model dependent variables given a set of conditions (e.g., P and T).

VolFe.model_dependent_variables.C_CH4(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving CH4 in the melt: C_CH4 = wmCH4/fCH4 (ppmw/bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “methane” and column label of “option”.

Returns:

Solubility constant for CH4 in ppmw/bar

Return type:

float

Model options for “methane”

Only one option available currently, included for future development.

VolFe.model_dependent_variables.C_CO(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving CO in the melt: C_CO = wmCO/fCO (ppmw/bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “carbon monoxide” and column label of “option”.

Returns:

Solubility constant for CH4 in ppmw/bar

Return type:

float

Model options for ‘carbon monoxide’

  • ‘Basalt_Hughes24’ [default] CO in Table S4 from Hughes et al. (2024) https://doi.org/10.2138/am-2023-8739, based on data from Armstrong et al. (2015), Stanley et al. (2014), and Wetzel et al. (2013).

Only one option available currently, included for future development.

VolFe.model_dependent_variables.C_CO3(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving CO2 as CO2,T (all oxidised carbon, i.e., CO2mol and CO32-, as CO2,T) in the melt: C_CO2,T = xmCO2,T/fCO2 (mole fraction/bar)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Minimum requirement is index of “carbon dioxide” and column label of “option”.

Returns:

Solubility constant for CO2 in mole fraction/bar

Return type:

float

Model options for ‘carbon dioxide’

VolFe.model_dependent_variables.C_H2(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving H2 in the melt: C_H2 = wmH2/fH2 (ppmw/bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “hydrogen” and column label of “option”.

Returns:

Solubility constant for H2 in ppmw/bar

Return type:

float

Model options for hydrogen

VolFe.model_dependent_variables.C_H2O(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving H2O in the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is indexes of “Hspeciation” and “water” and column label of “option”.

Returns:

Solubility constant for H2O

Return type:

float

Model options for Hspeciation

  • “none” [default]

Only one option available currently, included for future development.

Model options for water

VolFe.model_dependent_variables.C_H2S(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving H2S in the melt: C_H2S = wmH2S/fH2S (ppmw/bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.)., not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is ndex of “hydrogen sulfide” and column label of “option”.

Returns:

Solubility constant for H2S in ppmw/bar

Return type:

float

Model options for hydrogen sulfide

  • ‘Basalt_Hughes24’ [default] Fig.S6 from Hughes et al. (2024) https://doi.org/10.2138/am-2023-8739, based on experimental data Moune et al. (2009) and calculations in Lesne et al. (2011).

  • ‘BasalticAndesite_Hughes24’ Fig.S6 from Hughes et al. (2024) https://doi.org/10.2138/am-2023-8739, based on experimental data Moune et al. (2009) and calculations in Lesne et al. (2011).

VolFe.model_dependent_variables.C_S(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving S in the melt as S2-: C_S = wmS2-*(fO2/fS2)^0.5 (in ppmw and bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.)..

  • models (pandas.DataFrame) – Minimum requirement is index of “sulfide” and column label of “option”.

Returns:

Solubility constant for S2-

Return type:

float

Model options for sulfide

VolFe.model_dependent_variables.C_SO4(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving S6+ in the melt: C_SO4 = wmS6+(fS2*fO2^3)^-0.5 (in ppmw and bar)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.)..

  • models (pandas.DataFrame) – Minimum requirement is index of “sulfate” and column label of “option”.

Returns:

Solubility constant for S6+

Return type:

float

Model options for sulfate

VolFe.model_dependent_variables.C_X(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Solubility constant for disolving X in the melt: C_X = wmX/fX (ppmw/bar).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “species X solubility” and column label of “option”.

Returns:

Solubility constant for X in ppmw/bar

Return type:

float

Model options for species X solubility

  • ‘Ar_Basalt_Hughes25’ [default] Eq. (S2) Hughes et al. (2025) Volcanica 8(2):457-481 https://doi.org/10.30909/vol/imvc1781 based on data from Iacono-Marziano et al. (2010) Chemical Geology 279(3–4):145-157

  • ‘Ar_Rhyolite_Hughes25’ Eq. (S3) Hughes et al. (2025) Volcanica 8(2):457-481 https://doi.org/10.30909/vol/imvc1781 based on data from Iacono-Marziano et al. (2010) Chemical Geology 279(3–4):145-157

  • ‘Ne_Basalt_Hughes25’ Eq. (S4) Hughes et al. (2025) Volcanica 8(2):457-481 https://doi.org/10.30909/vol/imvc1781 based on data from Iacono-Marziano et al. (2010) Chemical Geology 279(3–4):145-157

  • ‘Ne_Rhyolite_Hughes25’ Eq. (S5) Hughes et al. (2025) Volcanica 8(2):457-481 https://doi.org/10.30909/vol/imvc1781 based on data from Iacono-Marziano et al. (2010) Chemical Geology 279(3–4):145-157

  • [float: user specified number] User can type a number that will be used instead (i.e., a constant value)

VolFe.model_dependent_variables.FMQ(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

fO2 value of the FMQ buffer.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “FMQbuffer” and column label of “option”.

Returns:

log10fO2 value of FMQ buffer

Return type:

float

Model options for FMQbuffer

  • ‘Frost91’ Frost (1991) in “Oxide Minerals: Petrologic and Magnetic Significance” https//doi.org/10.1515/9781501508684-004

  • ‘ONeill87’ O’Neill (1897) AmMin 72(1-2):67-75

VolFe.model_dependent_variables.FefO2_Borisov18_terms(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Terms for Borisov et al. (2018) [https//doi.org/10.1007/s00410-018-1524-8] equation (4) to convert between fO2 and Fe3+/FeT of the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame, optional) – Model options.. Defaults to default_models.

Returns:

Terms a, B

Return type:

tuple(float,float)

VolFe.model_dependent_variables.FefO2_KC91_Eq7_terms(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Terms for Kress & Carmichael (1991) [https//doi.org/10.1007/BF00307328] equation (7) to convert between fO2 and Fe3+/FeT of the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Model options.

Returns:

Terms a, B

Return type:

tuple(float,float)

VolFe.model_dependent_variables.FefO2_KC91_EqA_terms(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Terms for Kress & Carmichael (1991) [https//doi.org/10.1007/BF00307328] equation (A-5,6) to convert between fO2 and Fe3+/FeT of the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Model options.

Returns:

Terms KD1, KD2, y

Return type:

tuple(float,float,float)

VolFe.model_dependent_variables.FefO2_ONeill18_terms(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Terms for O’Neill et al. (2018) [https//doi.org/10.1016/j.epsl.2018.10.0020012-821X] equation (9a) to convert between fO2 and Fe3+/FeT the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Model options.

Returns:

Terms a, B, FMQ

Return type:

tuple(float,float,float)

VolFe.model_dependent_variables.KCOHg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: CH4(g) + 2O2(g) = CO2(g) + 2H2O(g), K = (fCO2*(fH2O^2))/(fCH4*(fO2^2))

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KCOHg” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KCOHg

  • ‘Ohmoto97’ [default] Reaction (e) in Table 1 of Ohmoto & Kerrick (1997).

  • ‘noCH4’ Almost stops CH4 forming in the vapor, K = very large.

VolFe.model_dependent_variables.KCOg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: CO(g) + 0.5O2(g) = CO2(g), K = fCO2/(fCO*(fO2^0.5))

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KCOg” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KCOg

  • ‘Ohmoto97’ [default] Reaction (c) in Table 1 of Ohmoto & Kerrick (1997).

Only one option available currently, included for future development.

VolFe.model_dependent_variables.KCOm(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Speciation constant for homogeneous melt reaction: CO2(m) + O(m) = CO3(m)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “Cspeccomp” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for Cspeccomp

  • ‘Basalt’ [default] Assume all oxidised carbon in the melt is present as carbonate ions.

  • ‘Andesite_Botcharnikov06’ Eq. (8) from Botcharnikov et al. (2006) Chem. Geol. 229(1-3)125-143 https://doi.org/10.1016/j.chemgeo.2006.01.016

  • ‘Dacite_Botcharnikov06’ Eq. in the text from Botcharnikov et al. (2006) https://doi.org/10.1016/j.chemgeo.2006.01.016, based on data from Behrens et al. (2004)

  • ‘Rhyolite’ Assume all oxidised carbon in the melt is present as molecular CO2.

VolFe.model_dependent_variables.KCOs(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for heterogeneous vapor-solid reaction: Cgraphite + O2(g) = CO2(g)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KCOs” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KCOs

  • ‘Holloway92’ [default] Eq (3) KI in Holloway et al. (1992) Eur J. Mineral. 4:105-114

Only one option available currently, included for future development.

VolFe.model_dependent_variables.KHOSg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: H2O(g) + 0.5S2(g) = H2S(g) + 0.5O2(g), K = (fH2S*(fO2)^0.5)/((fS2^0.5)*fH2O)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is ndex of “KHOSg” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KHOSg

  • ‘Ohmoto97’ [default] Reaction (h) in Table 1 of Ohmoto & Kerrick (1997).

  • ‘noH2S’ Stops H2S forming in the vapor, K = 0.

VolFe.model_dependent_variables.KHOg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: H2(g) + 0.5O2(g) = H2O(g) K = fH2O/(fH2*(fO2)^0.5)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KHOg” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KHOg

  • ‘Ohmoto97’ [default] Reaction (d) in Table 1 of Ohmoto & Kerrick (1997).

Only one option available currently, included for future development.

VolFe.model_dependent_variables.KHOm(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Speciation constant for homogeneous melt reaction: H2Omol(m) + O(m) = 2OH-(m) assuming ideal mixing.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “Hspeccomp” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for Hspeccomp

VolFe.model_dependent_variables.KOCSg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction involving OCS: either K = (fCO2*fH2S)/(fOCS*fH2O) or (fCO^3*fSO2)/(fCO2^2*fOCS)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KOCSg” and “carbonylsulfide” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KOCSg

  • ‘Moussallam19’ [default] Eq. (8) in Moussallam et al. (2019) https://doi.org/10.1016/j.epsl.2019.05.036 for KOCSg and ‘COS’ for carbonlysulfide

  • ‘noOCS’ Almost stops OCS forming in the vapor, K = very large.

VolFe.model_dependent_variables.KOSg(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: 0.5S2(g) + O2(g) = SO2(g), K = fSO2/((fS2^0.5)*fO2)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KOSg” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KOSg

  • ‘Ohmoto97’ [default] Reaction (f) in Table 1 of Ohmoto & Kerrick (1997).

  • ‘noSO2’ Stops SO2 forming in the vapor, K = 0.

VolFe.model_dependent_variables.KOSg2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Equilibrium constant for homogeneous vapor reaction: 0.5S2(g) + 1.5O2(g) = SO3(g), K = fSO3/((fS2^0.5)*(fO2^1.5)

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “KOsg2” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for KOSg2

Only one option available currently, included for future development.

VolFe.model_dependent_variables.KregH2O(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Speciation constant for homogeneous melt reaction: H2Omol(m) + O(m) = 2OH-(m) assuming regular mixing.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “Hspeccomp” and column label of “option”.

Returns:

Equilibrium constant

Return type:

float

Model options for Hspeccomp

VolFe.model_dependent_variables.NNO(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

fO2 value of the NNO buffer.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “NNObuffer” and column label of “option”.

Returns:

log10fO2 value of NNO buffer

Return type:

float

Model options for NNObuffer

  • ‘Frost91’ [default] Frost (1991) in “Oxide Minerals: Petrologic and Magnetic Significance” https//doi.org/10.1515/9781501508684-004

Only one option available currently, included for future development.

VolFe.model_dependent_variables.Q_SS(PT, Tr, Pcr, models)[source]

Modelling constants for Shi & Saxena (1992) from Table 1.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • Pcr (float) – Critical pressure in bars.

  • Tcr (float) – Critical temperature in K.

  • models (pandas.DataFrame) – Model options.

Returns:

Calculated values for A, B, C, D, P0, integral0

Return type:

tuple(float,float,float,float,float,float)

VolFe.model_dependent_variables.SCAS(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Sulfate content at anhydrite saturation (S6+CAS) for the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.)..

  • models (pandas.DataFrame) – Minimum requirement is index of “SCAS” and column label of “option”.

Returns:

S6+CAS in ppm

Return type:

float

Model options for SCAS

VolFe.model_dependent_variables.SCSS(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Sulfide content at sulfide saturation (S2-CSS) for the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.). Assumes sulfide is pure FeS unless specified in melt_wf.

  • models (pandas.DataFrame) – Minimum requirement is index of “SCSS” and column label of “option”.

Returns:

S2-CCS in ppm

Return type:

float

Model options for SCSS

VolFe.model_dependent_variables.alpha_C_CH4v_CH4m(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between CH4(v) and CH4mol(m): a = R[CH4(v)]/R[CH4mol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_C_CH4v_CH4m” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_C_CH4v_CH4m”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_C_CO2v_CO2m(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between CO2(v) and CO2(m): a = R[CO2(v)]/R[CO2(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_C_CO2v_CO2m” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_C_CO2v_CO2m”

  • ‘Blank93’ [default] Blank & Stolper (1993) EOS Trans Am Geophys Union 74:347-8

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

VolFe.model_dependent_variables.alpha_C_CO2v_CO32mm(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between CO2(v) and CO32-(m): a = R[CO2(v)]/R[CO32-(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_C_CO2v_CO32mm” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_C_CO2v_CO32mm”

VolFe.model_dependent_variables.alpha_C_COv_COm(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between CO(v) and COmol(m): a = R[CO(v)]/R[COmol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_C_COv_COm” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_C_COv_COm”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_H_CH4v_CH4m(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between CH4(v) and CH4mol(m): a = R[CH4(v)]/R[CH4mol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H_CH4v_CH4m” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H_CH4v_CH4m”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_H_H2Ov_H2Om(PT, comp, models)[source]

Alpha fractionation factor for D/H (R) between H2O(v) and H2Omol(m): a = R[H2O(v)]/R[H2Omol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H_H2Ov_H2Om” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H_H2Ov_H2Om”

  • ‘Rust04’ [default] Rust et al. (2004) Geology 32(4) 349-352 https://doi.org/10.1130/G20388.2

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

VolFe.model_dependent_variables.alpha_H_H2Ov_OHmm(PT, comp, models)[source]

Alpha fractionation factor for D/H (R) between H2O(v) and OH-(m): a = R[H2O(v)]/R[OH-(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H_H2Ov_OHmm” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H_H2Ov_OHmm”

  • ‘Rust04’ [default] Rust et al. (2004) Geology 32(4) 349-352 https://doi.org/10.1130/G20388.2

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

VolFe.model_dependent_variables.alpha_H_H2Sv_H2Sm(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between H2S(v) and H2Smol(m): a = R[H2S(v)]/R[H2Smol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H_H2Sv_H2Sm” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H_H2Sv_H2Sm”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_H_H2v_H2m(PT, comp, models)[source]

Alpha fractionation factor for 13C/12C (R) between H2(v) and H2mol(m): a = R[H2(v)]/R[H2mol(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H_H2v_H2m” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H_H2v_H2m”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_S_H2Sv_H2Sm(PT, comp, models)[source]

Alpha fractionation factor for 32S/34S (R) between H2S(v) and H2S(m): a = R[H2S(v)]/R[H2S(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_S_H2Sv_H2Sm” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_S_H2Sv_H2Sm”

  • ‘no fractionation’ Treat as no isotopic fractionation between these species

Only one option available currently, included for future development.

VolFe.model_dependent_variables.alpha_S_H2Sv_S2mm(PT, comp, models)[source]

Alpha fractionation factor for 32S/34S (R) between H2S(v) and *S2-(m): a = R[H2S(m)]/R[S2-(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_H2S_S” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_H2S_S”

VolFe.model_dependent_variables.alpha_S_SO2v_S6pm(PT, comp, models)[source]

Alpha fractionation factor for 32S/34S (R) between SO2(v) and S6+(m): a = R[SO2(v)]/R[S6+(m)].

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • comp (dict) – Melt composition (SiO2, TiO2, etc.), not normally used unless model option requires melt composition.

  • models (pandas.DataFrame) – Minimum requirement is index of “alpha_SO2_SO4” and column label of “option”.

Returns:

alpha fractionation factor

Return type:

float

Model options for “alpha_SO2_SO4”

VolFe.model_dependent_variables.beta_gas(PT, element, species, models)[source]

Beta isotopic fractionation factors between vapor species containing 32S/34S, 13C/12C, and D/H.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • element (str) – Element of interest (H, C, or S).

  • species (str) – Vapor species of interest (H2O, H2, CH4, H2S, CO2, CO, OCS, SO2, S2).

  • models (pandas.DataFrame) – Minimum requirement is index of “beta_factors” and column label of “option”.

Returns:

Beta factor for element in species of interest

Return type:

float

Model options for ‘beta_factors’

  • ‘Richet77’ [default] Quadratic fits to data in Tables 9, 10, and 13 between 600 < T’C < 1300 of Richet et al. (1977) Ann. Rev. Earth Planet. Sci. 5:65-110 as detailed in Saper et al. (2025) Lithos 518-519:108331 https://doi.org/10.1016/j.lithos.2025.108331.

Only one option available currently, included for future development.

VolFe.model_dependent_variables.check_default_options(models)[source]

Adds default options to models DataFrame if no user-option is given.

Parameters:

models (pd.DataFrame) – User-specified model options.

Returns:

Index of ‘type’ and column of ‘option’, containing the user-specified option and default options where none are speficied.

Return type:

pandas.DataFrame

VolFe.model_dependent_variables.fO22Fe3FeT(fO2, PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fe3+/FeT in the melt from fO2.

Parameters:
  • fO2 (float) – fO2 value in bar (NOT log10).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Minimum requirement is index of “fO2” and column label of “option”.

Returns:

Fe3+/FeT in the melt

Return type:

float

Model options for fO2

  • ‘Kress91A’ [default] Eq. (A-5, A-6) in Kress and Carmichael (1991) CMP 108:82-92 https//doi.org/10.1007/BF00307328

  • ‘Kress91’ Eq. (7) in Kress and Carmichael (1991) CMP 108:82-92 https//doi.org/10.1007/BF00307328

  • ‘ONeill18’ Eq. (9a) in O’Neill et al. (2018) EPSL 504:152-162 https//doi.org/10.1016/j.epsl.2018.10.0020012-821X

  • ‘Borisov18’ Eq. (4) from Borisov et al. (2018) CMP 173:98 https//doi.org/10.1007/s00410-018-1524-8

VolFe.model_dependent_variables.f_O2(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

fO2 from Fe3+/FeT in the melt.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Minimum requirement is index of “fO2” and column label of “option”.

Returns:

fO2 in bars

Return type:

float

Model options for fO2

  • ‘Kress91A’ [default] Eq. (A-5, A-6) in Kress and Carmichael (1991) CMP 108:82-92 https//doi.org/10.1007/BF00307328

  • ‘Kress91’ Eq. (7) in Kress and Carmichael (1991) CMP 108:82-92 https//doi.org/10.1007/BF00307328

  • ‘ONeill18’ Eq. (9a) in O’Neill et al. (2018) EPSL 504:152-162 https//doi.org/10.1016/j.epsl.2018.10.0020012-821X

  • ‘Borisov18’ Eq. (4) from Borisov et al. (2018) CMP 173:98 https//doi.org/10.1007/s00410-018-1524-8

VolFe.model_dependent_variables.gas_molar_volume(species, PT, models)[source]

Calculates molar volume of a given gas species.

Parameters:
  • species (str) – Gas species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options

Returns:

volume in kJ/kbar

Return type:

float

VolFe.model_dependent_variables.lny_SS(PT, Pcr, Tcr, models)[source]

Natural log of the fugacity coefficient using Shi & Saxena (1992).

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • Pcr (float) – Critical pressure in bars.

  • Tcr (float) – Critical temperature in K.

  • models (pandas.DataFrame) – Model options.

Returns:

Natural log of the fugacity coefficient

Return type:

float

VolFe.model_dependent_variables.make_df_and_add_model_defaults(models)[source]

Converts user-provided model configurations (e.g. [‘carbon dioxide’,’MORB_Dixon95’], [‘hydrogen sulfide’,’basaltic andesite’] into a structured pandas DataFrame, combined with default options for anything not specified.

Parameters:

models (list of [str, str]) – Each inner list contains two elements: the model type (str) and the user-specified option (str) for that model type.

Returns:

Index of ‘type’ and column of ‘option’, containing the user-specified option or the default option if none is provided.

Return type:

pandas.DataFrame

Model Parameters and Options

The following parameters can be overridden in models.

### Specifying species ###

COH_species: Specifying what COH species are present in the melt and vapor.
  • ‘yes_H2_CO_CH4_melt’ [default] Include H2mol (if H present), COmol (if C present), and/or CH4mol (if H and C present) as dissolved melt species.

  • ‘no_H2_CO_CH4_melt’ H2, CO, and/or CH4 are insoluble in the melt but they are still present in the vapor (H2 in the vapor if H present, CO in the vapor if C present, CH4 in the vapor if both H and C present).

  • ‘H2O-CO2 only’ The only species present in the vapor are H2O and CO2 and in the melt are H2OT and CO2T (i.e., no CO, H2, and/or CH4 in the melt or vapor).

H2S_m: Is H2S a dissolved melt species.
  • ‘True’ [default] Include H2Smol as a dissolved melt species.

  • ‘False’ H2Smol is insoluble in the melt.

species X: Chemical identity of species X, which defines its atomic mass.
  • ‘Ar’ [default] Species X is argon (i.e., atomic mass of ~40).

  • ‘Ne’ Species X is Ne (i.e., atomic mass of ~20).

Other noble gases not currently supported, but we can add them if you get in touch!

Hspeciation:
  • ‘none’ [default] Oxidised H in the melt only occurs as H2OT species (i.e., no OH-).

Only one option available currently, included for future development.

### Oxygen fugacity ###

fO2: Model for parameterisation of relationship between fO2 and Fe3+/FeT

See function fO2 for options.

NNObuffer: Model for the parameterisation for the fO2 value of the NNO buffer.

See function NNO for options.

FMQbuffer: Model for the parameterisation for the fO2 value of the FMQ buffer.

See function FMQ for options.

### Models for solubility and speciation constants ###

carbon dioxide: Model for the parameterisation of the CO2T solubility constant.

See function C_CO3 for options.

water: Model for the parameterisation for the H2O solubility constant.

See function C_H2O for options.

hydrogen: Model for the parameterisation of the H2 solubility constant.

See function C_H2 for options.

sulfide: Model for the parameterisation for the *S2- solubility constant.

See function C_S for options.

sulfate: Model for the parameterisation of the S6+ solubility constant.

See function C_SO4 for options.

hydrogen sulfide: Model for the parameterisation for the H2S solubility constant.

See function C_H2S for options.

methane: Model for the parameterisation of the CH4 solubility constant.

See function C_CH4 for options.

carbon monoxide: Model for the parameterisation of the CO solubility constant.

See function C_CO for options.

species X solubility: Model for the parameterisation of the X solubility constant.

See function C_X for options.

Cspeccomp: Model for the parameterisation of the speciation constant for CO2mol and CO32- in the melt.

See function K_COm for options.

Hspeccomp: Model for the parameterisation of the speciation constant for H2Omol and OH- in the melt.

See function K_HOm for options.

### Saturation conditions ###

SCSS: Model for parameterisation of the sulfide content at sulfide saturation (S2-CSS).

See function SCSS for options.

SCAS: Model for parameterisation of the sulfate content at anhydrite saturation (S6+CAS).

See function SCAS for options.

sulfur_saturation: Is sulfur allowed to form sulfide or anhydrite if sulfur content of the melt reaches saturation levels for these phases?
  • ‘False’ [default] melt ± vapor are the only phases present - results are metastable with respect to sulfide and anhydrite if they could saturate.

  • ‘True’ If saturation conditions for sulfide or anhydrite are met, melt sulfur content reflects this.

graphite_saturation: Is graphite allowed to form if the carbon content of the melt reaches saturation levels for graphite?
  • ‘False’ [default] melt ± vapor are the only phases present - results are metastable with respect to graphite if it could saturate.

  • ‘True’ If saturation conditions for graphite are met, melt carbon content reflects this.

### Fugacity coefficients ###

ideal_gas: Treat all vapor species as ideal gases (i.e., all fugacity coefficients = 1 at all P).
  • ‘False’ [default] At least some of the vapor species are not treated as ideal gases.

  • ‘True’ All fugacity coefficients = 1 at all P.

y_CO2: Model for the parameterisation of the CO2 fugacity coefficient.

See function y_CO2 for options.

y_SO2: Model for the parameterisation of the SO2 fugacity coefficient.

See function y_SO2 for options.

y_H2S: Model for the parameterisation of the H2S fugacity coefficient.

See function y_H2S for options.

y_H2: Model for the parameterisation of the H2 fugacity coefficient.

See function y_H2 for options.

y_O2: Model for the parameterisation of the O2 fugacity coefficient.

See function y_O2 for options.

y_S2: Model for the parameterisation of the S2 fugacity coefficient.

See function y_S2 for options.

y_CO: Model for the parameterisation of the CO fugacity coefficient.

See function y_CO for options.

y_CH4: Model for the parameterisation of the CH4 fugacity coefficient.

See function y_CH4 for options.

y_H2O: Model for the parameterisation of the H2O fugacity coefficient.

See function y_H2O for options.

y_OCS: Model for the parameterisation of the OCS fugacity coefficient.

See function y_OCS for options.

y_X: Model for the parameterisation of the X fugacity coefficient.

See function y_X for options.

### Equilibrium constants ###

KHOg: Model for the parameterisation of the equilibiurm constant for H2 + 0.5O2 ⇄ H2O.

See function KHOg for options.

KHOSg: Model for the parameterisation of the equilibiurm constant for 0.5S2 + H2O ⇄ H2S + 0.5O2.

See function KHOSg for options.

KOSg: Model for the parameterisation of the equilibiurm constant for 0.5S2 + O2 ⇄ SO2.

See function KOSg for options.

KOSg2: Model for the parameterisation of the equilibiurm constant for 0.5S2 + 1.5O2 ⇄ SO3.

See function KOSg2 for options.

KOCg: Model for the parameterisation of the equilibiurm constant for CO + 0.5O2 ⇄ CO2.

See function KOCg for options.

KCOHg: Model for the parameterisation of the equilibiurm constant for CH4 + 2O2 ⇄ CO2 + 2H2O.

See function KCOHg for options.

KOCSg: Model for the parameterisation of the equilibiurm constant for OCS.

See function KOCSg for options.

KCOs: Model for the parameterisation of the equilibiurm constant for Cgrahite + O2 ⇄ CO2.

See function KCOs for options.

carbonylsulfide: Reaction equilibrium KOCSg is for.
  • ‘COS’ [default] 2CO2 + OCS ⇄ 3CO + SO2

Only one option available currently, included for future development.

### Degassing calculation ###

bulk_composition: Specifying what the inputted melt composition (i.e., dissolved volatiles and fO2-estimate) corresponds to for the re/degassing calculation.
  • ‘melt-only’ [default] The inputted melt composition (i.e., dissolved volatiles) represents the bulk system - there is no vapor present. The fO2-estimate is calculated at Pvsat for this melt composition.

  • ‘melt+vapor_wtg’ The inputted melt composition (i.e., dissolved volatiles) is in equilibrium with a vapor phase. The amount of vapor as weight fraction gas (wtg) is specified in the inputs. The bulk system composition will be calculated by calculating Pvsat and the vapor composition given the input composition.

  • ‘melt+vapor_initialCO2’ The inputted melt composition (i.e., dissolved volatiles) is in equilibrium with a vapor phase. The initial CO2 content of the melt (i.e., before degassing) is specified in the inputs. The bulk system composition will be calculated by calculating Pvsat and the vapor composition given the input composition. The amount of vapor present is calculated using the given initial CO2.

starting_P: Determining the starting pressure for a re/degassing calculation.
  • ‘Pvsat’ [default] Calculation starts at Pvsat for the inputted melt composition (i.e., dissolved volatiles).

Only one option available currently, included for future development.

gassing_style: Does the bulk composition of the system (including oxygen) remain constant during the re/degassing calculation.
  • ‘closed’ [default] The bulk composition of the system (inc. oxygen) is constant during the re/degassing calculation - vapor and melt remain in chemical equilibrium throughout.

  • ‘open’ At each pressure-step, the vapor in equilibrium with the melt is removed (or added for regassing), such that the bulk composition of the system changes. This does not refer to being externally buffered in terms of fO2.

gassing_direction: Is pressure increasing or decreasing from the starting pressure.
  • ‘degas’ [default] Pressure progressively decreases for isothermal, polybaric calculations (i.e., degassing).

  • ‘regas’ Pressure progressively increases for isothermal, polybaric calculations (i.e., regassing).

P_variation: Is pressure varying during the calculation?
  • ‘polybaric’ [default] Pressure progressively changes during the calculation.

Only one option available currently, included for future development.

T_variation: Is temperature varying during the calculation?
  • ‘isothermal’ [default] Temperature is constant during the calculation.

Only one option available currently, included for future development.

eq_Fe: Does iron in the melt equilibrate with fO2.
  • ‘yes’ [default] Iron equilibrates with fO2

Only one option available currently, included for future development.

### Other ###

density: Model for parameterisation of melt density.

See function melt_density for options.

print status: Specifies whether some sort of status information during the calculation is outputted to let you know progress.
  • ‘False’ [default] No information about calculation progress is printed.

  • ‘True’ Some information about calculation progress is printed.

output csv: Specicies whether a csv of the outputted dataframe is automatically saved at the end of the calculation.
  • ‘True’ [default] csv is outputted.

  • ‘False’ csv is not outputted.

### In development ###

For now, just leave them as their default option and everything should work fine!

isotopes

default: ‘no’

crystallisation

default: ‘no’

mass_volume

default: ‘mass’

calc_sat

default: ‘fO2_melt’

bulk_O

default: ‘exc_S’

error

default: 0.1

sulfur_is_sat

default: ‘no’

solve_species

default: ‘auto’

setup

default: ‘False’

high precision

default: ‘False’

VolFe.model_dependent_variables.make_models_df(models)[source]

Creates the model options DataFrame.

Parameters:

models (list of [str, str]) – Each inner list contains two elements: the model type (str) and the user-specified option (str) for that model type.

Returns:

Index of ‘type’ and column of ‘option’ containing the user-specified option. Default options are not added if no option is provided.

Return type:

pandas.DataFrame

VolFe.model_dependent_variables.melt_density(PT, melt_wf, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Melt density from melt composition.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • melt_wf (dict) – Melt composition (SiO2, TiO2, etc.).

  • models (pandas.DataFrame) – Minimum requirement is index of “density” and column label of “option”.

Returns:

melt density in g/cm3

Return type:

float

Model options for density

  • ‘DensityX’ [default] DensityX from Iacovino & Till (2019) Volcanica 2(1):1-10 https//doi.org/10.30909/vol.02.01.0110

Only one option available currently, included for future development.

VolFe.model_dependent_variables.parameters_Holland91(species, PT, models)[source]

Parameters for (simplified) CORK equations in Holland & Powell (1991) CMP = 109:265-273 https://doi.org/10.1007/BF00306484

Parameters:
  • species (str) – Species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options.

Returns:

a, b, c, d, p0

Return type:

tuple(float,float,float,float,float)

VolFe.model_dependent_variables.vol_CORK(species, PT, models)[source]

Volume from ‘Appendix: Calculation of CORK volumes’ using eq. (4, A1) from Holland & Powell (1991) CMP 109:265-273 https://doi.org/10.1007/BF00306484

Parameters:
  • species (str) – Gas species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options.

Returns:

volume in kJ/kbar

Return type:

float

VolFe.model_dependent_variables.vol_sCORK(species, PT, models)[source]

Volume using eq. (7a) from Holland & Powell (1991) CMP 109:265-273 https://doi.org/10.1007/BF00306484

Parameters:
  • species (str) – Gas species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options.

Returns:

volume in kJ/kbar

Return type:

float

VolFe.model_dependent_variables.y_CH4(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for CH4.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_CH4” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for CH4

Return type:

float

Model options for y_CH4

  • ‘Shi92’ [default] Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_CO(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for CO.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_CO” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for CO

Return type:

float

Model options for y_CO

  • ‘Shi92’ [default] Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_CO2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for CO2.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_CO2” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for CO2

Return type:

float

Model options for y_CO2

Note: “ideal_gas” = “True” overides chosen option

VolFe.model_dependent_variables.y_CORK(species, PT, models)[source]

Fugacity coefficient using eq. (4,A1-3) from Holland & Powell (1991) CMP 109:265-273 https://doi.org/10.1007/BF00306484

Parameters:
  • species (str) – Species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options.

Returns:

Fugacity coefficient

Return type:

float

VolFe.model_dependent_variables.y_H2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for H2

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_H2” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for H2

Return type:

float

Model options for y_H2

  • ‘Shaw64’ [default] Eq. (4) from Shaw & Wones (1964) AmJSci 262:918-929

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_H2O(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for H2O.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_H2O” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for H2O

Return type:

float

Model options for y_H2O

  • ‘Holland91’ [default] Eq. (4,6,A1-3) and Table 1 (T > 673 K only) from Holland & Powell (1991) CMP 109:265-273 https://doi.org/10.1007/BF00306484

  • ‘Flowers79’ Flowers (1979) modified from code from MIMiC (Rasmussen et al., 2021: https://github.com/DJRgeoscience/MIMiC), originally from VolatileCalc (Newman & Lowenstern, 2001)

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_H2S(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for H2S.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_H2S” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for H2S

Return type:

float

Model options for y_H2S

  • ‘Shi92_Hughes23’ [default] Fig.S1 modified from Shi & Saxena (1992) Hughes et al. (2024) AmMin 109(3):422-438 https://doi.org/10.2138/am-2023-8739

  • ‘Shi92’ Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_O2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for O2.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_O2” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for O2

Return type:

float

Model options for y_O2

  • ‘Shi92’ [default] Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_OCS(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for OCS.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_OCS” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for OCS

Return type:

float

Model options for y_OCS

  • ‘Shi92’ [default] Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_S2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for S2.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_S2” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for S2

Return type:

float

Model options for y_S2

  • ‘Shi92’ [default] Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_SO2(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for SO2,

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_SO2” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for SO2

Return type:

float

Model options for y_SO2

  • ‘Shi92_Hughes23’ [default] Fig.S1 modified from Shi & Saxena (1992) from Hughes et al. (2023) JGSL 180(3) https://doi.org/10.1144/jgs2021-12

  • ‘Shi92’ Shi & Saxena (1992) AmMin 77(9-10):1038-1049

  • ‘ideal’ Treat as ideal gas, y = 1 at all P.

Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_SS(gas_species, PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient using Shi & Saxena (1992).

Parameters:
  • gas_species (string) – Name of gas species.

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Model options.

Returns:

Fugacity coefficient

Return type:

float

VolFe.model_dependent_variables.y_X(PT, models=                            option type                               COH_species     yes_H2_CO_CH4_melt H2S_m                         True species X                       Ar Hspeciation                   none fO2                       Kress91A ...                            ... error                          0.1 print status                 False output csv                    True setup                        False high precision               False  [78 rows x 1 columns])[source]

Fugacity coefficient for X.

Parameters:
  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

  • models (pandas.DataFrame) – Minimum requirement is index of “y_X” and “ideal_gas” and column label of “option”.

Returns:

Fugacity coefficient for X

Return type:

float

Model options for y_X

  • “ideal” Treat as ideal gas, y = 1 at all P.

Only one option available currently, included for future development. Note: “ideal_gas” = “True” overides chosen option.

VolFe.model_dependent_variables.y_sCORK(species, PT, models)[source]

Fugacity coefficient using eq. (8) from Holland & Powell (1991) CMP 109:265-273 https://doi.org/10.1007/BF00306484

Parameters:
  • species (str) – Species of interest (e.g., ‘H2O’, ‘CO2’).

  • PT (dict) – Pressure (bars) as “P” and temperature (‘C) as “T”.

Returns:

fugacity coefficient

Return type:

float