atmodeller.solubility package

Submodules

atmodeller.solubility._carbon_species module

Solubility laws for carbon species

For every law there should be a test in the test suite.

class atmodeller.solubility._carbon_species._CH4_basalt_ardia13

Bases: Solubility

CH4 in haplobasalt (Fe-free) silicate melt [Ardia et al., 2013]

Experiments conducted at 0.7-3 GPa and 1400-1450 C. Ardia et al. [2013, Equations 7a, 8], values for lnK0 and deltaV from the text.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._carbon_species.CH4_basalt_ardia13: Solubility = _CH4_basalt_ardia13()

CH4 in haplobasalt (Fe-free) silicate melt [Ardia et al., 2013]

Experiments conducted at 0.7-3 GPa and 1400-1450 C. Ardia et al. [2013, Equations 7a, 8], values for lnK0 and deltaV from the text.

class atmodeller.solubility._carbon_species._CO_basalt_armstrong15

Bases: Solubility

Volatiles in mafic melts under reduced conditions [Armstrong et al., 2015]

Experiments on Martian and terrestrial basalts at 1.2 GPa and 1400 C with variable fO2 from IW-3.65 to IW+1.46. Armstrong et al. [2015, Equation 10], log-scale linear fit for CO and includes dependence on total pressure. The fitting coefficients also use data from [Stanley et al., 2014] (experiments from 1-1.2 GPa).

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._carbon_species.CO_basalt_armstrong15: Solubility = _CO_basalt_armstrong15()

Volatiles in mafic melts under reduced conditions [Armstrong et al., 2015]

Experiments on Martian and terrestrial basalts at 1.2 GPa and 1400 C with variable fO2 from IW-3.65 to IW+1.46. Armstrong et al. [2015, Equation 10], log-scale linear fit for CO and includes dependence on total pressure. The fitting coefficients also use data from [Stanley et al., 2014] (experiments from 1-1.2 GPa).

class atmodeller.solubility._carbon_species._CO_basalt_yoshioka19

Bases: Solubility

Carbon in silicate melts [Yoshioka et al., 2019]

Experiments on carbon solubility in silicate melts (Fe-free) coexisting with graphite and CO-CO2 fluid phase at 3 GPa and 1500 C. Log-scale linear expression for solubility of CO in MORB in the abstract.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._carbon_species.CO_basalt_yoshioka19: Solubility = _CO_basalt_yoshioka19()

Carbon in silicate melts [Yoshioka et al., 2019]

Experiments on carbon solubility in silicate melts (Fe-free) coexisting with graphite and CO-CO2 fluid phase at 3 GPa and 1500 C. Log-scale linear expression for solubility of CO in MORB in the abstract.

class atmodeller.solubility._carbon_species._CO_rhyolite_yoshioka19

Bases: Solubility

Carbon in silicate melts [Yoshioka et al., 2019]

Experiments on carbon solubility in silicate melts (Fe-free) coexisting with graphite and CO-CO2 fluid phase at 3 GPa and 1500 C. Henry’s Law, their expression for solubility of CO in rhyolite in the abstract.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._carbon_species.CO_rhyolite_yoshioka19: Solubility = _CO_rhyolite_yoshioka19()

Carbon in silicate melts [Yoshioka et al., 2019]

Experiments on carbon solubility in silicate melts (Fe-free) coexisting with graphite and CO-CO2 fluid phase at 3 GPa and 1500 C. Henry’s Law, their expression for solubility of CO in rhyolite in the abstract.

class atmodeller.solubility._carbon_species._CO2_basalt_dixon95

Bases: Solubility

CO2 in MORB liquids [Dixon et al., 1995]

Dixon et al. [1995, Equation 6] for mole fraction of dissolved carbonate (CO3^2-) and then converting to ppmw for CO2 experiments conducted at 1200 C, 210-980 bars with mixed H2O-CO2 vapor phase (CO2 vapor mole fraction varied from 0.42-0.97).

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._carbon_species.CO2_basalt_dixon95: Solubility = _CO2_basalt_dixon95()

CO2 in MORB liquids [Dixon et al., 1995]

Dixon et al. [1995, Equation 6] for mole fraction of dissolved carbonate (CO3^2-) and then converting to ppmw for CO2 experiments conducted at 1200 C, 210-980 bars with mixed H2O-CO2 vapor phase (CO2 vapor mole fraction varied from 0.42-0.97).

atmodeller.solubility._hydrogen_species module

