Skip to content

Commit

Permalink
updated calibrants
Browse files Browse the repository at this point in the history
  • Loading branch information
bobmyhill committed Nov 12, 2024
1 parent b65e918 commit 5ec72a4
Show file tree
Hide file tree
Showing 6 changed files with 151 additions and 5 deletions.
4 changes: 2 additions & 2 deletions burnman/calibrants/Decker_1971.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def _pressure_Decker_NaCl(volume, temperature, params):
+ 9 * params["Kprime_0"] ** 2
- 63 * params["Kprime_0"]
+ 143
)
) / 6.0
f = 0.5 * ((volume / params["V_0"]) ** (-2 / 3) - 1)
K_T = (
params["K_0"]
Expand All @@ -55,7 +55,7 @@ def _pressure_Decker_NaCl(volume, temperature, params):
_params_Decker_NaCl = {
"V_0": 2.7013e-05,
"K_0": 23.7,
"Kprime_0": 5.04, # 4.91 in Matsui (2012), however 5.04 is required to reproduce values in Table 4.
"Kprime_0": 4.91,
"Kprime_prime_0": -0.267,
"Debye_0": 279.0,
"grueneisen_0": 1.59,
Expand Down
41 changes: 40 additions & 1 deletion burnman/calibrants/Fei_2007.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from burnman.eos.birch_murnaghan import BirchMurnaghanBase as BM3
from burnman.eos.mie_grueneisen_debye import MGDBase
from burnman.classes.calibrant import Calibrant

from burnman.utils.unitcell import molar_volume_from_unit_cell_volume

"""
Fei_2007
Expand Down Expand Up @@ -61,3 +61,42 @@ def _pressure_Fei_Pt(volume, temperature, params):
}

Calibrant.__init__(self, _pressure_Fei_Pt, "pressure", _params_Fei_Pt)


class Au(Calibrant):
"""
The Au pressure standard reported by
Fei et al. (2007; https://doi.org/10.1073/pnas.0609013104).
"""

def __init__(self):
def _pressure_Fei_Au(volume, temperature, params):

# Isothermal pressure (GPa)
pressure_model = Vinet()
P0 = pressure_model.pressure(params["T_0"], volume, params)

# Thermal pressure
thermal_model = MGDBase()
Pth0 = thermal_model._thermal_pressure(params["T_0"], volume, params)
Pth = thermal_model._thermal_pressure(temperature, volume, params)

# Total pressure
P = P0 + Pth - Pth0

return P

_params_Fei_Au = {
"V_0": molar_volume_from_unit_cell_volume(67.850, 4.0),
"K_0": 167.0e9,
"Kprime_0": 6.00,
"Debye_0": 170.0,
"grueneisen_0": 2.97,
"q_0": 0.6,
"n": 1.0,
"T_0": 300.0,
"P_0": 0.0,
"Z": 4.0,
}

Calibrant.__init__(self, _pressure_Fei_Au, "pressure", _params_Fei_Au)
43 changes: 43 additions & 0 deletions burnman/calibrants/Holmes_1989.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# This file is part of BurnMan - a thermoelastic and thermodynamic toolkit for
# the Earth and Planetary Sciences
# Copyright (C) 2012 - 2024 by the BurnMan team, released under the GNU
# GPL v2 or later.

"""
Holmes_1989
^^^^^^^^^^^
"""

from burnman.classes.calibrant import Calibrant
import numpy as np
from burnman.utils.unitcell import molar_volume_from_unit_cell_volume


class Pt(Calibrant):
"""
The Pt pressure standard reported by
Holmes et al. (1989; https://doi.org/10.1063/1.344177).
"""

def __init__(self):
def _pressure(volume, temperature, params):
X = np.power(volume / params["V_0"], 1.0 / 3.0)
P_300 = (
3.0
* params["beta_T"]
* (1.0 - X)
/ (X * X)
* np.exp(params["eta"] * (1.0 - X))
)

return P_300 + params["alpha_T"] * params["beta_T"] * (temperature - 300.0)

_params = {
"V_0": molar_volume_from_unit_cell_volume(60.38, 4.0),
"beta_T": 798.31e9 / 3.0,
"eta": 7.2119,
"beta_prime_T": (7.2119 / 1.5) + 1.0,
"alpha_T": 2.61e-5,
}

Calibrant.__init__(self, _pressure, "pressure", _params)
3 changes: 1 addition & 2 deletions burnman/calibrants/Matsui_2012.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
# Copyright (C) 2012 - 2024 by the BurnMan team, released under the GNU
# GPL v2 or later.

from burnman.eos.vinet import Vinet
from burnman.eos.mie_grueneisen_debye import MGDBase
from burnman.classes.calibrant import Calibrant

Expand All @@ -30,7 +29,7 @@ def _pressure_Matsui_NaCl(volume, temperature, params):
+ 9 * params["Kprime_0"] ** 2
- 63 * params["Kprime_0"]
+ 143
)
) / 6.0
f = 0.5 * ((volume / params["V_0"]) ** (-2 / 3) - 1)
K_T = (
params["K_0"]
Expand Down
61 changes: 61 additions & 0 deletions burnman/calibrants/Tsuchiya_2003.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# This file is part of BurnMan - a thermoelastic and thermodynamic toolkit for
# the Earth and Planetary Sciences
# Copyright (C) 2012 - 2024 by the BurnMan team, released under the GNU
# GPL v2 or later.

import numpy as np
from burnman.classes.calibrant import Calibrant
from scipy.interpolate import RegularGridInterpolator

"""
Tsuchiya_2003
^^^^^^^^^^^^^
"""


class Au(Calibrant):
"""
The Au pressure standard reported by
Tsuchiya (2003; https://doi.org/10.1029/2003JB002446).
"""

def __init__(self):

grid_compressions = np.linspace(0.0, 0.34, 18)
grid_temperatures = np.array([300.0, 500.0, 1000.0, 1500.0, 2000.0, 2500.0])
grid_pressures = np.array(
[
[0.00, 1.52, 5.35, 9.19, 13.04, 16.88],
[3.55, 5.04, 8.78, 12.54, 16.29, 20.05],
[7.68, 9.13, 12.79, 16.45, 20.12, 23.79],
[12.42, 13.83, 17.40, 20.98, 24.56, 28.14],
[17.86, 19.23, 22.71, 26.20, 29.70, 33.19],
[24.12, 25.46, 28.85, 32.25, 35.66, 39.07],
[31.30, 32.60, 35.90, 39.22, 42.54, 45.86],
[39.52, 40.78, 43.99, 47.22, 50.45, 53.68],
[48.94, 50.17, 53.29, 56.43, 59.58, 62.72],
[59.76, 60.95, 63.98, 67.03, 70.09, 73.15],
[72.11, 73.26, 76.21, 79.18, 82.14, 85.11],
[86.36, 87.48, 90.34, 93.22, 96.10, 98.98],
[102.65, 103.73, 106.50, 109.29, 112.08, 114.88],
[121.38, 122.42, 125.10, 127.80, 130.51, 133.21],
[142.98, 143.99, 146.58, 149.19, 151.81, 154.43],
[167.77, 168.74, 171.24, 173.77, 176.30, 178.83],
[196.48, 197.41, 199.83, 202.26, 204.70, 207.15],
[229.56, 230.45, 232.78, 235.13, 237.49, 239.84],
]
)

self.interpolate_pressure = RegularGridInterpolator(
(grid_compressions, grid_temperatures),
grid_pressures,
bounds_error=False,
fill_value=None,
method="cubic",
)

def _pressure(volume, temperature, params):
compression = 1.0 - volume / params["V_0"]
return self.interpolate_pressure([compression, temperature])[0] * 1.0e9

Calibrant.__init__(self, _pressure, "pressure", {"V_0": 10.207e-06})
4 changes: 4 additions & 0 deletions burnman/calibrants/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
- :mod:`~burnman.calibrants.Dubrovinsky_1998`
- :mod:`~burnman.calibrants.Fei_2007`
- :mod:`~burnman.calibrants.Fei_2016`
- :mod:`~burnman.calibrants.Holmes_1989`
- :mod:`~burnman.calibrants.Huang_2016`
- :mod:`~burnman.calibrants.LeGodec_2000`
- :mod:`~burnman.calibrants.Litasov_2013`
Expand All @@ -35,6 +36,7 @@
- :mod:`~burnman.calibrants.Speziale_2001`
- :mod:`~burnman.calibrants.Tange_2009`
- :mod:`~burnman.calibrants.Tateno_2019`
- :mod:`~burnman.calibrants.Tsuchiya_2003`
- :mod:`~burnman.calibrants.Walker_2002`
- :mod:`~burnman.calibrants.Zeng_2010`
- :mod:`~burnman.calibrants.Zha_2004`
Expand All @@ -56,6 +58,7 @@
from . import Dubrovinsky_1998
from . import Fei_2007
from . import Fei_2016
from . import Holmes_1989
from . import Huang_2016
from . import LeGodec_2000
from . import Litasov_2013
Expand All @@ -71,6 +74,7 @@
from . import Speziale_2001
from . import Tange_2009
from . import Tateno_2019
from . import Tsuchiya_2003
from . import Walker_2002
from . import Zeng_2010
from . import Zha_2004
Expand Down

0 comments on commit 5ec72a4

Please sign in to comment.