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(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

adiabatic_bulk_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:

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_free_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_free_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.

Murnaghan#

class burnman.eos.Murnaghan[source]#

Bases: EquationOfState

Base class for the isothermal Murnaghan equation of state, as described in [Mur44].

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, return zero. \([unitless]\)

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

helmholtz_free_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

Birch-Murnaghan#

Base class#

class burnman.eos.birch_murnaghan.BirchMurnaghanBase[source]#

Bases: EquationOfState

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.BM2 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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

BM2#

class burnman.eos.BM2[source]#

Bases: BirchMurnaghanBase

Third order Birch Murnaghan isothermal equation of state. This uses the second order expansion for shear modulus.

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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 molar entropy \(\mathcal{S}\) of the mineral. \([J/K/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)#

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

grueneisen_parameter(pressure, temperature, volume, params)#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

helmholtz_free_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

isothermal_bulk_modulus(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)#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

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)#

Since this equation of state does not contain temperature effects, simply return zero. \([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]\).

BM3#

class burnman.eos.BM3[source]#

Bases: BirchMurnaghanBase

Third order Birch Murnaghan isothermal equation of state. This uses the third order expansion for shear modulus.

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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 molar entropy \(\mathcal{S}\) of the mineral. \([J/K/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)#

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

grueneisen_parameter(pressure, temperature, volume, params)#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

helmholtz_free_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

isothermal_bulk_modulus(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)#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

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)#

Since this equation of state does not contain temperature effects, simply return zero. \([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]\).

BM4#

class burnman.eos.BM4[source]#

Bases: EquationOfState

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

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

Vinet#

class burnman.eos.Vinet[source]#

Bases: EquationOfState

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].

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

Morse Potential#

class burnman.eos.Morse[source]#

Bases: EquationOfState

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

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

Reciprocal K-prime#

class burnman.eos.RKprime[source]#

Bases: EquationOfState

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.

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus \(K_s\) of the mineral. \([Pa]\).

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

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

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

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

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

Stixrude and Lithgow-Bertelloni Formulation#

Base class#

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_dependent_q(x, params)[source]#

Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

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]

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter \([unitless]\)

isothermal_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns isothermal bulk modulus \([Pa]\)

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus. \([Pa]\)

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

Returns shear modulus. \([Pa]\)

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

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

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_free_energy(pressure, temperature, volume, params)[source]#

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal 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]

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

helmholtz_free_energy(pressure, temperature, volume, params)[source]#

Returns the Helmholtz 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

SLB2#

class burnman.eos.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!

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus. \([Pa]\)

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)#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)#

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_free_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)#

Returns grueneisen parameter \([unitless]\)

helmholtz_free_energy(pressure, temperature, volume, params)#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus(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)#

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

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy at the pressure and temperature of the mineral [J/mol]

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]\)

volume_dependent_q(x, params)#

Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

SLB3#

class burnman.eos.SLB3[source]#

Bases: SLBBase

SLB equation of state with third order finite strain expansion for the shear modulus (this should be preferred, as it is more thermodynamically consistent.)

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus. \([Pa]\)

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)#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)#

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_free_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)#

Returns grueneisen parameter \([unitless]\)

helmholtz_free_energy(pressure, temperature, volume, params)#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus(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)#

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

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy at the pressure and temperature of the mineral [J/mol]

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]\)

volume_dependent_q(x, params)#

Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

Mie-Grüneisen-Debye#

Base class#

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 Shim, Duffy and Kenichi (2002) and Jackson and Rigden (1996). Here we mostly follow the appendices of Matas et al (2007). Of particular note is the thermal correction to the shear modulus, which was developed by Hama and Suito (1998).

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume (EQ B6)

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

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

isothermal_bulk_modulus(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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol]

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]

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ D6

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

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

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal 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]

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

helmholtz_free_energy(pressure, temperature, volume, params)[source]#

Returns the Helmholtz 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

MGD2#

class burnman.eos.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!

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ D6

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)#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)#

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_free_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)#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume (EQ B6)

helmholtz_free_energy(pressure, temperature, volume, params)#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus(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)#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol]

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy at the pressure and temperature of the mineral [J/mol]

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

MGD3#

class burnman.eos.MGD3[source]#

Bases: MGDBase

MGD equation of state with third order finite strain expansion for the shear modulus (this should be preferred, as it is more thermodynamically consistent.

adiabatic_bulk_modulus(pressure, temperature, volume, params)#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3]. EQ D6

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)#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