Solubility laws for hydrogen species

For every law there should be a test in the test suite.

atmodeller.solubility._hydrogen_species.H2_andesite_hirschmann12: Solubility = SolubilityPowerLawLog10(log10_constant=1.01058631, log10_exponent=0.60128868)

H2 in synthetic andesite [Hirschmann et al., 2012]

Log-scale linear fit to fH2 vs H2 concentration for andesite in Hirschmann et al. [2012, Table 2]. Experiments conducted from 0.7-3 GPa at 1400 C.

atmodeller.solubility._hydrogen_species.H2_basalt_hirschmann12: Solubility = SolubilityPowerLawLog10(log10_constant=1.10083602, log10_exponent=0.52413928)

H2 in synthetic basalt [Hirschmann et al., 2012]

Log-scale linear fit to fH2 vs. H2 concentration for basalt in Hirschmann et al. [2012, Table 2]. Experiments conducted from 0.7-3 GPa, 1400 C.

atmodeller.solubility._hydrogen_species.H2_silicic_melts_gaillard03: Solubility = SolubilityPowerLaw(constant=0.163, exponent=1.252)

Fe-H redox exchange in silicate glasses [Gaillard et al., 2003]

Power law fit for fH2 vs. H2 (ppm-wt) from Gaillard et al. [2003, Table 4] data. Experiments at pressures from 0.02-70 bar, temperatures from 300-1000C.

atmodeller.solubility._hydrogen_species.H2O_ano_dio_newcombe17: Solubility = SolubilityPowerLaw(constant=727.0, exponent=0.5)

H2O in anorthite-diopside-eutectic compositions [Newcombe et al., 2017]

Power law from Newcombe et al. [2017, Figure 5(A)] for anorthite-diopside glass. Experiments conducted at 1 atm and 1350 C. Melts equilibrated in 1 atm furnace with H2/CO2 gas mixtures that spanned fO2 from IW-3 to IW+4.8 and pH2/pH2O from 0.003-24.

atmodeller.solubility._hydrogen_species.H2O_basalt_dixon95: Solubility = SolubilityPowerLaw(constant=965.0, exponent=0.5)

H2O in MORB liquids [Dixon et al., 1995]

Refitted data to a power law by Paolo Sossi (fitting Dixon et al. [1995, Figure 4], TODO: CHECK). Experiments conducted at 1200 C, 200-717 bars with pure H2O.

atmodeller.solubility._hydrogen_species.H2O_basalt_mitchell17: Solubility = SolubilityPowerLaw(constant=258.946, exponent=0.669)

H2O in basaltic melt [Mitchell et al., 2017]

Refitted the H2O wt. % vs. fH2O fitted line from Mitchell et al. [2017, Figure 8] to a power-law. Experiments conducted at 1200 C and 1000 MPa total pressure. This fit includes data from their experiments and prior studies on H2O solubility in basaltic melt at 1200 C and P at or below 600 MPa.

atmodeller.solubility._hydrogen_species.H2O_lunar_glass_newcombe17: Solubility = SolubilityPowerLaw(constant=683.0, exponent=0.5)

H2O in lunar basalt [Newcombe et al., 2017]

Power law from Newcombe et al. [2017, Figure 5(A)] for Lunar glass. Experiments conducted at 1 atm and 1350 C. Melts equilibrated in 1-atm furnace with H2/CO2 gas mixtures that spanned fO2 from IW-3 to IW+4.8.

atmodeller.solubility._hydrogen_species.H2O_peridotite_sossi23: Solubility = SolubilityPowerLaw(constant=647.0, exponent=0.5)

H2O in peridotite liquids [Sossi et al., 2023]

Power law parameters in the abstract for peridotitic glasses. Experiments conducted at 2173 K and 1 bar and range of fO2 from IW-1.9 to IW+6.0.

class atmodeller.solubility._hydrogen_species._H2_chachan18(f_calibration: Any, T_calibration: Any, X_calibration: Any, T0: Any = 4000)

Bases: Solubility

H2 solubility [Chachan and Stevenson, 2018]

Parameters:
  • f_calibration – Calibration fugacity

  • T_calibration – Calibration temperature

  • X_calibration – Mass fraction at calibration conditions

  • T0 – Arrhenius temperature factor in K, which expresses the repulsive interaction of the molecule with magma. Defaults to 4000 K, which is the middle of the range the authors explore (from 3000 K to 5000 K).

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

f_calibration: float

