Equation of State Classes and Functions

Isothermal Equations of State

Base class

class burnman.eos.IsothermalEquationOfState[source]

Bases: EquationOfState

entropy(pressure, temperature, volume, params)[source]

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

thermal_expansivity(pressure, temperature, volume, params)[source]

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

gibbs_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Gibbs energy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Isothermal bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

shear_modulus(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Shear modulus of the mineral. \([Pa]\)

Return type:

float

validate_parameters(params)

The params object is just a dictionary associating mineral physics parameters for the equation of state. Different equation of states can have different parameters, and the parameters may have ranges of validity. The intent of this function is twofold. First, it can check for the existence of the parameters that the equation of state needs, and second, it can check whether the parameters have reasonable values. Unreasonable values will frequently be due to unit issues (e.g., supplying bulk moduli in GPa instead of Pa). In the base class this function does nothing, and an equation of state is not required to implement it. This function will not return anything, though it may raise warnings or errors.

Parameters:

params (dict) – Dictionary containing material parameters required by the equation of state.

volume(pressure, temperature, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Molar volume of the mineral \([m^3]\).

Return type:

float

birch murnaghan

class burnman.eos.birch_murnaghan.BM3[source]

Bases: BirchMurnaghanBase

The third order Birch-Murnaghan isothermal equation of state. The negative finite-strain (or compression) is defined as

\[f=\frac{1}{2}\left[\left(\frac{V}{V_0}\right)^{-2/3}-1\right]\]

where \(V\) is the volume at a given pressure and \(V_0\) is the volume at a reference state (\(P = 10^5\) Pa , \(T\) = 300 K). The pressure and elastic moduli are derived from a third-order Taylor expansion of Helmholtz free energy in \(f\) and evaluating the appropriate volume and strain derivatives (e.g., [Poi91]). For an isotropic material one obtains for the pressure, isothermal bulk modulus, and shear modulus:

\[P = 3 K_0 f \left(1+2f\right)^{5/2} \left[1+\frac{3}{2} \left(K_0^\prime -4\right) f\right],\]
\[\begin{split}K_{T} = (1+2f)^{5/2} \biggl[ & K_0+(3K_0{K}^\prime_{0}-5K_0)f\\ &+ \frac{27}{2}(K_0{K}^\prime_{0}-4K_0)f^2 \biggr],\end{split}\]
\[\begin{split}G = (1+& 2f)^{5/2} \biggl[G_0+(3K_0{G}^\prime_{0}-5G_0)f\\ & +(6K_0{G}^\prime_{0}-24K_0-14G_{0} + \frac{9}{2}K_{0}{K}^\prime_{0})f^2 \biggr].\end{split}\]

Here \(K_0\) and \(G_0\) are the reference bulk modulus and shear modulus and \(K_0^\prime\) and \({G}^\prime_{0}\) are the derivative of the respective moduli with respect to pressure.

Parameter

Description

Units

F_0

Reference Helmholtz free energy

J/mol

P_0

Reference pressure

Pa

V_0

Reference volume

\(\textrm{m}^3\)

K_0

Reference isothermal bulk modulus

Pa

Kprime_0

Pressure derivative of the isothermal bulk modulus at the reference state

Dimensionless

G_0

Reference shear modulus

Pa

Gprime_0

Pressure derivative of the shear modulus at the reference state

Dimensionless

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus \(G\) of the mineral. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

class burnman.eos.birch_murnaghan.BM3Shear2[source]

Bases: BirchMurnaghanBase

The third order Birch-Murnaghan isothermal equation of state with second order expansion for the shear modulus. Do not use this unless you have a good reason to.

The negative finite-strain (or compression) is defined as

\[f=\frac{1}{2} \left[ \left(\frac{V}{V_0} \right)^{-2/3}-1 \right]\]

where \(V\) is the volume at a given pressure and \(V_0\) is the volume at a reference state (\(P = 10^5\) Pa , \(T\) = 300 K).

For an isotropic material one obtains for the pressure, isothermal bulk modulus, and shear modulus:

\[P=3 K_0 f \left(1+2f\right)^{5/2} \left[1+\frac{3}{2} \left(K_0^\prime -4\right) f\right],\]
\[\begin{split}K_{T}=(1+2f)^{5/2} \biggl[ & K_0+(3K_0{K}^\prime_{0}-5K_0)f\\ &+\frac{27}{2}(K_0{K}^\prime_{0}-4K_0)f^2 \biggr],\end{split}\]
\[G = (1 + 2f)^{5/2} \biggl[ G_0+(3K_0{G}^\prime_{0}-5G_0)f \biggr].\]

Here \(K_0\) and \(G_0\) are the reference bulk modulus and shear modulus and \(K_0^\prime\) and \({G}^\prime_{0}\) are the derivative of the respective moduli with respect to pressure.

Parameter

Description

Units

F_0

Reference Helmholtz free energy

J/mol

P_0

Reference pressure

Pa

V_0

Reference volume

\(\textrm{m}^3\)

K_0

Reference isothermal bulk modulus

Pa

Kprime_0

Pressure derivative of the isothermal bulk modulus at the reference state

Dimensionless

G_0

Reference shear modulus

Pa

Gprime_0

Pressure derivative of the shear modulus at the reference state

Dimensionless

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus \(G\) of the mineral. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

class burnman.eos.birch_murnaghan.BM4[source]

Bases: BirchMurnaghanBase

Base class for the isothermal Birch Murnaghan equation of state. This is fourth order in strain, and has no temperature dependence.

Note that unlike the third order Birch-Murnaghan equation of state, the shear modulus is not defined for this equation of state.

Parameter

Description

Units

F_0

Reference Helmholtz free energy

J/mol

P_0

Reference pressure

Pa

V_0

Reference volume

\(\textrm{m}^3\)

K_0

Reference isothermal bulk modulus

Pa

Kprime_0

Pressure derivative of the isothermal bulk modulus at the reference state

Dimensionless

Kprime_prime_0

Second pressure derivative of the isothermal bulk modulus at the reference state

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

class burnman.eos.birch_murnaghan.BirchMurnaghanBase[source]

Bases: IsothermalEquationOfState

Base class for the isothermal Birch Murnaghan equation of state. This is third order in strain, and has no temperature dependence. However, the shear modulus is sometimes fit to a second order function, so if this is the case, you should use that. For more see burnman.birch_murnaghan.BM3Shear2 and burnman.birch_murnaghan.BM3.

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

macaw

class burnman.eos.macaw.MACAW[source]

Bases: IsothermalEquationOfState

Class for the MACAW equation of state detailed in [LA22].

This equation of state has no temperature dependence.

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

P_0

Reference pressure.

\(\text{Pa}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of the bulk modulus at reference pressure.

Dimensionless

Kprime_inf

Infinite pressure derivative of the bulk modulus.

Dimensionless

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

volume(pressure, temperature, params)[source]

Get the Vinet volume at a reference temperature for a given pressure \([Pa]\). Returns molar volume in \([m^3]\)

pressure(temperature, volume, params)[source]

Returns pressure \([Pa]\) as a function of volume \([m^3]\).

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters. The value for \(K'_{\infty}\) is thermodynamically bounded between 5/3 and \(K'_0\) [SD04].

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

modified tait

class burnman.eos.modified_tait.MT[source]

Bases: IsothermalEquationOfState

The Modified Tait equation of state was developed by [HuangChow74]. It has the considerable benefit of allowing volume to be expressed as a function of pressure. It performs very well to pressures and temperatures relevant to the deep Earth [HollandPowell11].

\[\begin{split}\frac{V_{P, T}}{V_{1 bar, 298 K}} &= 1 - a(1-(1 + bP)^{-c}), \\ a &= \frac{1 + K_0'}{1 + K_0' + K_0 K_0''}, \\ b &= \frac{K_0'}{K_0} - \frac{K_0''}{1 + K_0'}, \\ c &= \frac{1 + K_0' + K_0 K_0''}{K_0'^2 + K_0' - K_0 K_0''}\end{split}\]

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

P_0

Reference pressure.

\(\text{Pa}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus.

Dimensionless

Kdprime_0

Second pressure derivative of bulk modulus.

\(\text{Pa}^{-1}\)

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]

Returns pressure [Pa] as a function of temperature [K] and volume[m^3]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) of the mineral. \([Pa]\).

shear_modulus(pressure, temperature, volume, params)[source]

Not implemented in the Modified Tait EoS. \([Pa]\) Returns 0. Could potentially apply a fixed Poissons ratio as a rough estimate.

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

morse potential

class burnman.eos.morse_potential.Morse[source]

Bases: IsothermalEquationOfState

Class for the isothermal Morse Potential equation of state detailed in [StaceyBrennanIrvine81]. This equation of state has no temperature dependence.

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

P_0

Reference pressure.

\(\text{Pa}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus at zero pressure.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

murnaghan

class burnman.eos.murnaghan.Murnaghan[source]

Bases: IsothermalEquationOfState

The isothermal Murnaghan equation of state, as described in [Mur44].

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\) Currently not included in the Murnghan EOS, so omitted.

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

reciprocal kprime

class burnman.eos.reciprocal_kprime.RKprime[source]

Bases: IsothermalEquationOfState

Class for the isothermal reciprocal K-prime equation of state detailed in [SD04]. This equation of state is a development of work by [Kea54] and [SD00], making use of the fact that \(K'\) typically varies smoothly as a function of \(P/K\), and is thermodynamically required to exceed 5/3 at infinite pressure.

It is worth noting that this equation of state rapidly becomes unstable at negative pressures, so should not be trusted to provide a good HT-LP equation of state using a thermal pressure formulation. The negative root of \(dP/dK\) can be found at \(K/P = K'_{\infty} - K'_0\), which corresponds to a bulk modulus of \(K = K_0 ( 1 - K'_{\infty}/K'_0 )^{K'_0/K'_{\infty}}\) and a volume of \(V = V_0 ( K'_0 / (K'_0 - K'_{\infty}) )^{K'_0/{K'}^2_{\infty}} \exp{(-1/K'_{\infty})}\).

This equation of state has no temperature dependence.

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus at reference conditions.

Dimensionless

Kprime_inf

Pressure derivative of bulk modulus at infinite pressure.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]

Returns pressure \([Pa]\) as a function of volume \([m^3]\).

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters. The value for \(K'_{\infty}\) is thermodynamically bounded between 5/3 and \(K'_0\) [SD04].

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

spock

class burnman.eos.spock.SPOCK[source]

Bases: IsothermalEquationOfState

Class for the Scaled Power Of Compression K-prime equation of state. This equation is derived from the assumption that

\[K' = b \left( \frac{V}{V_0} \right)^a\]

This equation of state is described in [Myh25a], but was originally derived by [WMTZ15].

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

P_0

Reference pressure.

\(\text{Pa}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus at zero pressure.

Dimensionless

Kdprime_0

Second pressure derivative of bulk modulus at zero pressure.

\(\text{Pa}^{-1}\)

Kprime_inf

Infinite pressure limit of the pressure derivative of bulk modulus.

Dimensionless

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

volume(pressure, temperature, params)[source]

Returns volume at a given pressure \([Pa]\) in \([m^3]\)

pressure(temperature, volume, params)[source]

Returns pressure \([Pa]\) as a function of volume \([m^3]\).

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\) This equation of state is athermal, so the function returns a very large number.

validate_parameters(params)[source]

Check for existence and validity of the parameters. The value for \(K'_{\infty}\) is thermodynamically bounded between 5/3 and \(K'_0\) [SD04].

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

vinet

class burnman.eos.vinet.Vinet[source]

Bases: IsothermalEquationOfState

Base class for the isothermal Vinet equation of state. References for this equation of state are [VFSR86] and [VSFR87]. This equation of state actually predates Vinet by 55 years [Rydberg32], and was investigated further by [StaceyBrennanIrvine81].

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

P_0

Reference pressure.

\(\text{Pa}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of bulk modulus.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus \(G\) of the mineral. \([Pa]\) Not included in the Vinet EOS, so returns 0.

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy \(\mathcal{G}\) of the mineral. \([J/mol]\)

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Entropy of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so the entropy arbitrarily returns a value of zero.

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Isobaric molar heat capacity of the equation of state (\([J/K/mol]\)). This equation of state is isothermal, so this function arbitrarily returns a very small number.

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)

Thermal expansivity of the equation of state (\([1/K]\)). This equation of state is isothermal, so this function arbitrarily returns a value of zero.

Thermal Equations of State

Base class

class burnman.eos.EquationOfState[source]

Bases: object

This class defines the interface for an equation of state that a mineral uses to determine its properties at a given \(P, T\). In order define a new equation of state, you should define these functions.

All functions should accept and return values in SI units.

In general these functions are functions of pressure, temperature, and volume, as well as a “params” object, which is a Python dictionary that stores the material parameters of the mineral, such as reference volume, Debye temperature, reference moduli, etc.

The functions for volume and density are just functions of temperature, pressure, and “params”; after all, it does not make sense for them to be functions of volume or density.

volume(pressure, temperature, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Molar volume of the mineral \([m^3]\).

Return type:

float

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

density(volume, params)[source]

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Isothermal bulk modulus of the mineral. \([Pa]\)

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

shear_modulus(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Shear modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant pressure of the mineral. \([J/K/mol]\)

Return type:

float

thermal_expansivity(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Thermal expansivity of the mineral. \([1/K]\)

Return type:

float

gibbs_energy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Gibbs energy of the mineral \([J/mol]\).

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Entropy of the mineral \([J/K/mol]\).

Return type:

float

enthalpy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

validate_parameters(params)[source]

The params object is just a dictionary associating mineral physics parameters for the equation of state. Different equation of states can have different parameters, and the parameters may have ranges of validity. The intent of this function is twofold. First, it can check for the existence of the parameters that the equation of state needs, and second, it can check whether the parameters have reasonable values. Unreasonable values will frequently be due to unit issues (e.g., supplying bulk moduli in GPa instead of Pa). In the base class this function does nothing, and an equation of state is not required to implement it. This function will not return anything, though it may raise warnings or errors.

Parameters:

params (dict) – Dictionary containing material parameters required by the equation of state.

aa

class burnman.eos.aa.AA[source]

Bases: EquationOfState

Class for the liquid metal EOS detailed in [AndersonAhrens94].

This equation of state is complicated because there is not a single set of independent variables.

The equation of state is based on a reference isentrope passing through a defined volume and entropy point. Internal energy (\(E\)) at a given volume is calculated along this isentrope using a fourth order BM EoS (\(V_0\), \(KS\), \(KS'\), \(KS''\)).

The temperature along the isentrope is calculated via integration of the Grueneisen parameter:

\(\gamma = \partial (\ln T)/\partial (\ln \rho) |_S\)

which gives:

\(T_S/T_0 = \exp(\int( \gamma/\rho ) d \rho)\)

Finally, the internal energy away from the reference isentrope is calculated as a function of temperature, using an expression for the isochoric heat capacity as a function of volume and temperature.

In this BurnMan implementation, the Helmholtz energy is used as the natural potential, with volume and temperature as the natural variables.

We note that [AndersonAhrens94] also include a detailed description of the Gruneisen parameter as a function of volume and energy (Equation 15), and use this to determine the temperature along the principal isentrope (Equations B1-B10) and the thermal pressure away from that isentrope (Equation 23). However, the thermal pressure expression is inconsistent with the equation of state away from the principal isentrope.

Note: the expression for \(\Lambda\) (Appendix C) does not reproduce Figure 5. We assume that the figure is correct, and that the correct expression has the form: \(F(-325.23 + 302.07 (\rho/\rho_0) + 30.45 (\rho/\rho_0)^{0.4})\).

Parameter

Description

Units

E_0

Reference internal energy.

\(\text{J/mol}\)

V_0

Reference volume.

\(\text{m}^3\)

K_S

Reference isentropic bulk modulus.

\(\text{Pa}\)

Kprime_S

First pressure derivative of the isentropic bulk modulus.

\(\text{unitless}\)

Kprime_prime_S

Second pressure derivative of the isentropic bulk modulus.

\(\text{Pa}^{-1}\)

T_0

Reference temperature on the principal isentrope.

\(\text{K}\)

S_0

Reference entropy on the principal isentrope.

\(\text{J/K/mol}\)

n

Number of atoms per formula unit.

\(\text{unitless}\)

grueneisen_0

Reference Gruneisen parameter on the principal isentrope.

\(\text{unitless}\)

grueneisen_n

Volume dependence of the Gruneisen parameter on the principal isentrope.

\(\text{unitless}\)

grueneisen_prime

First pressure derivative of the Gruneisen parameter on the principal isentrope.

\(\text{Pa}^{-1}\)

theta

Debye temperature on the principal isentrope.

\(\text{K}\)

a

Electronic heat capacity parameter A (length 2 array).

\(\text{unitless}\)

b

Electronic heat capacity parameter B (length 2 array).

\(\text{unitless}\)

Theta

Volume dependence parameters for electronic heat capacity (length 2 array).

\(\text{unitless}\)

lmda

Potential heat capacity parameter lambda (length 3 array).

\(\text{unitless}\)

xi_0

Reference xi parameter.

\(\text{unitless}\)

F

Reference F parameter (length 2 array).

\(\text{unitless}\)

entropy(pressure, temperature, volume, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Entropy of the mineral \([J/K/mol]\).

Return type:

float

pressure(temperature, volume, params)[source]

Returns the pressure of the mineral at a given temperature and volume [Pa]

volume(pressure, temperature, params)[source]

Returns molar volume. \([m^3]\)

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns the thermal expansivity. \([1/K]\)

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure. \([J/K/mol]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol] F + PV

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus. \([Pa]\) Zero for a liquid

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

brosh calphad

class burnman.eos.brosh_calphad.BroshCalphad[source]

Bases: EquationOfState

Class for the high pressure CALPHAD equation of state by [BMS07].

This equation of state includes contributions from cold compression, quasiharmonic lattice vibrations, and thermal excitation of electrons.

Parameter

Description

Units

gibbs_coefficients

Coefficients for the piecewise polynomial fit to the Gibbs free energy at 1 bar. Format is a list of lists, where each sublist contains the maximum temperature for that segment and the coefficients in the following order: [const, T, T*ln(T), T^(-1), T^(-2), T^(-3), T^(-9), T^2, T^3, T^4, T^7, T^(1/2), ln(T)]

varies

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

n

Number of atoms per formula unit.

Dimensionless

a

Parameter array for cold compression (length 4 array).

Dimensionless

b

Parameter array for thermal excitation (length 2 array).

Dimensionless

c

[OPTIONAL] Parameter array for cold compression (length 4 array). If you do not know how to calculate it, do not add it to the parameters dictionary. It will be calculated from the other input parameters.

Dimensionless

delta

Parameter array for thermal excitation (length 2 array).

Dimensionless

theta_0

Reference Debye temperature.

\(\text{K}\)

grueneisen_0

Reference Grüneisen parameter.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume \([m^3]\) as a function of pressure \([Pa]\).

dvolume_dP(pressure, temperature, params)[source]
pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns the isothermal bulk modulus \(K_T\) \([Pa]\) as a function of pressure \([Pa]\), temperature \([K]\) and volume \([m^3]\).

shear_modulus(pressure, temperature, volume, params)[source]

Returns the shear modulus \(G\) of the mineral. \([Pa]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy of the mineral. \([J/mol]\)

entropy(pressure, temperature, volume, params)[source]

Returns the molar entropy of the mineral. \([J/K/mol]\)

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns the molar isobaric heat capacity \([J/K/mol]\). For now, this is calculated by numerical differentiation.

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns the volumetric thermal expansivity \([1/K]\). For now, this is calculated by numerical differentiation.

calculate_transformed_parameters(params)[source]

This function calculates the “c” parameters of the [BMS07] equation of state.

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

cork

class burnman.eos.cork.CORK[source]

Bases: EquationOfState

Class for the CoRK equation of state detailed in [HP91]. The CoRK EoS is a simple virial-type extension to the modified Redlich-Kwong (MRK) equation of state. It was designed to compensate for the tendency of the MRK equation of state to overestimate volumes at high pressures and accommodate the volume behaviour of coexisting gas and liquid phases along the saturation curve.

\[\begin{split}V &= \frac{RT}{P} + c_1 - \frac{c_0 R T^{0.5}}{(RT + c_1 P)(RT + 2 c_1 P)} + c_2 P^{0.5} + c_3 P, \\ c_0 &= c_{0,0} T_c^{2.5}/P_c + c_{0,1} T_c^{1.5}/P_c T, \\ c_1 &= c_{1,0} T_c/P_c, \\ c_2 &= c_{2,0} T_c/P_c^{1.5} + c_{2,1}/P_c^{1.5} T, \\ c_3 &= c_{3,0} T_c/P_c^2 + c_{3,1}/P_c^2 T\end{split}\]

where \(c_{i,j}\) are the CoRK parameters, \(T_c\) is the critical temperature, and \(P_c\) is the critical pressure.

Parameter

Description

Units

H_0

Reference enthalpy.

\(\text{J/mol}\)

S_0

Reference entropy.

\(\text{J/(mol K)}\)

Cp

Heat capacity parameters (length 4 array).

\(\text{J/(mol K)}\)

T_0

Reference temperature.

\(\text{K}\)

P_0

Reference pressure.

\(\text{Pa}\)

cork_params

CoRK parameters (length 4x2 array).

varies

cork_T

Critical temperature.

\(\text{K}\)

cork_P

Critical pressure.

\(\text{Pa}\)

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K] Eq. 7 in Holland and Powell, 1991

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ 13+2

shear_modulus(pressure, temperature, volume, params)[source]

Not implemented. Returns 0. Could potentially apply a fixed Poissons ratio as a rough estimate.

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity at the pressure, temperature, and volume [1/K] Replace -Pth in EQ 13+1 with P-Pth for non-ambient temperature

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

entropy(pressure, temperature, volume, params)[source]

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

dks liquid

class burnman.eos.dks_liquid.DKS_L[source]

Bases: EquationOfState

Base class for the finite strain liquid equation of state detailed in [deKokerKarkiStixrude13] (supplementary materials).

This equation of state includes contributions from ideal gas (translational and electronic), electronic, and excess (bonding) components to the thermodynamic properties.

The parameters required for this equation of state do not all correspond to natural variables; please refer to [deKokerKarkiStixrude13] for details.

Parameter

Description

Units

V_0

Reference volume.

\(\text{m}^3\)

T_0

Reference temperature.

\(\text{K}\)

O_theta

O_f

m

a

zeta_0

Reference electronic strength parameter.

xi

Power law exponent for the volume dependence on zeta.

Unitless

Tel_0

Reference temperature for electronic contributions.

K

eta

Power law exponent for the volume dependence on the electronic temperature.

Unitless

formula

Chemical formula of the substance.

Dict[str, float]

el_V_0

Reference volume for electronic contributions.

\(\text{m}^3\)

spin_a

Description of spin_a.

Length 2 list describing spin_a.

spin_b

Length 4 list describing spin_b.

Units of spin_b.

pressure(temperature, volume, params)[source]
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

volume(pressure, temperature, params)[source]
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Molar volume of the mineral \([m^3]\).

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \([Pa]\)

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus. \([Pa]\) Zero for fluids

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure. \([J/K/mol]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity. \([1/K]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

dks solid

class burnman.eos.dks_solid.DKS_S[source]

Bases: EquationOfState

Base class for the finite strain solid equation of state detailed in [deKokerKarkiStixrude13] (supplementary materials).

This equation of state is a somewhat modified version of that described in [SLB05].

Parameter

Description

Units

P_0

Reference pressure.

\(\text{Pa}\)

T_0

Reference temperature.

\(\text{K}\)

E_0

Reference internal energy.

\(\text{J/mol}\)

S_0

Reference entropy.

\(\text{J/K/mol}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of the reference bulk modulus.

\(\text{unitless}\)

grueneisen_0

Reference Grüneisen parameter.

\(\text{unitless}\)

q_0

Volume derivative of the Grüneisen parameter.

\(\text{unitless}\)

eta_s_0

Isotropic shear strain derivative of the Grüneisen parameter.

\(\text{unitless}\)

Cv

Constant volume heat capacity.

\(\text{J/K/mol}\)

volume(pressure, temperature, params)[source]

Returns molar volume. \([m^3]\)

pressure(temperature, volume, params)[source]

Returns the pressure of the mineral at a given temperature and volume [Pa]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \([Pa]\)

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus. \([Pa]\)

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure. \([J/K/mol]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity. \([1/K]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

hp

class burnman.eos.hp.HP98[source]

Bases: EquationOfState

Base class for the thermal equation of state described in [HollandPowell98].

Parameter

Description

Units

P_0

Reference pressure.

Pa

T_0

Reference temperature.

K

H_0

Enthalpy at the reference state.

J/mol

S_0

Entropy at the reference state.

J/(mol K)

Cp

Heat capacity coefficients at the reference pressure (length 4 list).

Various

V_0

Volume at the reference state.

m^3/mol

K_0

Isothermal bulk modulus at the reference state.

Pa

Kprime_0

Pressure derivative of bulk modulus at the reference state.

Dimensionless

a_0

Thermal expansivity at reference state.

1/K

dKdT_0

Temperature derivative of bulk modulus at reference state.

Pa/K

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

shear_modulus(pressure, temperature, volume, params)[source]

Not implemented. Returns 0. Could potentially apply a fixed Poissons ratio as a rough estimate.

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

entropy(pressure, temperature, volume, params)[source]

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns the heat capacity [J/K/mol] as a function of pressure [Pa] and temperature [K].

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

class burnman.eos.hp.HP_TMT[source]

Bases: EquationOfState

Base class for the thermal equation of state based on the isothermal modified Tait equation of state (class MT), as described in [HollandPowell11].

\[\begin{split}\mathcal{G}(P,T) &= \mathcal{H}_{\textrm{1 bar, T}} - T\mathcal{S}_{\textrm{1 bar, T}} + \int_{\textrm{1 bar}}^P V(P,T)~dP, \\ \mathcal{H}_{\textrm{1 bar, T}} &= \Delta_f\mathcal{H}_{\textrm{1 bar, 298 K}} + \int_{298}^T C_P~dT, \\ \mathcal{S}_{\textrm{1 bar, T}} &= \mathcal{S}_{\textrm{1 bar, 298 K}} + \int_{298}^T \frac{C_P}{T}~dT, \\ \int_{\textrm{1 bar}}^P V(P,T)~dP &= P V_0 \left( 1 - a + \left( a \frac{(1-b P_{th})^{1-c} - (1 + b(P-P_{th}))^{1-c}}{b (c-1) P} \right) \right)\end{split}\]

The heat capacity at one bar is given by an empirical polynomial fit to experimental data:

\[C_p = a + bT + cT^{-2} + dT^{-0.5}\]

The thermal pressure is calculated using a Mie-Grüneisen-like function:

\[\begin{split}P_{\textrm{th}} &= \frac{\alpha_0 K_0 E_{\textrm{th}} }{C_{V0}}, \\ E_{\textrm{th}} &= 3 n R \Theta \left(0.5 + \frac{1}{ \exp(\frac{\Theta}{T}) - 1 }\right), \\ C_{V} &= 3 n R \frac{(\frac{\Theta}{T})^2\exp(\frac{\Theta}{T})}{(\exp(\frac{\Theta}{T})-1)^2}\end{split}\]

\(\Theta\) is the Einstein temperature of the crystal in Kelvin, approximated for a substance \(i\) with \(n_i\) atoms in the unit formula and a molar entropy \(S_i\) using the empirical formula:

\[\Theta_i=\frac{10636}{S_i/n_i + 6.44}\]

Parameter

Description

Units

P_0

Reference pressure.

Pa

T_0

Reference temperature.

K

H_0

Enthalpy at the reference state.

J/mol

S_0

Entropy at the reference state.

J/(mol K)

Cp

Heat capacity coefficients at the reference pressure (length 4 list).

Various

V_0

Volume at the reference state.

m^3/mol

K_0

Isothermal bulk modulus at the reference state.

Pa

Kprime_0

Pressure derivative of bulk modulus at the reference state.

Dimensionless

Kdprime_0

Second pressure derivative of bulk modulus at the reference state.

Dimensionless

a_0

Thermal expansivity at reference state.

1/K

T_einstein

Einstein temperature.

K

n

Number of atoms in the unit formula.

Dimensionless

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K]

pressure(temperature, volume, params)[source]

Returns pressure [Pa] as a function of temperature [K] and volume[m^3]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

shear_modulus(pressure, temperature, volume, params)[source]

Not implemented. Returns 0. Could potentially apply a fixed Poissons ratio as a rough estimate.

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity at the pressure, temperature, and volume [1/K]. This function replaces -Pth in Equation 13+1 in [HollandPowell11] with P-Pth for non-ambient temperature

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

entropy(pressure, temperature, volume, params)[source]

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns the heat capacity [J/K/mol] as a function of pressure [Pa] and temperature [K].

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

class burnman.eos.hp.HP_TMTL[source]

Bases: EquationOfState

Base class for the thermal equation of state described in [HollandPowell98], but with the Modified Tait as the static part, as described in [HollandPowell11].

Parameter

Description

Units

P_0

Reference pressure.

Pa

T_0

Reference temperature.

K

H_0

Enthalpy at the reference state.

J/mol

S_0

Entropy at the reference state.

J/(mol K)

Cp

Heat capacity coefficients at the reference pressure (length 4 list).

Various

V_0

Volume at the reference state.

m^3/mol

K_0

Isothermal bulk modulus at the reference state.

Pa

Kprime_0

Pressure derivative of bulk modulus at the reference state.

Dimensionless

Kdprime_0

Second pressure derivative of bulk modulus at the reference state.

Dimensionless

a_0

Thermal expansivity at reference state.

1/K

dKdT_0

Temperature derivative of bulk modulus at reference state.

Pa/K

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

shear_modulus(pressure, temperature, volume, params)[source]

Not implemented. Returns 0. Could potentially apply a fixed Poissons ratio as a rough estimate.

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

entropy(pressure, temperature, volume, params)[source]

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns the heat capacity [J/K/mol] as a function of pressure [Pa] and temperature [K].

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)
Parameters:
  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral.

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Pressure of the mineral, including cold and thermal parts \([m^3]\).

Return type:

float

mie grueneisen debye

class burnman.eos.mie_grueneisen_debye.MGD2[source]

Bases: MGDBase

MGD equation of state with second order finite strain expansion for the shear modulus. In general, this should not be used, but sometimes shear modulus data is fit to a second order equation of state. In that case, you should use this. The moral is, be careful!

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B8

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)

Returns pressure [Pa] as a function of temperature [K] and volume[m^3] EQ B7

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B11

thermal_expansivity(pressure, temperature, volume, params)

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns volume [m^3] as a function of pressure [Pa] and temperature [K] EQ B7

class burnman.eos.mie_grueneisen_debye.MGD3[source]

Bases: MGDBase

Mie-Grueneisen-Debye equation of state with third order finite strain expansion for the shear modulus.

The Debye model for the Helmholtz free energy can be written as follows [MBR+07]

\[\begin{split}\mathcal{F} &= \frac{9nRT}{V}\frac{1}{x^3} \int_{0}^{x} \xi^2 \ln (1-e^{-\xi}) d\xi, \\ x &= \theta / T, \\ \theta &= \theta_0 \exp \left( \frac{\gamma_0-\gamma}{q_0} \right), \\ \gamma &= \gamma_0 \left( \frac{V}{V_0} \right)^{q_0}\end{split}\]

where \(\theta\) is the Debye temperature and \(\gamma\) is the Grüneisen parameter.

Using thermodynamic relations we can derive equations for the thermal pressure and bulk modulus

\[\begin{split}P_{th}(V,T) &= - \frac{\partial \mathcal{F(V, T)}}{\partial V}, \\ &= \frac{3 n \gamma R T}{V} D(x), \\ K_{th}(V,T) &= -V \frac{\partial P(V, T)}{\partial V}, \\ &= \frac{3 n \gamma R T}{V} \gamma \left[ (1-q_0 - 3 \gamma) D(x) + 3\gamma \frac{x}{e^x - 1} \right], \\ D(x) &= \frac{3}{x^3} \int_{0}^{x} \frac{\xi^3}{e^{\xi} - 1} d\xi\end{split}\]

The thermal shear correction used in BurnMan was developed by [HamaSuito98]

\[G_{th}(V,T) = \frac{3}{5} \left[ K_{th} (V, T) - 2\frac{3nRT}{V}\gamma D(x) \right]\]

The total pressure, bulk and shear moduli can be calculated from the following sums

\[\begin{split}P(V, T) &= P_{\textrm{ref}}(V, T_0) + P_{th}(V, T) - P_{th}(V, T_0), \\ K(V, T) &= K_{\textrm{ref}}(V, T_0) + K_{th}(V, T) - K_{th}(V, T_0), \\ G(V, T) &= G_{\textrm{ref}}(V, T_0) + G_{th}(V, T) - G_{th}(V, T_0)\end{split}\]

This equation of state is substantially the same as that in [SLB05]. The primary differences are in the thermal correction to the shear modulus and in the volume dependences of the Debye temperature and the Gruneisen parameter.

Parameter

Description

Units

F_0

Reference Helmholtz free energy.

\(\text{J/mol}\)

V_0

Reference volume.

\(\text{m}^3\)

K_0

Reference bulk modulus.

\(\text{Pa}\)

Kprime_0

Pressure derivative of the bulk modulus at reference pressure.

Dimensionless

molar_mass

Molar mass of the mineral.

\(\text{kg/mol}\)

n

Number of atoms per formula unit.

Dimensionless

Debye_0

Debye temperature at reference state.

\(\text{K}\)

grueneisen_0

Grüneisen parameter at reference state.

Dimensionless

q_0

Volume dependence of the Grüneisen parameter.

Dimensionless

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B8

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)

Returns pressure [Pa] as a function of temperature [K] and volume[m^3] EQ B7

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B11

thermal_expansivity(pressure, temperature, volume, params)

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns volume [m^3] as a function of pressure [Pa] and temperature [K] EQ B7

class burnman.eos.mie_grueneisen_debye.MGDBase[source]

Bases: EquationOfState

Base class for a generic finite-strain Mie-Grueneisen-Debye equation of state. References for this can be found in many places, such as [SDT02] and [JR96]. Here we mostly follow the appendices of [MBR+07]. Of particular note is the thermal correction to the shear modulus, which was developed by [HS98].

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K] EQ B7

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B8

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ B11

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

pressure(temperature, volume, params)[source]

Returns pressure [Pa] as a function of temperature [K] and volume[m^3] EQ B7

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

modular mie grueneisen debye

class burnman.eos.modular_mie_grueneisen_debye.ModularMGD[source]

Bases: EquationOfState

This class implements a modular Mie-Grueneisen-Debye (MGD) equation of state (EoS) where the reference (isothermal) EoS and Debye temperature model can be chosen by the user.

The equation of state also supports electronic contributions to the Helmholtz energy and thermodynamic properties according to the model of [BK77].

Parameter

Description

Units

V_0

Reference volume

\(\textrm{m}^3\)

T_0

Reference temperature

K

bel_0

Electronic contribution parameter

unitless

gel

Electronic contribution exponent

unitless

n

Number of atoms per formula unit

atoms per formula unit

molar_mass

Molar mass

kg/mol

reference_eos

Reference isothermal equation of state. Must have methods for pressure, isothermal bulk modulus, and Gibbs energy.

burnman.eos.EquationOfState

debye_temperature_model

Debye temperature model. An object providing the Debye temperature as a function of relative volume via value, and its first and second derivatives with respect to relative volume via dVrel and dVrel2.

callable. Examples include burnman.eos.debye_temperature_models.SLB, burnman.eos.debye_temperature_models.PowerLawGammaSimple, and burnman.eos.debye_temperature_models.PowerLawGamma.

anharmonic_thermal_model

Anharmonic thermal model. An object providing the anharmonic contribution to the energy.

callable. Examples include burnman.eos.anharmonic_thermal_models.Pade and burnman.eos.anharmonic_thermal_models.LogNormal.

volume(pressure, temperature, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K]

pressure(temperature, volume, params)[source]

Returns the pressure of the mineral at a given temperature and volume [Pa]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity. \([1/K]\)

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure. \([J/K/mol]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

shear_modulus(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Shear modulus of the mineral. \([Pa]\)

Return type:

float

class burnman.eos.modular_mie_grueneisen_debye.ModularMGDWithAnharmonicity[source]

Bases: ModularMGD

This class extends the ModularMGD class to include anharmonicity effects according to a simplification of the model proposed by Wu and Wentzcovitch, 2009.

The basis of the anharmonic model is the definition of a scaled volume, \(V'\): \(\ln (V'/V) = = - c \ln (V/V_0)\). In this expression, \(V\) is the target volume, \(V_0\) is a first order approximation to the volume at the same pressure and reference temperature \(T_0\), and \(c\) is an anharmonicity parameter provided in the params dictionary as c_anh.

The anharmonic Helmholtz energy \(F\) is related to the scaled volume by the equation:

\[F(V,T) = F_h(V',T) + F_h(V,T_0) - F_h(V',T_0)\]

where \(F_h\) is the harmonic Helmholtz energy, potentially with electronic contributions.

Note: This model is not the same as that published in Wu and Wentzcovitch (2009). The results are expected to be similar, but the \(c\) parameter will in general need to be changed. This is because only a local approximation to the volume change between 0 K and the target temperature is used. This does not mean that the model is less able to capture the essential physics of the problem; indeed, the model of Wu and Wentzcovitch (2009) is only intended to be an effective ansatz.

Parameter

Description

Units

V_0

Reference volume

\(\textrm{m}^3\)

T_0

Reference temperature

K

bel_0

Electronic contribution parameter

unitless

gel

Electronic contribution exponent

unitless

n

Number of atoms per formula unit

atoms per formula unit

molar_mass

Molar mass

kg/mol

reference_eos

Reference isothermal equation of state. Must have methods for pressure, isothermal bulk modulus, and Gibbs energy.

burnman.eos.EquationOfState

debye_temperature_model

Debye temperature model. An object providing the Debye temperature as a function of relative volume via value, and its first and second derivatives with respect to relative volume via dVrel and dVrel2.

callable. Examples include burnman.eos.debye_temperature_models.SLB, burnman.eos.debye_temperature_models.PowerLawGammaSimple, and burnman.eos.debye_temperature_models.PowerLawGamma.

anharmonic_thermal_model

Anharmonic thermal model. An object providing the anharmonic contribution to the energy.

callable. Examples include burnman.eos.anharmonic_thermal_models.Pade and burnman.eos.anharmonic_thermal_models.LogNormal.

c_anh

Anharmonicity parameter

unitless

lnVoverV0_approx(temperature, volume, params)[source]
pressure()

(copied from pressure):

Returns the pressure of the mineral at a given temperature and volume [Pa]

isothermal_bulk_modulus_reuss()

(copied from isothermal_bulk_modulus_reuss):

Returns isothermal bulk modulus \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity. \([1/K]\)

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

shear_modulus(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Shear modulus of the mineral. \([Pa]\)

Return type:

float

volume(pressure, temperature, params)

Returns volume [m^3] as a function of pressure [Pa] and temperature [K]

slb

class burnman.eos.slb.SLB2[source]

Bases: SLBBase

SLB equation of state with second order finite strain expansion for the shear modulus. In general, this should not be used, but sometimes shear modulus data is fit to a second order equation of state. In that case, you should use this. The moral is, be careful!

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus \([Pa]\)

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)

Returns the pressure of the mineral at a given temperature and volume [Pa]

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)

Returns thermal expansivity. \([1/K]\)

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns molar volume. \([m^3]\)

class burnman.eos.slb.SLB3[source]

Bases: SLBBase

Third-order finite strain-Mie-Grueneisen-Debye equation of state detailed in [SLB05].

This equation of state combines the third-order Birch-Murnaghan isothermal equation of state with thermal corrections derived from the Mie-Grüneisen-Debye equation of state with the quasi-harmonic approximation:

\[\begin{split}\mathcal{F}_{th}(T, \theta(V)) &= nRT \left(3 \ln( 1 - e^{-\frac{\theta}{T}}) - \int_{0}^{\frac{\theta}{T}}\frac{\tau^3}{(e^{\tau}-1)}d\tau \right), \\ P_{th}(V,T) &={\frac{\gamma \Delta \mathcal{U}}{V}}, \\ K_{th}(V,T) &=(\gamma +1-q)\frac{\gamma \Delta \mathcal{U}}{V} -\gamma ^{2} \frac{\Delta(C_{V}T)}{V} ,\\ G_{th}(V,T) &= -\frac{\eta_{S} \Delta \mathcal{U}}{V}.\end{split}\]

The expression for the Debye temperature \(\theta(V)\) as a function of volume is given by:

\[\begin{split}\theta(V) &= \theta_{0} \sqrt{\frac{\nu^{2}}{\nu_{0}^{2}}}, \\ \frac{\nu^2}{\nu^2_0} &= 1+a_{ii}^{(1)}f+\frac{1}{2}a_{iikk}^{(2)}f^2, \\ f &= \frac{1}{2} \left[ \left( \frac{V_0}{V} \right)^{\frac{2}{3}} -1 \right].\end{split}\]

The \(\Delta\) refers to the difference in the relevant quantity from the reference temperature (300 K). \(\gamma\) is the Grüneisen parameter, \(q\) is the logarithmic volume derivative of the Grüneisen parameter, \(\eta_{S}\) is the shear strain derivative of the Grüneisen parameter, \(C_V\) is the heat capacity at constant volume, and \(\mathcal{U}\) is the internal energy at temperature \(T\). \(C_V\) and \(\mathcal{U}\) are calculated using the Debye model for vibrational energy of a lattice. These quantities are calculated as follows:

\[\begin{split}C_V &= 9nR \left( \frac{T}{\theta} \right)^3 \int_{0}^{\frac{\theta}{T}} \frac{e^{\tau}\tau^{4}}{(e^{\tau}-1)^2} d\tau, \\ \mathcal{U} &= 9nRT \left( \frac{T}{\theta} \right)^3 \int_{0}^{\frac{\theta}{T}} \frac{\tau^3}{(e^{\tau}-1)} d\tau, \\ \gamma &= \frac{1}{6} \frac{\nu_{0}^2}{\nu^{2}}(2f+1) \left[ a_{ii}^{(1)} + a_{iikk}^{(2)}f \right], \\ q &= \frac{1}{9\gamma} \left[ 18\gamma^{2} - 6\gamma - \frac{1}{2} \frac{\nu^{2}_0}{\nu^2} (2f+1)^{2} a_{iikk}^{(2)} \right], \\ \eta_S &=-\gamma-\frac{1}{2}\frac{\nu_{0}^2}{\nu^2}(2f+1)^{2}a_{S}^{(2)}, \\ a_{ii}^{(1)} &= 6\gamma _0, \\ a_{iikk}^{(2)} &= -12\gamma _0+36\gamma_{0}^{2}-18q_{0}\gamma_0,\\ a_{S}^{(2)} &=-2\gamma _0-2\eta_{S0},\end{split}\]

where \(\nu\) is the frequency of vibrational modes for the mineral, \(n\) is the number of atoms per formula unit (e.g. 2 for periclase, 5 for perovskite), and \(R\) is the gas constant. Under the approximation that the vibrational frequencies behave the same under strain, we may identify \(\nu/\nu_0 = \theta/\theta_0\). The quantities \(\gamma_0\), \(\eta_{S0}\) \(q_0\), and \(\theta_0\) are the experimentally determined values for those parameters at the reference state.

All together this makes an eleven parameter EoS model, which is summarized in the Table below. For more details on the EoS, we refer readers to [SLB05].

Parameter

Description

Units

V_0

Volume at P = \(10^5\) Pa , T = 300 K

\(\textrm{m}^{3}/\textrm{mol}\)

K_0

Isothermal bulk modulus at P = \(10^5\) Pa, T = 300 K

Pa

Kprime_0

Pressure derivative of \(K_{0}\)

unitless

G_0

Shear modulus at P = \(10^5\) Pa, T = 300 K

Pa

Gprime_0

Pressure derivative of \(G_{0}\)

unitless

molar_mass

mass per mole formula unit

kg \(\mathrm{mol}^{-1}\)

n

number of atoms per formula unit

atoms/formula unit

Debye_0

Debye Temperature

K

grueneisen_0

Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

q_0

Volume dependence of Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

eta_s_0

Shear strain dependence of Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

This equation of state is substantially the same as Mie-Gruneisen-Debye. The primary differences are in the thermal correction to the shear modulus and in the volume dependences of the Debye temperature and the Gruneisen parameter.

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus \([Pa]\)

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)

Returns the pressure of the mineral at a given temperature and volume [Pa]

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)

Returns thermal expansivity. \([1/K]\)

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns molar volume. \([m^3]\)

class burnman.eos.slb.SLB3Conductive[source]

Bases: SLBBase

SLB equation of state with third order finite strain expansion for the shear modulus and a contribution to the Helmholtz free energy that arises from the thermal excitation of electrons [BK77].

For more details on the underlying EoS, we refer readers to [SLB05] and the documentation for burnman.eos.slb.SLB3. The electronic contribution to the Helmholtz free energy is given by:

\[\mathcal{F}_{el}(V,T) = -\frac{1}{2} b^{el}_0 V \left( \frac{V}{V_0} \right)^{g^{el}} (T^2 - T_0^2)\]

Parameter

Description

Units

V_0

Volume at P = \(10^5\) Pa , T = 300 K

\(\textrm{m}^{3}/\textrm{mol}\)

K_0

Isothermal bulk modulus at P = \(10^5\) Pa, T = 300 K

Pa

Kprime_0

Pressure derivative of \(K_{0}\)

unitless

G_0

Shear modulus at P = \(10^5\) Pa, T = 300 K

Pa

Gprime_0

Pressure derivative of \(G_{0}\)

unitless

molar_mass

mass per mole formula unit

kg \(\mathrm{mol}^{-1}\)

n

number of atoms per formula unit

atoms/formula unit

Debye_0

Debye Temperature

K

grueneisen_0

Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

q_0

Volume dependence of Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

eta_s_0

Shear strain dependence of Grüneisen parameter at P = \(10^5\) Pa, T = 300 K

unitless

bel_0

Electronic bulk modulus coefficient

Pa

gel

Electronic bulk modulus volume exponent

unitless

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

entropy(pressure, temperature, volume, params)

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_energy(pressure, temperature, volume, params)

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)

Returns isothermal bulk modulus \([Pa]\)

molar_heat_capacity_p(pressure, temperature, volume, params)

Returns heat capacity at constant pressure. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

pressure(temperature, volume, params)

Returns the pressure of the mineral at a given temperature and volume [Pa]

shear_modulus(pressure, temperature, volume, params)

Returns shear modulus. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)

Returns thermal expansivity. \([1/K]\)

validate_parameters(params)

Check for existence and validity of the parameters

volume(pressure, temperature, params)

Returns molar volume. \([m^3]\)

class burnman.eos.slb.SLBBase[source]

Bases: EquationOfState

Base class for the finite strain-Mie-Grueneiesen-Debye equation of state detailed in [SLB05]. For the most part the equations are all third order in strain, but see further the burnman.slb.SLB2 and burnman.slb.SLB3 classes.

volume(pressure, temperature, params)[source]

Returns molar volume. \([m^3]\)

pressure(temperature, volume, params)[source]

Returns the pressure of the mineral at a given temperature and volume [Pa]

isothermal_bulk_modulus_reuss(pressure, temperature, volume, params)[source]

Returns isothermal bulk modulus \([Pa]\)

shear_modulus(pressure, temperature, volume, params)[source]

Returns shear modulus. \([Pa]\)

thermal_expansivity(pressure, temperature, volume, params)[source]

Returns thermal expansivity. \([1/K]\)

entropy(pressure, temperature, volume, params)[source]

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

molar_heat_capacity_p(pressure, temperature, volume, params)[source]

Returns heat capacity at constant pressure. \([J/K/mol]\)

gibbs_energy(pressure, temperature, volume, params)[source]

Returns the Gibbs free energy at the pressure and temperature of the mineral [J/mol]

validate_parameters(params)[source]

Check for existence and validity of the parameters

density(volume, params)

Calculate the density of the mineral \([kg/m^3]\). The params object must include a “molar_mass” field.

Parameters:
  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Density of the mineral. \([kg/m^3]\)

Return type:

float

enthalpy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Enthalpy of the mineral \([J/mol]\).

Return type:

float

grueneisen_parameter(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Grueneisen parameter of the mineral. \([unitless]\)

Return type:

float

helmholtz_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Helmholtz energy of the mineral \([J/mol]\).

Return type:

float

isentropic_bulk_modulus_reuss(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Adiabatic bulk modulus of the mineral. \([Pa]\)

Return type:

float

molar_heat_capacity_v(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Heat capacity at constant volume of the mineral. \([J/K/mol]\)

Return type:

float

molar_internal_energy(pressure, temperature, volume, params)
Parameters:
  • pressure (float) – Pressure at which to evaluate the equation of state \([Pa]\).

  • temperature (float) – Temperature at which to evaluate the equation of state \([K]\).

  • volume (float) – Molar volume of the mineral. For consistency this should be calculated using volume() \([m^3]\).

  • params (dict) – Dictionary containing material parameters required by the equation of state.

Returns:

Internal energy of the mineral \([J/mol]\).

Return type:

float

Other Equation of State classes

anharmonic debye

class burnman.eos.anharmonic_debye.AnharmonicDebye[source]

Bases: object

Class providing methods to compute the anharmonic contribution to the Helmholtz free energy, pressure, entropy, isochoric heat capacity, isothermal bulk modulus and thermal expansion coefficient multiplied by the isothermal bulk modulus.

The Helmholtz energy is defined as \(F(V, T) = A(V) (F_a(T, \Theta(V)) - F_a(T_0, \Theta(V)))\) where \(A(V)\) is the anharmonic prefactor, \(F_a(T, \Theta)\) is the anharmonic Helmholtz energy, and \(\Theta(V)\) is the Debye temperature.

These three functions and their derivatives with respect to their arguments are provided as class instances contained within the params dictionary, with keys “anharmonic_prefactor_model”, “debye_temperature_model”, and “anharmonic_thermal_model”.

Returns:

_description_

Return type:

_type_

static helmholtz_energy(temperature, volume, params)[source]
static entropy(temperature, volume, params)[source]
static heat_capacity_v(temperature, volume, params)[source]
static pressure(temperature, volume, params)[source]
static isothermal_bulk_modulus(temperature, volume, params)[source]
static dSdV(temperature, volume, params)[source]
static validate_parameters(params)[source]

anharmonic prefactor models

class burnman.eos.anharmonic_prefactor_models.AnharmonicPrefactorModel[source]

Bases: object

Base class for anharmonic prefactor models.

value(Vrel, params)[source]
dVrel(Vrel, params)[source]
dVrel2(Vrel, params)[source]
validate_parameters(params)[source]
class burnman.eos.anharmonic_prefactor_models.PowerLaw[source]

Bases: AnharmonicPrefactorModel

Class providing methods to compute the prefactor A in the anharmonic contribution to thermodynamic models.

The prefactor is defined as \(A = a_{anh} * (V/V_0)^{m_{anh}}\), with both \(a_{anh}\) and \(m_{anh}\) being parameters of the model.

Returns:

_description_

Return type:

_type_

value(Vrel, params)[source]
dVrel(Vrel, params)[source]
dVrel2(Vrel, params)[source]
validate_parameters(params)[source]
class burnman.eos.anharmonic_prefactor_models.Sigmoid[source]

Bases: AnharmonicPrefactorModel

Class providing methods to compute the prefactor A in the anharmonic contribution to thermodynamic models.

The prefactor is defined as \(A = a_{anh} * (1 - 1/(1 + (Vrel + b_{anh}) ** c_{anh}))\) where \(a_{anh}\), \(b_{anh}\) and \(c_{anh}\) are parameters of the model.

Returns:

_description_

Return type:

_type_

value(Vrel, params)[source]
dVrel(Vrel, params)[source]
dVrel2(Vrel, params)[source]
validate_parameters(params)[source]

anharmonic thermal models

class burnman.eos.anharmonic_thermal_models.AnharmonicThermalModelBase[source]

Bases: object

Abstract base class for anharmonic thermal models.

nondimensional_helmholtz_energy(T, debye_T, params)[source]

Anharmonic contribution to the Helmholtz free energy at a given temperature.

nondimensional_entropy(T, debye_T, params)[source]

Anharmonic contribution to the entropy at a given temperature.

nondimensional_heat_capacity(T, debye_T, params)[source]

Anharmonic contribution to the heat capacity at a given temperature.

nondimensional_dhelmholtz_dTheta(T, debye_T, params)[source]

Anharmonic contribution to the derivative of the Helmholtz energy with respect to the Debye temperature.

nondimensional_d2helmholtz_dTheta2(T, debye_T, params)[source]

Anharmonic contribution to the second derivative of the Helmholtz energy with respect to the Debye temperature.

nondimensional_dentropy_dTheta(T, debye_T, params)[source]

Anharmonic contribution to the derivative of the entropy with respect to the Debye temperature.

debye temperature models

class burnman.eos.debye_temperature_models.DebyeTemperatureModelBase[source]

Bases: ABC

Abstract base class for Debye temperature models.

abstractmethod value(Vrel: float, params: dict) float[source]

Return the Debye temperature for the given relative volume.

dVrel(Vrel: float, params: dict) float[source]

First derivative of Debye temperature wrt relative volume.

dVrel2(Vrel: float, params: dict) float[source]

Second derivative of Debye temperature wrt relative volume.

Equation of State Functions

anharmonic thermal models

burnman.eos.anharmonic_thermal_models.LogNormal(*args, **kwargs)[source]
burnman.eos.anharmonic_thermal_models.Pade(*args, **kwargs)[source]

birch murnaghan

burnman.eos.birch_murnaghan.bulk_modulus_fourth_order(volume, params)[source]

Bulk modulus for the fourth order Birch-Murnaghan equation of state.

Parameters:
  • volume (float) – Volume of the material in the same units as the reference volume.

  • params (dict) – Parameter dictionary

Returns:

Bulk modulus in the same units as the reference bulk modulus.

Return type:

float

burnman.eos.birch_murnaghan.bulk_modulus_third_order(volume, params)[source]

Bulk modulus for the third order Birch-Murnaghan equation of state [Bir47].

Parameters:
  • volume (float) – Volume of the material in the same units as the reference volume.

  • params (dict) – Parameter dictionary

Returns:

Bulk modulus in the same units as the reference bulk modulus.

Return type:

float

burnman.eos.birch_murnaghan.pressure_fourth_order(invVrel, params)[source]

Pressure for the fourth order Birch-Murnaghan equation of state.

Parameters:
  • invVrel (float) – Reference volume divided by the volume

  • params (dict) – Parameter dictionary

Returns:

Pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’]).

Return type:

float

burnman.eos.birch_murnaghan.pressure_third_order(invVrel, params)[source]

Pressure for the third order Birch-Murnaghan equation of state.

Parameters:
  • invVrel (float) – Reference volume divided by the volume

  • params (dict) – Parameter dictionary

Returns:

Pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’]).

Return type:

float

burnman.eos.birch_murnaghan.shear_modulus_second_order(volume, params)[source]

Shear modulus for the second order Birch Murnaghan equation of state (i.e. expanded to 2nd order in strain).

Parameters:
  • volume (float) – Molar volume in the same units as the reference volume.

  • params (dict) – Parameter dictionary

Returns:

Shear modulus in the same units as the reference shear modulus.

Return type:

float

burnman.eos.birch_murnaghan.shear_modulus_third_order(volume, params)[source]

Shear modulus for the third order Birch Murnaghan equation of state.

Parameters:
  • volume (float) – Molar volume in the same units as the reference volume.

  • params (dict) – Parameter dictionary

Returns:

Shear modulus in the same units as the reference shear modulus.

Return type:

float

burnman.eos.birch_murnaghan.volume_fourth_order(pressure, params)[source]

Volume for the fourth order Birch-Murnaghan equation of state.

Parameters:
  • pressure (float) – Pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’]).

  • params (dict) – Parameter dictionary

Returns:

Molar volume in the same units as the reference volume.

Return type:

float

burnman.eos.birch_murnaghan.volume_third_order(pressure, params)[source]

Volume for the third order Birch-Murnaghan equation of state.

Parameters:
  • pressure (float) – Pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’]).

  • params (dict) – Parameter dictionary

Returns:

Molar volume in the same units as the reference volume.

Return type:

float

bukowinski electronic

burnman.eos.bukowinski_electronic.CVoverT(volume, V_0, bel_0, gel)[source]

CV = T dS/dT

burnman.eos.bukowinski_electronic.KToverV(temperature, volume, T_0, V_0, bel_0, gel)[source]

KT = -V dP/dV

burnman.eos.bukowinski_electronic.aKT(temperature, volume, V_0, bel_0, gel)[source]

aKT = dP/dT

burnman.eos.bukowinski_electronic.entropy(temperature, volume, V_0, bel_0, gel)[source]

S = -dF/dT

burnman.eos.bukowinski_electronic.helmholtz(temperature, volume, T_0, V_0, bel_0, gel)[source]
burnman.eos.bukowinski_electronic.pressure(temperature, volume, T_0, V_0, bel_0, gel)[source]

P = -dF/dV

debye

burnman.eos.debye.d2helmholtz_dTheta2(T, debye_T, n)[source]

Second derivative of the Helmholtz free energy with respect to the Debye temperature [J/K^2].

burnman.eos.debye.debye_fn(x)[source]

Evaluate the Debye function. Takes the parameter xi = Debye_T/T

burnman.eos.debye.debye_fn_cheb(x)[source]

Evaluate the Debye function using a Chebyshev series expansion coupled with asymptotic solutions of the function. Shamelessly adapted from the GSL implementation of the same function (Itself adapted from Collected Algorithms from ACM). Should give the same result as debye_fn(x) to near machine-precision.

burnman.eos.debye.dentropy_dTheta(T, debye_T, n)[source]

First derivative of the entropy with respect to the Debye temperature [J/K].

burnman.eos.debye.dhelmholtz_dTheta(T, debye_T, n)[source]

First derivative of the Helmholtz free energy with respect to the Debye temperature [J/K].

burnman.eos.debye.dmolar_heat_capacity_v_dT(T, debye_T, n)[source]

First temperature derivative of the heat capacity at constant volume [J/K^2/mol].

burnman.eos.debye.entropy(T, debye_T, n)[source]

Entropy due to lattice vibrations in the Debye model [J/K].

burnman.eos.debye.helmholtz_energy(T, debye_T, n)[source]

Helmholtz free energy of lattice vibrations in the Debye model [J]. It is important to note that this does NOT include the zero point energy for the lattice. As long as you are calculating relative differences in F, this should cancel anyways.

burnman.eos.debye.molar_heat_capacity_v(T, debye_T, n)[source]

Heat capacity at constant volume. In J/K/mol

burnman.eos.debye.thermal_energy(T, debye_T, n)[source]

calculate the thermal energy of a substance. Takes the temperature, the Debye temperature, and n, the number of atoms per molecule. Returns thermal energy in J/mol

debye temperature models

burnman.eos.debye_temperature_models.PowerLawGamma(*args, **kwargs)[source]
burnman.eos.debye_temperature_models.PowerLawGammaSimple(*args, **kwargs)[source]
burnman.eos.debye_temperature_models.SLB(*args, **kwargs)[source]

einstein

burnman.eos.einstein.d2helmholtz_dTheta2(T, einstein_T, n)[source]

Second derivative of Helmholtz free energy with respect to Einstein temperature [J/K^2]

burnman.eos.einstein.dentropy_dTheta(T, einstein_T, n)[source]

Derivative of Einstein entropy with respect to Einstein temperature [J/K^2]

burnman.eos.einstein.dhelmholtz_dTheta(T, einstein_T, n)[source]

First derivative of Helmholtz free energy with respect to Einstein temperature [J/K]

burnman.eos.einstein.dmolar_heat_capacity_v_dT(T, einstein_T, n)[source]

First temperature derivative of the heat capacity at constant volume according to the Einstein model [J/K^2/mol].

burnman.eos.einstein.entropy(T, einstein_T, n)[source]

Entropy due to lattice vibrations in the Einstein model [J/K]

burnman.eos.einstein.helmholtz_energy(T, einstein_T, n)[source]

Helmholtz free energy of lattice vibrations in the Einstein model [J]. It is important to note that this does NOT include the zero point energy for the lattice. As long as you are calculating relative differences in F, this should cancel anyway.

burnman.eos.einstein.molar_heat_capacity_v(T, einstein_T, n)[source]

Heat capacity at constant volume. In J/K/mol

burnman.eos.einstein.thermal_energy(T, einstein_T, n)[source]

calculate the thermal energy of a substance. Takes the temperature, the Einstein temperature, and n, the number of atoms per molecule. Returns thermal energy in J/mol

macaw

burnman.eos.macaw.make_params(K0, K0_prime, K_infinity_prime)[source]

modified tait

burnman.eos.modified_tait.bulk_modulus(pressure, params)[source]

Returns isothermal bulk modulus \(K_T\) of the mineral. \([Pa]\). EQ 13+2

burnman.eos.modified_tait.intVdP(pressure, params)[source]

Returns the integral of VdP for the mineral. \([J]\). EQ 13

burnman.eos.modified_tait.pressure_modified_tait(Vrel, params)[source]

Pressure according to the modified Tait equation of state. Equation 2 in [HollandPowell11].

Parameters:
  • Vrel (float or numpy array) – Volume divided by the reference volume.

  • params (dictionary) – Parameter dictionary

Returns:

pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’])