entropy(pressure, temperature, volume, params)#

Returns the entropy at the pressure and temperature of the mineral [J/K/mol]

gibbs_free_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)#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume (EQ B6)

helmholtz_free_energy(pressure, temperature, volume, params)#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus(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)#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol]

molar_internal_energy(pressure, temperature, volume, params)#

Returns the internal energy at the pressure and temperature of the mineral [J/mol]

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

Modified Tait#

class burnman.eos.MT[source]#

Bases: EquationOfState

Base class for the generic modified Tait equation of state. References for this can be found in [HuangChow74] and [HollandPowell11] (followed here).

An instance “m” of a Mineral can be assigned this equation of state with the command m.set_method(‘mt’) (or by initialising the class with the param equation_of_state = ‘mt’).

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(pressure, temperature, volume, params)[source]#

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([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.

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal energy \(\mathcal{E}\) of the mineral. \([J/mol]\)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return a very large number. \([J/K/mol]\)

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

Since this equation of state does not contain temperature effects, simply return zero. \([1/K]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Since this equation of state does not contain temperature effects, simply return zero. \([unitless]\)

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

helmholtz_free_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

Holland and Powell Formulations#

HP_TMT (2011 solid formulation)#

class burnman.eos.HP_TMT[source]#

Bases: EquationOfState

Base class for the thermal equation of state based on the generic modified Tait equation of state (class MT), as described in [HollandPowell11].

An instance “m” of a Mineral can be assigned this equation of state with the command m.set_method(‘hp_tmt’) (or by initialising the class with the param equation_of_state = ‘hp_tmt’

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

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

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

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

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume.

isothermal_bulk_modulus(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.

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol].

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

Returns thermal expansivity at the pressure, temperature, and volume [1/K]. This function replaces -Pth in EQ 13+1 with P-Pth for non-ambient temperature

molar_heat_capacity_p0(temperature, params)[source]#

Returns heat capacity at ambient pressure as a function of temperature [J/K/mol]. Cp = a + bT + cT^-2 + dT^-0.5 in [HollandPowell11].

molar_heat_capacity_p_einstein(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant pressure at the pressure, temperature, and volume, using the C_v and Einstein model [J/K/mol] WARNING: Only for comparison with internally self-consistent C_p

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

gibbs_free_energy(pressure, temperature, volume, params)[source]#

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

helmholtz_free_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]#

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy [J/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

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_TMTL (2011 liquid formulation)#

class burnman.eos.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].

An instance “m” of a Mineral can be assigned this equation of state with the command m.set_method(‘hp_tmtL’) (or by initialising the class with the param equation_of_state = ‘hp_tmtL’

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]

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume.

isothermal_bulk_modulus(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.

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol].

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

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

molar_heat_capacity_p0(temperature, params)[source]#

Returns heat capacity at ambient pressure as a function of temperature [J/K/mol] Cp = a + bT + cT^-2 + dT^-0.5 in [HollandPowell98].

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

gibbs_free_energy(pressure, temperature, volume, params)[source]#

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

helmholtz_free_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]#

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy [J/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

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

HP98 (1998 formulation)#

class burnman.eos.HP98[source]#

Bases: EquationOfState

Base class for the thermal equation of state described in [HollandPowell98].

An instance “m” of a Mineral can be assigned this equation of state with the command m.set_method(‘hp98’) (or by initialising the class with the param equation_of_state = ‘hp98’

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]

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume.

isothermal_bulk_modulus(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.

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol].

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

Returns thermal expansivity at the pressure, temperature, and volume [1/K]

molar_heat_capacity_p0(temperature, params)[source]#

Returns heat capacity at ambient pressure as a function of temperature [J/K/mol] Cp = a + bT + cT^-2 + dT^-0.5 in [HollandPowell98].

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

gibbs_free_energy(pressure, temperature, volume, params)[source]#

Returns the gibbs free energy [J/mol] as a function of pressure [Pa] and temperature [K].

helmholtz_free_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]#

Returns the entropy [J/K/mol] as a function of pressure [Pa] and temperature [K].

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy [J/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

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

De Koker Solid and Liquid Formulations#

DKS_S (Solid formulation)#

class burnman.eos.DKS_S[source]#

Bases: EquationOfState

Base class for the finite strain solid equation of state detailed in [deKokerKarkiStixrude13] (supplementary materials).

volume_dependent_q(x, params)[source]#

Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

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]

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter \([unitless]\)

isothermal_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns isothermal bulk modulus \([Pa]\)

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus. \([Pa]\)

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

Returns shear modulus. \([Pa]\)

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

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

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_free_energy(pressure, temperature, volume, params)[source]#

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal 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]

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

helmholtz_free_energy(pressure, temperature, volume, params)[source]#

Returns the Helmholtz 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

DKS_L (Liquid formulation)#

class burnman.eos.DKS_L[source]#

Bases: EquationOfState

Base class for the finite strain liquid equation of state detailed in [deKokerKarkiStixrude13] (supplementary materials).

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(pressure, temperature, volume, params)[source]#

Returns isothermal bulk modulus \([Pa]\)

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus. \([Pa]\)

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter. \([unitless]\)

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

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

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

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_free_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]

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol]