Calibration fugacity

T_calibration: float

Calibration temperature

X_calibration: float

Mass fraction at calibration conditions

T0: float

Arrhenius temperature factor in K

A: float

Constant factor

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._hydrogen_species.H2_chachan18: Solubility = _H2_chachan18(   f_calibration=1500.0,   T_calibration=1673.0,   X_calibration=0.001,   T0=4000.0,   A=7.282319446095137e-06 )

H2 by combining theory and experiment [Chachan and Stevenson, 2018]

atmodeller.solubility._hydrogen_species.H2_kite19: Solubility = _H2_chachan18(   f_calibration=23986.03464911203,   T_calibration=1673.0,   X_calibration=0.0019,   T0=4000.0,   A=8.652789310524688e-07 )

H2 by combining theory and experiment [Kite et al., 2019].

atmodeller.solubility._other_species module

Solubility laws for other species

For every law there should be a test in the test suite.

atmodeller.solubility._other_species.Cl2_ano_dio_for_thomas21: Solubility = SolubilityPowerLaw(constant=1405200.0, exponent=0.5)

Cl in silicate melts [Thomas and Wood, 2021]

Solubility law from Thomas and Wood [2021, Figure 4] showing relation between dissolved Cl concentration and Cl fugacity for CMAS composition (An50Di28Fo22 (anorthite-diopside-forsterite), Fe-free low-degree mantle melt) at 1400 C and 1.5 GPa. Experiments from 0.5-2 GPa and 1200-1500 C.

atmodeller.solubility._other_species.Cl2_basalt_thomas21: Solubility = SolubilityPowerLaw(constant=785600.0, exponent=0.5)

Cl in silicate melts [Thomas and Wood, 2021]

Solubility law from Thomas and Wood [2021, Figure 4] showing relation between dissolved Cl concentration and Cl fugacity for Icelandic basalt at 1400 C and 1.5 GPa. Experiments from 0.5-2 GPa and 1200-1500 C.

atmodeller.solubility._other_species.He_basalt_jambon86: Solubility = SolubilityPowerLaw(constant=0.100065, exponent=1.0)

Solubility of He in tholeittic basalt melt [Jambon et al., 1986]

Experiments determined Henry’s law solubility constant in tholetiitic basalt melt at 1 bar and 1250-1600 C. Using Henry’s Law solubility constant for He from the abstract, convert from STP units to mol/g*bar.

atmodeller.solubility._other_species.Ar_basalt_jambon86: Solubility = SolubilityPowerLaw(constant=0.10522017857142857, exponent=1.0)

Solubility of Ar in tholeittic basalt melt [Jambon et al., 1986]

Experiments determined Henry’s law solubility constant in tholetiitic basalt melt at 1 bar and 1250-1600 C. Using Henry’s Law solubility constant for Ar from the abstract, convert from STP units to mol/g*bar.

atmodeller.solubility._other_species.Ne_basalt_jambon86: Solubility = SolubilityPowerLaw(constant=0.22521986607142858, exponent=1.0)

Solubility of Ne in tholeittic basalt melt [Jambon et al., 1986]

Experiments determined Henry’s law solubility constant in tholetiitic basalt melt at 1 bar and 1250-1600 C. Using Henry’s Law solubility constant for Ne from the abstract, convert from STP units to mol/g*bar.

atmodeller.solubility._other_species.Kr_basalt_jambon86: Solubility = SolubilityPowerLaw(constant=0.11222946428571429, exponent=1.0)

Solubility of Kr in tholeittic basalt melt [Jambon et al., 1986]

Experiments determined Henry’s law solubility constant in tholetiitic basalt melt at 1 bar and 1250-1600 C. Using Henry’s Law solubility constant for Kr from the abstract, convert from STP units to mol/g*bar.

atmodeller.solubility._other_species.Xe_basalt_jambon86: Solubility = SolubilityPowerLaw(constant=0.09964200892857143, exponent=1.0)

Solubility of Xe in tholeittic basalt melt [Jambon et al., 1986]

Experiments determined Henry’s law solubility constant in tholetiitic basalt melt at 1 bar and 1250-1600 C. Using Henry’s Law solubility constant for Xe from the abstract, convert from STP units to mol/g*bar.

class atmodeller.solubility._other_species._N2_basalt_bernadou21

Bases: Solubility

N2 in basaltic silicate melt [Bernadou et al., 2021]