Return type:

float or numpy array

burnman.eos.modified_tait.tait_constants(params)[source]

returns parameters for the modified Tait equation of state derived from K_T and its two first pressure derivatives EQ 4 from Holland and Powell, 2011

burnman.eos.modified_tait.volume(pressure, params)[source]

Returns volume [m^3] as a function of pressure [Pa] and temperature [K] Equation 12 in [HollandPowell11].

morse potential

burnman.eos.morse_potential.bulk_modulus(volume, params)[source]

Compute the bulk modulus as per the Morse potential equation of state [Mor29]. Returns bulk modulus in the same units as the reference bulk modulus. Pressure must be in \([Pa]\).

burnman.eos.morse_potential.morse_potential(VoverV0, params)[source]

Equation for the Morse Potential equation of state, returns pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’])

burnman.eos.morse_potential.shear_modulus(volume, params)[source]

Shear modulus not currently implemented for this equation of state

burnman.eos.morse_potential.volume(pressure, params)[source]

Get the Morse Potential volume at a reference temperature for a given pressure \([Pa]\). Returns molar volume in \([m^3]\)

murnaghan

burnman.eos.murnaghan.bulk_modulus(pressure, K_0, Kprime_0)[source]
burnman.eos.murnaghan.energy(volume, E_0, V_0, K_0, Kprime_0)[source]
burnman.eos.murnaghan.intVdP(pressure, V_0, K_0, Kprime_0)[source]
burnman.eos.murnaghan.pressure(volume, V_0, K_0, Kprime_0)[source]
burnman.eos.murnaghan.volume(pressure, V_0, K_0, Kprime_0)[source]

