Geotherms

class burnman.classes.geotherm.Geotherm(depths_array, temperatures_array)[source]

Bases: object

Base class for all geotherms. Subclasses should implement a temperatures(depths) method or inherit the one provided here.

Parameters:
  • depths_array (np.array) – Array of depths (in meters).

  • temperatures_array (np.array) – Array of temperatures (in Kelvin).

temperatures(depths)[source]

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.BrownShankland[source]

Bases: Geotherm

Geotherm from Brown and Shankland, 1981 ([BS81])

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.Anderson[source]

Bases: Geotherm

Geotherm from Anderson, 1982 ([And82])

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.StaceyContinental[source]

Bases: Geotherm

Continental geotherm from Stacey, 1977 ([Sta77])

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.StaceyOceanic[source]

Bases: Geotherm

Oceanic geotherm from Stacey, 1977 ([Sta77])

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.Katsura2022[source]

Bases: Geotherm

Geotherm from Katsura, 2022 ([Kat22])

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.Plesa2022Mars6cm3[source]

Bases: Geotherm

Martian areotherm from Plesa, 2022 ([PWK+22]) assuming 6 cm³/mol activation volume for mantle viscosity.

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.array of float

Raises:
  • ValueError – If depths are outside the range of the geotherm.

  • ValueError – If depths_array or temperatures_array is None.

class burnman.classes.geotherm.GeothermFromPressures(pressures_array, temperatures_array, depth_to_pressure_model=<burnman.classes.seismic.PREM object>)[source]

Bases: Geotherm

Geotherm defined by pressures and temperatures.

Parameters:
  • pressures_array (np.array) – Array of pressures (in Pa).

  • temperatures_array (np.array) – Array of temperatures (in Kelvin).

  • depth_to_pressure_model (burnman.seismic.SeismicModel or other object with a pressure(depth) method.) – Object with an object.pressure(depth) method, such as burnman.seismic.SeismicModel. If not given, the PREM model will be used.

temperatures_from_pressures(pressures)[source]

Evaluate the geotherm at given pressures.

Parameters:

pressures (array-like of float) – Pressures at which to evaluate the geotherm (in Pa).

Returns:

Temperatures at the given pressures (in Kelvin).

Return type:

np.ndarray of float

temperatures(depths)[source]

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.ndarray of float

class burnman.classes.geotherm.Anzellini2013(depth_to_pressure_model=<burnman.classes.seismic.PREM object>)[source]

Bases: GeothermFromPressures

Geotherm from Anzellini et al., 2013 ([ADM+13]) (their Figure S4). Mantle part is from Steinberger and Holme, 2008 ([SH08]).

Parameters:

depth_to_pressure_model (burnman.seismic.SeismicModel or other object with a pressure(depth) method.) – Object with an object.pressure(depth) method, such as burnman.seismic.SeismicModel. If not given, the PREM model will be used.

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.ndarray of float

temperatures_from_pressures(pressures)

Evaluate the geotherm at given pressures.

Parameters:

pressures (array-like of float) – Pressures at which to evaluate the geotherm (in Pa).

Returns:

Temperatures at the given pressures (in Kelvin).

Return type:

np.ndarray of float

class burnman.classes.geotherm.AdiabaticGeotherm(material, T_0, P_0, depth_to_pressure_model=<burnman.classes.seismic.PREM object>)[source]

Bases: GeothermFromPressures

Geotherm calculated as an adiabat for a given material, anchored on a specified temperature and pressure.

In addition to the temperature method of the standard Geotherm class, this class also provides a temperatures_from_pressures method.

Initialisation parameters:

Parameters:
  • material (burnman.Material) – burnman.Material object.

  • T_0 (float) – Temperature at the anchor pressure [K].

  • P_0 (float) – The anchor pressure [Pa].

  • depth_to_pressure_model (burnman.seismic.SeismicModel or other object with a pressure(depth) method.) – Object with an object.pressure(depth) method, such as burnman.seismic.SeismicModel. If not given, the PREM model will be used.

temperatures_from_pressures(pressures)[source]

Evaluate the adiabat geotherm at given pressures.

Parameters:

pressures (array-like of float) – Pressures at which to evaluate the geotherm (in Pa).

Returns:

Temperatures at the given pressures (in Kelvin).

Return type:

np.ndarray of float

temperatures(depths)

Evaluate the geotherm at given depths.

Parameters:

depths (array-like of float) – Depths at which to evaluate the geotherm (in meters).

Returns:

Temperatures at the given depths (in Kelvin).

Return type:

np.ndarray of float

burnman.classes.geotherm.adiabatic_profile(pressures, rock, T_0, P_0=None)[source]

This function calculates an adiabat for a rock anchored on a specified temperature and pressure.

A starting guess is provided by integrating:

\[\frac{\partial T}{\partial P} = \frac{ \gamma T}{ K_s }\]

from the anchor point. In this expression, \(\gamma\) is the Grueneisen parameter and \(K_s\) is the adiabatic bulk modulus. The exact adiabatic profile is then found by finding the temperature profile along which the entropy is constant.

Parameters:
  • pressures (list of floats) – The list of pressures in \([Pa]\) at which to evaluate the geotherm.

  • rock (burnman.composite) – Composite for which we compute the adiabat. From this material we must compute average Grueneisen parameters and adiabatic bulk moduli for each pressure/temperature.

  • T_0 (float) – An anchor temperature, corresponding to the temperature at the anchor pressure. \([K]\)

  • P_0 (float, optional) – An anchor pressure. If not given, the first pressure in the pressures list will be used.

Returns:

The list of temperatures for each pressure. \([K]\)

Return type:

numpy.array of floats