Bernadou et al. [2021, Equation 18] and using Bernadou et al. [2021, Equations 19-20] and the values for the thermodynamic constants from Bernadou et al. [2021, Table 6]. Experiments on basaltic samples at fluid saturation in C-H-O-N system, pressure range: 0.8-10 kbar, temperature range: 1200-1300 C; fO2 range: IW+4.9 to IW-4.7. Using their experimental results and a database for N concentrations at fluid saturation from 1 bar to 10 kbar, calibrated their solubility law.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

class atmodeller.solubility._other_species._N2_basalt_dasgupta22(xsio2: Any = 0.56, xal2o3: Any = 0.11, xtio2: Any = 0.01)

Bases: Solubility

N2 in silicate melts [Dasgupta et al., 2022]

Using Dasgupta et al. [2022, Equation 10], composition parameters from Dasgupta et al. [2022, Figure 8], and Iron-wustite buffer (logIW_fugacity) from Hirschmann et al. [2008], O'Neill and Pownceby [1993].

[Dasgupta et al., 2022] performed experiments on 80:20 synthetic basalt-Si3N4 mixture at 1.5-3.0 GPa and 1300-1600 C fO2 from ~IW-3 to IW-4. They combined this data with prior studies to derive their N solubility law (Dasgupta et al. [2022, Equation 10] and Figure 6). The combined set of experiments for which the solubility law is based on span pressures from 1 atm - 8.2 GPa, temperatures from 1050-2327 C, and fO2 from -8.3 to +8.7 relative to IW.

Note that the IW redox buffer is evaluated at the pressure of interest.

Parameters:
  • xsio2 – Mole fraction of SiO2. Defaults to 0.56.

  • xal2o3 – Mole fraction of Al2O3. Defaults to 0.11.

  • xtio2 – Mole fraction of TiO2. Defaults to 0.01.

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

xsio2: float

Mole fraction of SiO2

xal2o3: float

Mole fraction of Al2O3

xtio2: float

Mole fraction of TiO2

_buffer: RedoxBufferProtocol
concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._other_species.N2_basalt_dasgupta22: Solubility = _N2_basalt_dasgupta22(   xsio2=0.56,   xal2o3=0.11,   xtio2=0.01,   _buffer=IronWustiteBufferHirschmann(     log10_shift=f64[],     evaluation_pressure=None,     calibration=ExperimentalCalibration(pressure_max=1000000.0),     low_temperature_buffer=IronWustiteBufferHirschmann08(       log10_shift=f64[],       evaluation_pressure=None,       calibration=ExperimentalCalibration(pressure_max=275000.0)     ),     high_temperature_buffer=IronWustiteBufferHirschmann21(       log10_shift=f64[],       evaluation_pressure=None,       calibration=ExperimentalCalibration(         temperature_min=1000.0, pressure_max=1000000.0       ),       a=(6.844864, 0.1175691, 0.001143873, 0.0, 0.0),       b=(0.0005791364, -0.0002891434, -2.737171e-07, 0.0, 0.0),       c=(-7.971469e-05, 3.198005e-05, 0.0, 1.059554e-10, 2.014461e-07),       d=(-27690.02, 528.5977, -2.919275, 0.0, 0.0),       e=(8.463095, -0.003000307, 7.213445e-05, 0.0, 0.0),       f=(0.001148738, -9.352312e-05, 5.161592e-07, 0.0, 0.0),       g=(-0.0007448624, -6.329325e-06, 0.0, -1.407339e-10, 0.0001830014),       h=(-27820.82, 528.5977, -0.8473231, 0.0, 0.0),       x=(-18.64, 0.04359, -5.069e-06)     )   ) )

N2 in basaltic silicate melt [Bernadou et al., 2021]

Bernadou et al. [2021, Equation 18] and using Bernadou et al. [2021, Equations 19-20] and the values for the thermodynamic constants from Bernadou et al. [2021, Table 6]. Experiments on basaltic samples at fluid saturation in C-H-O-N system, pressure range: 0.8-10 kbar, temperature range: 1200-1300 C; fO2 range: IW+4.9 to IW-4.7. Using their experimental results and a database for N concentrations at fluid saturation from 1 bar to 10 kbar, calibrated their solubility law.

class atmodeller.solubility._other_species._N2_basalt_libourel03

Bases: Solubility

N2 in basalt (tholeiitic) magmas [Libourel et al., 2003]