property modifiers

burnman.eos.property_modifiers.bragg_williams_excesses(pressure, temperature, params)[source]

The Bragg-Williams model is a symmetric solution model with an excess configurational entropy term determined by the specifics of order-disorder in the mineral, multiplied by some empirical factor. Expressions for the excess Gibbs free energy can be found in [HP96].

Excess properties assume that order-disorder processes are rapid compared with the timescales of pressure and temperature changes (i.e., equilibrium is maintained).

This may not be reasonable for order-disorder, especially for slow or coupled diffusers (Si-Al, for example). Properties for minerals that order-disorder slowly should be calculated using an explicit solid solution model.

Parameters

Parameter

Description

deltaH

Enthalpy change (J/mol)

deltaV

Volume change (m³/mol)

Wh

Enthalpy interaction parameter (J/mol)

Wv

Volume interaction parameter (m³/mol)

n

Related to the number of available sites for ordering

factor

An empirical factor

burnman.eos.property_modifiers.calculate_property_modifications(mineral)[source]

Sums the excesses from all the modifiers.

To calculate thermodynamic properties from the outputs, the following functions should be used (the _o suffix stands for original value):

gibbs = gibbs_o + excesses[‘G’] S = S_o - excesses[‘dGdT’] V = V_o + excesses[‘dGdP’] K_T = V / ((V_o / K_T_o) - excesses[‘d2GdP2’]) C_p = C_p_o - temperature*excesses[‘d2GdT2’] alpha = ((alpha_o*V_o) + excesses[‘d2GdPdT’]) / V