helmholtz_free_energy(pressure, temperature, volume, params)[source]#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

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]#

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

Anderson and Ahrens (1994)#

class burnman.eos.AA[source]#

Bases: EquationOfState

Class for the :math`E-V-S` liquid metal EOS detailed in [AndersonAhrens94]. Internal energy (\(E\)) is first calculated along a reference isentrope using a fourth order BM EoS (\(V_0\), \(KS\), \(KS'\), \(KS''\)), which gives volume as a function of pressure, coupled with the thermodynamic identity:

\(-\partial E/ \partial V |_S = P\).

The temperature along the isentrope is calculated via

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

which gives:

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

The thermal effect on internal energy is calculated at constant volume using expressions for the kinetic, electronic and potential contributions to the volumetric heat capacity, which can then be integrated with respect to temperature:

\(\partial E/\partial T |_V = C_V\)

\(\partial E/\partial S |_V = T\)

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, this expression is inconsistent with the equation of state away from the principal isentrope. Here we choose to calculate the thermal pressure and Grueneisen parameter thus:

1) As energy and entropy are defined by the equation of state at any temperature and volume, pressure can be found by via the expression:

\(\partial E/\partial V |_S = P\)

2) The Grueneisen parameter can now be determined as \(\gamma = V \partial P/\partial E |_V\)

To reiterate: away from the reference isentrope, the Grueneisen parameter calculated using these expressions is not equal to the (thermodynamically inconsistent) analytical expression given by [AndersonAhrens94].

A final note: the expression for \(\Lambda\) (Equation 17). does not reproduce Figure 5. We assume here that the figure matches the model actually used by [AndersonAhrens94], which has the form: \(F(-325.23 + 302.07 (\rho/\rho_0) + 30.45 (\rho/\rho_0)^{0.4})\).

volume_dependent_q(x, params)[source]#

Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

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]

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter \([unitless]\)

isothermal_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns isothermal bulk modulus \([Pa]\)

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus. \([Pa]\)

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

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

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

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]\) Currently found by numerical differentiation (1/V * dV/dT)

gibbs_free_energy(pressure, temperature, volume, params)[source]#

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

Returns the internal 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]

enthalpy(pressure, temperature, volume, params)[source]#

Returns the enthalpy at the pressure and temperature of the mineral [J/mol] E + PV

helmholtz_free_energy(pressure, temperature, volume, params)[source]#

Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol] E - TS

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

CoRK#

class burnman.eos.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.

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns grueneisen parameter [unitless] as a function of pressure, temperature, and volume.

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(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.

molar_heat_capacity_v(pressure, temperature, volume, params)[source]#

Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol].

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_p0(temperature, params)[source]#

Returns heat capacity at ambient pressure as a function of temperature [J/K/mol] Cp = a + bT + cT^-2 + dT^-0.5 in Holland and Powell, 2011

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

Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

Returns adiabatic bulk modulus [Pa] as a function of pressure [Pa], temperature [K], and volume [m^3].

gibbs_free_energy(pressure, temperature, volume, params)[source]#

Returns the gibbs free energy [J/mol] 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]

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)#
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

helmholtz_free_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

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 et al. (2007)#

class burnman.eos.BroshCalphad[source]#

Bases: EquationOfState

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

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(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]\).

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]#

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

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

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

molar_internal_energy(pressure, temperature, volume, params)[source]#

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

gibbs_free_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.

grueneisen_parameter(pressure, temperature, volume, params)[source]#

Returns the grueneisen parameter. This is a dependent thermodynamic variable in this equation of state.

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

helmholtz_free_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

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