Libourel et al. [2003, Equation 23], includes dependencies on fN2 and fO2. Experiments conducted at 1 atm and 1425 C (two experiments at 1400 C), fO2 from IW-8.3 to IW+8.7 using mixtures of CO, CO2 and N2 gases.

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._other_species.N2_basalt_libourel03: Solubility = _N2_basalt_libourel03()

N2 in basalt (tholeiitic) magmas [Libourel et al., 2003]

Libourel et al. [2003, Equation 23], includes dependencies on fN2 and fO2. Experiments conducted at 1 atm and 1425 C (two experiments at 1400 C), fO2 from IW-8.3 to IW+8.7 using mixtures of CO, CO2 and N2 gases.

atmodeller.solubility._sulfur_species module

Solubility laws for sulfur species

For every law there should be a test in the test suite.

class atmodeller.solubility._sulfur_species._S2_sulfate_andesite_boulliung23

Bases: Solubility

Sulfur as sulfate SO4^2-/S^6+ in andesite [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract of Boulliung and Wood [2022] and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for andesite from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfate_andesite_boulliung23: Solubility = _S2_sulfate_andesite_boulliung23()

Sulfur as sulfate SO4^2-/S^6+ in andesite [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract of Boulliung and Wood [2022] and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for andesite from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

class atmodeller.solubility._sulfur_species._S2_sulfide_andesite_boulliung23

Bases: Solubility

Sulfur as sulfide (S^2-) in andesite [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt.% and sulfide capacity (C_S2-). Composition for andesite from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfide_andesite_boulliung23: Solubility = _S2_sulfide_andesite_boulliung23()

Sulfur as sulfide (S^2-) in andesite [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt.% and sulfide capacity (C_S2-). Composition for andesite from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

class atmodeller.solubility._sulfur_species._S2_andesite_boulliung23

Bases: Solubility

S2 in andesite accounting for both sulfide and sulfate [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

_sulfide: Solubility
_sulfate: Solubility
concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_andesite_boulliung23: Solubility = _S2_andesite_boulliung23(   _sulfide=_S2_sulfide_andesite_boulliung23(),   _sulfate=_S2_sulfate_andesite_boulliung23() )

S2 in andesite accounting for both sulfide and sulfate [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

class atmodeller.solubility._sulfur_species._S2_sulfate_basalt_boulliung23

Bases: Solubility

Sulfur in basalt as sulfate, SO4^2-/S^6+ [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for Basalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm pressure, temperatures from 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfate_basalt_boulliung23: Solubility = _S2_sulfate_basalt_boulliung23()

Sulfur in basalt as sulfate, SO4^2-/S^6+ [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for Basalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm pressure, temperatures from 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

class atmodeller.solubility._sulfur_species._S2_sulfide_basalt_boulliung23

Bases: Solubility

Sulfur in basalt as sulfide (S^2-) [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt% and sulfide capacity (C_S2-). Composition for basalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm pressure and temperatures from 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfide_basalt_boulliung23: Solubility = _S2_sulfide_basalt_boulliung23()

Sulfur in basalt as sulfide (S^2-) [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt% and sulfide capacity (C_S2-). Composition for basalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm pressure and temperatures from 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

class atmodeller.solubility._sulfur_species._S2_basalt_boulliung23

Bases: Solubility

Sulfur in basalt due to sulfide and sulfate dissolution [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

_sulfide: Solubility
_sulfate: Solubility
concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_basalt_boulliung23: Solubility = _S2_basalt_boulliung23(   _sulfide=_S2_sulfide_basalt_boulliung23(),   _sulfate=_S2_sulfate_basalt_boulliung23() )

Sulfur in basalt due to sulfide and sulfate dissolution [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

class atmodeller.solubility._sulfur_species._S2_sulfate_trachybasalt_boulliung23

Bases: Solubility

Sulfur as sulfate SO4^2-/S^6+ in trachybasalt [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract of Boulliung and Wood [2022] and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for trachybasalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfate_trachybasalt_boulliung23: Solubility = _S2_sulfate_trachybasalt_boulliung23()

Sulfur as sulfate SO4^2-/S^6+ in trachybasalt [Boulliung and Wood, 2022, Boulliung and Wood, 2023]

Using the first equation in the abstract of Boulliung and Wood [2022] and the corrected expression for sulfate capacity (C_S6+) in Boulliung and Wood [2023]. Composition for trachybasalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K for silicate melts equilibrated with Air/SO2 mixtures.

class atmodeller.solubility._sulfur_species._S2_sulfide_trachybasalt_boulliung23

Bases: Solubility

Sulfur as sulfide (S^2-) in trachybasalt [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt.% and sulfide capacity (C_S2-). Composition for trachybasalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_sulfide_trachybasalt_boulliung23: Solubility = _S2_sulfide_trachybasalt_boulliung23()

Sulfur as sulfide (S^2-) in trachybasalt [Boulliung and Wood, 2023]

Using expressions in the abstract for S wt.% and sulfide capacity (C_S2-). Composition for trachybasalt from Boulliung and Wood [2022, Table 1]. Experiments conducted at 1 atm, 1473-1773 K in a controlled CO-CO2-SO2 atmosphere fO2 conditions were greater than 1 log unit below FMQ.

class atmodeller.solubility._sulfur_species._S2_trachybasalt_boulliung23

Bases: Solubility

Sulfur in trachybasalt by sulfide and sulfate dissolution [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

_sulfide: Solubility
_sulfate: Solubility
concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility._sulfur_species.S2_trachybasalt_boulliung23: Solubility = _S2_trachybasalt_boulliung23(   _sulfide=_S2_sulfide_trachybasalt_boulliung23(),   _sulfate=_S2_sulfate_trachybasalt_boulliung23() )

Sulfur in trachybasalt by sulfide and sulfate dissolution [Boulliung and Wood, 2022, Boulliung and Wood, 2023, Boulliung and Wood, 2023]

atmodeller.solubility.core module

Core classes and functions for solubility laws

class atmodeller.solubility.core.Solubility

Bases: Module

Solubility interface

jax_concentration() is defined in order to allow arguments to be passed by position to lax.switch.

abstractmethod concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
class atmodeller.solubility.core.NoSolubility

Bases: Solubility

No solubility

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray | None = None) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

class atmodeller.solubility.core.SolubilityPowerLaw(constant: Any, exponent: Any)

Bases: Solubility

A solubility power law

Parameters:
  • constant – Constant

  • exponent – Exponent

constant: float

Constant

exponent: float

Exponent

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *args, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

class atmodeller.solubility.core.SolubilityPowerLawLog10(log10_constant: Any, log10_exponent: Any)

Bases: Solubility

A solubility power law with log10 coefficients

Parameters:
  • log10_constant – Log10 constant

  • log10_exponent – Log10 exponent

log10_constant: float

Log10 constant

_abc_impl = <_abc._abc_data object>
jax_concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Wrapper to pass concentration arguments by position to use with JAX lax.switch

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K

  • pressure – Pressure in bar

  • fO2\(\log_{10} f\rm{O}_2\) in bar

Returns:

Concentration in ppmw

log10_exponent: float

Log10 exponent

concentration(fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, **kwargs) Array

Concentration in ppmw

Parameters:
  • fugacity – Fugacity in bar

  • temperature – Temperature in K. Defaults to None for not used.

  • pressure – Pressure in bar. Defaults to None for not used.

  • fO2\(\log_{10} f\rm{O}_2\) in bar. Defaults to None for not used.

Returns:

Concentration in ppmw

atmodeller.solubility.core.fO2_temperature_correction(fO2: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, *, temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, reference_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array

Applies a temperature correction to \(\log_{10} f\rm{O}_2\).

Some experimentally derived solubility laws operate on absolute \(\log_{10} f\rm{O}_2\), which depends on temperature and pressure. A temperature correction has to be applied to maintain the same \(\log_{10} f\rm{O}_2\) shift at arbitrary temperature.

Parameters:
  • fO2 – Absolute oxygen fugacity at temperature in bar

  • temperature – Temperature in K

  • pressure – Absolute pressure in bar

  • reference_temperature – Reference temperature, which is usually the temperature at which the experiment was performed.

Returns:

Adjusted \(\log_{10} f\rm{O}_2\)

atmodeller.solubility.library module

Solubility library

Listing 2 Usage
     from atmodeller.solubility.library import get_solubility_models

     sol_models = get_solubility_models()
     H2O_peridotite = sol_models["H2O_peridotite_sossi23"]
     # Evaluate solubility (concentration) at 2 bar fH2O and 2000 K
     concentration = H2O_peridotite.concentration(2, temperature=2000)
     print(concentration)
atmodeller.solubility.library.get_solubility_models() dict[str, Solubility]

Gets a dictionary of solubility models

Returns:

Dictionary of solubility models

Module contents

Solubility package