H = gibbs + temperature*S helmholtz = gibbs - pressure*V C_v = C_p - V*temperature*alpha*alpha*K_T gr = alpha*K_T*V/C_v K_S = K_T*C_p/C_v

burnman.eos.property_modifiers.debye_delta_excesses(pressure, temperature, params)[source]

Applies an excess contribution based on a Debye model. The excess Gibbs energy and its derivatives are given by:

\[\begin{split}\mathcal{G} = - U_{\textrm{Debye}}, \\ \frac{\partial \mathcal{G}}{\partial T} = - C_{V,\textrm{Debye}}, \\ \frac{\partial \mathcal{G}}{\partial P} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = - \frac{dC_{V,\textrm{Debye}}}{dT}, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T \partial P} = 0\end{split}\]

The excess entropy tends toward a constant value at high temperature and behaves like the heat capacity of a Debye model at finite temperature.

Parameters

Parameter

Description

S_inf

Entropy at infinite temperature (J/mol/K).

Theta_0

Einstein temperature (K).

burnman.eos.property_modifiers.debye_excesses(pressure, temperature, params)[source]

Applies an excess contribution based on a Debye model. The excess Gibbs energy and its derivatives are given by:

\[\begin{split}\mathcal{G} = F_{\textrm{Debye}}, \\ \frac{\partial \mathcal{G}}{\partial T} = - S_{\textrm{Debye}}, \\ \frac{\partial \mathcal{G}}{\partial P} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = - \frac{C_{V,\textrm{Debye}}}{T}, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T \partial P} = 0\end{split}\]

