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
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
volumefloat

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

pressure(temperature, volume, params)[source]
Parameters
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

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

density(volume, params)[source]

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

Parameters
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

grueneisen_parameter(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
gammafloat

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

isothermal_bulk_modulus(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
K_Tfloat

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

adiabatic_bulk_modulus(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
K_Sfloat

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

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

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Gfloat

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

molar_heat_capacity_v(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
C_Vfloat

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

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

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
C_Pfloat

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

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

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
alphafloat

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

gibbs_free_energy(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Gfloat

Gibbs free energy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)[source]
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

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]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

molar_internal_energy(pressure, temperature, volume, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ufloat

Internal energy of the mineral

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
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Birch-Murnaghan

class burnman.eos.birch_murnaghan.BirchMurnaghanBase[source]

Bases: burnman.eos.equation_of_state.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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

Pressure of the mineral, including cold and thermal parts. [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]\)

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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

class burnman.eos.BM2[source]

Bases: burnman.eos.birch_murnaghan.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

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
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

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

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

class burnman.eos.BM3[source]

Bases: burnman.eos.birch_murnaghan.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

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
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

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

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

class burnman.eos.BM4[source]

Bases: burnman.eos.equation_of_state.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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

Pressure of the mineral, including cold and thermal parts. [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]\)

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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

Vinet

class burnman.eos.Vinet[source]

Bases: burnman.eos.equation_of_state.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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

Pressure of the mineral, including cold and thermal parts. [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]\) 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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

Morse Potential

class burnman.eos.Morse[source]

Bases: burnman.eos.equation_of_state.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
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

Pressure of the mineral, including cold and thermal parts. [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]\)

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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

Reciprocal K-prime

class burnman.eos.RKprime[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

Stixrude and Lithgow-Bertelloni Formulation

class burnman.eos.slb.SLBBase[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

class burnman.eos.SLB2[source]

Bases: burnman.eos.slb.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

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.

class burnman.eos.SLB3[source]

Bases: burnman.eos.slb.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

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

class burnman.eos.mie_grueneisen_debye.MGDBase[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

class burnman.eos.MGD2[source]

Bases: burnman.eos.mie_grueneisen_debye.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

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

class burnman.eos.MGD3[source]

Bases: burnman.eos.mie_grueneisen_debye.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

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: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

De Koker Solid and Liquid Formulations

class burnman.eos.DKS_S[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

class burnman.eos.DKS_L[source]

Bases: burnman.eos.equation_of_state.EquationOfState

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

pressure(temperature, volume, params)[source]
Parameters
volumefloat

Molar volume at which to evaluate the equation of state. [m^3]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
pressurefloat

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

volume(pressure, temperature, params)[source]
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. \([Pa]\)

temperaturefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
volumefloat

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

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
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ufloat

Internal energy of the mineral

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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

Anderson and Ahrens (1994)

class burnman.eos.AA[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

CoRK

class burnman.eos.CORK[source]

Bases: burnman.eos.equation_of_state.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
volumefloat
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
densityfloat

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

enthalpy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Hfloat

Enthalpy of the mineral

entropy(pressure, temperature, volume, params)

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

helmholtz_free_energy(pressure, temperature, volume, params)
Parameters
temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ffloat

Helmholtz free energy of the mineral

molar_internal_energy(pressure, temperature, volume, params)
Parameters
pressurefloat

Pressure at which to evaluate the equation of state. [Pa]

temperaturefloat

Temperature at which to evaluate the equation of state. [K]

volumefloat

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

paramsdictionary

Dictionary containing material parameters required by the equation of state.

Returns
Ufloat

Internal energy of the mineral