The excess heat capacity tends toward a constant value at high temperature.

Parameters

Parameter

Description

Cv_inf

Heat capacity at infinite temperature (J/mol/K).

Theta_0

Debye temperature (K).

burnman.eos.property_modifiers.einstein_delta_excesses(pressure, temperature, params)[source]

Applies an excess contribution based an Einstein model. The excess Gibbs energy and its derivatives are given by:

\[\begin{split}\mathcal{G} = - U_{\textrm{Einstein}}, \\ \frac{\partial \mathcal{G}}{\partial T} = - C_{V,\textrm{Einstein}}, \\ \frac{\partial \mathcal{G}}{\partial P} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = - \frac{dC_{V,\textrm{Einstein}}}{dT}, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T \partial P} = 0\end{split}\]

The excess entropy tends toward a constant value at high temperature and behaves like the heat capacity of an Einstein model at finite temperature.

Parameters

Parameter

Description

S_inf

Entropy at infinite temperature (J/mol/K).

Theta_0

Einstein temperature (K).

burnman.eos.property_modifiers.einstein_excesses(pressure, temperature, params)[source]

Applies an excess contribution based an Einstein model. The excess Gibbs energy and its derivatives are given by:

\[\begin{split}\mathcal{G} = F_{\textrm{Einstein}}, \\ \frac{\partial \mathcal{G}}{\partial T} = - S_{\textrm{Einstein}}, \\ \frac{\partial \mathcal{G}}{\partial P} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = - \frac{C_{V,\textrm{Einstein}}}{T}, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T \partial P} = 0\end{split}\]

The excess heat capacity tends toward a constant value at high temperature.

Parameters

Parameter

Description

Cv_inf

Heat capacity at infinite temperature (J/mol/K).

Theta_0

Einstein temperature (K).

burnman.eos.property_modifiers.landau_excesses(pressure, temperature, params)[source]

Applies a tricritical Landau correction to the properties of an endmember which undergoes a displacive phase transition. These transitions are not associated with an activation energy, and therefore they occur rapidly compared with seismic wave propagation.

This correction follows [Putnis92], and is done relative to the completely ordered state (at 0 K). It therefore differs in implementation from both [SLB11] and [HollandPowell11], who compute properties relative to the completely disordered state and standard states respectively. The current implementation is preferred, as the excess entropy (and heat capacity) terms are equal to zero at 0 K.

\[Tc = Tc_0 + \frac{V_D P}{S_D}\]

If the temperature is above the critical temperature, Q (the order parameter) is equal to zero, and the Gibbs free energy is simply that of the disordered phase:

\[\begin{split}\mathcal{G}_{\textrm{dis}} = -S_D \left( \left( T - Tc \right) + \frac{Tc_0}{3} \right), \\ \frac{\partial \mathcal{G}}{\partial P}_{\textrm{dis}} = V_D, \\ \frac{\partial \mathcal{G}}{\partial T}_{\textrm{dis}} = -S_D\end{split}\]

If temperature is below the critical temperature, Q is between 0 and 1. The Gibbs energy can be described thus:

\[\begin{split}Q^2 = \sqrt{\left( 1 - \frac{T}{Tc} \right)}, \\ \mathcal{G} = S_D \left((T - Tc) Q^2 + \frac{Tc_0 Q^6}{3} \right) + \mathcal{G}_{\textrm{dis}}, \\ \frac{\partial \mathcal{G}}{\partial P} = - V_D Q^2 \left(1 + \frac{T}{2 Tc} \left(1. - \frac{Tc_0}{Tc} \right) \right) + \frac{\partial \mathcal{G}}{\partial P}_{\textrm{dis}}, \\ \frac{\partial \mathcal{G}}{\partial T} = S_D Q^2 \left(\frac{3}{2} - \frac{Tc_0}{2 Tc} \right) + \frac{\partial \mathcal{G}}{\partial T}_{\textrm{dis}}, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = V_D^2 \frac{T}{S_D Tc^2 Q^2} \left( \frac{T}{4 Tc} \left(1. + \frac{Tc_0}{Tc} \right) + Q^4 \left(1. - \frac{Tc_0}{Tc} \right) - 1 \right), \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = - \frac{S_D}{Tc Q^2} \left(\frac{3}{4} - \frac{Tc_0}{4 Tc} \right), \\ \frac{\partial^2 \mathcal{G}}{\partial P \partial T} = \frac{V_D}{2 Tc Q^2} \left(1 + \left(\frac{T}{2 Tc} - Q^4 \right) \left(1 - \frac{Tc_0}{Tc} \right) \right)\end{split}\]
Parameters

Parameter

Description

Tc_0

Critical temperature at reference pressure (K)

S_D

Entropy parameter (J/mol/K)

V_D

Volume parameter (m³/mol)

burnman.eos.property_modifiers.landau_hp_excesses(pressure, temperature, params)[source]

Applies a tricritical Landau correction similar to that described above. However, this implementation follows [HollandPowell11], who compute properties relative to the standard state.

Includes the correction published within landaunote.pdf (Holland, pers. comm), which ‘corrects’ the terms involving the critical temperature Tc / Tc*.

Note that this implementation allows the order parameter Q to be greater than one.

\[Tc = Tc0 + \frac{V_D P}{S_D}\]

If the temperature is above the critical temperature, Q (the order parameter) is equal to zero. Otherwise

\[Q^2 = \sqrt{\left( \frac{Tc - T}{Tc0} \right)}\]
\[\begin{split}\mathcal{G} = Tc_0 S_D \left( Q_0^2 - \frac{Q_0 ^ 6}{3} \right) \\ - S_D \left( Tc Q^2 - Tc_0 \frac{Q ^ 6}{3} \right) \\ - T S_D \left( Q_0^2 - Q^2 \right) + P V_D Q_0^2, \\ \frac{\partial \mathcal{G}}{\partial P} = -V_D \left( Q^2 - Q_0^2 \right), \\ \frac{\partial \mathcal{G}}{\partial T} = S_D \left( Q^2 - Q_0^2 \right), \\\end{split}\]

The second derivatives of the Gibbs free energy are only non-zero if the order parameter exceeds zero. Then

\[\begin{split}\frac{\partial^2 \mathcal{G}}{\partial P^2} = -\frac{V_D^2}{2 S_D Tc_0 Q^2}, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = -\frac{S_D}{2 Tc_0 Q^2}, \\ \frac{\partial^2 \mathcal{G}}{\partial P \partial T} = \frac{V_D}{2 Tc_0 Q^2}\end{split}\]
Parameters

Parameter

Description

P_0

Reference pressure (Pa)

T_0

Reference temperature (K)

Tc_0

Critical temperature at reference pressure (K)

S_D

Entropy parameter (J/mol/K)

V_D

Volume parameter (m³/mol)

burnman.eos.property_modifiers.landau_slb_2022_excesses(pressure, temperature, params)[source]

Applies a tricritical Landau correction to the properties of an endmember which undergoes a displacive phase transition. This correction follows [SLB22], and is done relative to the state with order parameter \(Q=1\).

The order parameter of this formulation can exceed one, at odds with [Putnis92], but in better agreement with atomic intuition [SLB22]. Nevertheless, this implementation is still not perfect, as the excess entropy (and heat capacity) terms are not equal to zero at 0 K. \(Q\) is limited to values less than or equal to 2 to avoid unrealistic stabilisation at ultrahigh pressure.

Parameters

Parameter

Description

Tc_0

Critical temperature at reference pressure (K)

S_D

Entropy parameter (J/mol/K)

V_D

Volume parameter (m³/mol)

burnman.eos.property_modifiers.linear_excesses(pressure, temperature, params)[source]

A simple linear correction in pressure and temperature.

The excess Gibbs energy and its derivatives are given by:

\[\begin{split}\mathcal{G} = \Delta \mathcal{E} - T \Delta S + P \Delta V, \\ \frac{\partial \mathcal{G}}{\partial T} = - \Delta S, \\ \frac{\partial \mathcal{G}}{\partial P} = \Delta V, \\ \frac{\partial^2 \mathcal{G}}{\partial T^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial P^2} = 0, \\ \frac{\partial^2 \mathcal{G}}{\partial T \partial P} = 0\end{split}\]

This form of excess is extremely useful as a first order tweak to free energies (especially in solid solutions where data on all endmembers may not be available).

Parameters

Parameter

Description

delta_E

Energy correction (J/mol)

delta_S

Entropy correction (J/mol/K)

delta_V

Volume correction (m³/mol)

burnman.eos.property_modifiers.magnetic_excesses_chs(pressure, temperature, params)[source]

This model approximates the excess energy due to magnetic ordering. It was originally described in [CHS87]. The expressions used in this implementation can be found in [Sun91].

Parameters

Parameter

Description

structural_parameter

A dimensionless parameter related to the crystal structure

curie_temperature

A list of length 2: zero pressure Curie temperature (K) and pressure dependence (K/Pa)

magnetic_moment

A list of length 2: zero pressure magnetic moment (Bohr magnetons) and pressure dependence (Bohr magnetons/Pa)

reciprocal kprime

burnman.eos.reciprocal_kprime.bulk_modulus(pressure, params)[source]

Returns the bulk modulus at a given pressure

burnman.eos.reciprocal_kprime.shear_modulus(pressure, params)[source]

Returns the shear modulus at a given pressure

vinet

burnman.eos.vinet.bulk_modulus_vinet(volume, params)[source]

compute the bulk modulus as per the Vinet equation of state. Reference bulk modulus should be in \([Pa]\).

burnman.eos.vinet.pressure_vinet(V_rel, params)[source]

Pressure equation for the Vinet equation of state, returns pressure in the same units that are supplied for the reference bulk modulus (params[‘K_0’]), which should be in math:[Pa].

burnman.eos.vinet.volume_vinet(pressure, params)[source]

Get the volume at a reference temperature for a given pressure \([Pa]\). Returns molar volume in \([m^3]\)