BurnMan: a thermodynamic and geophysics toolkit for the Earth and planetary sciences¶
BurnMan is a Python library for computing the thermodynamic and thermoelastic properties of geological materials from simple mineral endmembers to complex multilayered planetary interiors.
BurnMan is released under the GNU GPL v2 or newer. It relies heavily on numpy, scipy, and matplotlib.
 Homepage: http://burnman.org
 Documentation: http://burnman.readthedocs.io
 Source code: https://github.com/geodynamics/burnman
If you haven’t yet installed BurnMan, you can go straight to Installation for detailed instructions. After that, you might want to try out our Tutorial or the other Examples. Finally, and most importantly, have fun!
Citing BurnMan¶
If you use BurnMan in your work, we ask that you cite the following publications:
 Cottaar, S., Heister, T., Myhill, R., Rose, I., and Unterborn, C. (2017): BurnMan v0.10.0 [Software]. Computational Infrastructure for Geodynamics. Zenodo. (link)
 Cottaar S., Heister, T., Rose, I., and Unterborn, C., 2014, BurnMan: A lower mantle mineral physics toolkit, Geochemistry, Geophysics, and Geosystems, 15(4), 11641179 (link)
Contributing to BurnMan¶
We welcome the submission of scripts used to create published results. If you have any scripts that you would like to contribute, please contact us at info@burnman.org or make a pull request at https://github.com/geodynamics/burnman
Acknowledgement and Support¶
 This project was initiated at, and followup research support was received through, Cooperative Institute of Deep Earth Research, CIDER (NSF FESD grant 1135452) – see www.deepearth.org
 We thank all the members of the CIDER Mg/Si team for their input: Valentina Magni, Yu Huang, JiaChao Liu, Marc Hirschmann, and Barbara Romanowicz. We also thank Lars Stixrude for providing benchmarking calculations and Zack Geballe, Motohiko Murakami, Bill McDonough, Quentin Williams, Wendy Panero, and Wolfgang Bangerth for helpful discussions.
 We thank CIG (www.geodynamics.org) for support and accepting our donation of BurnMan as an official project.
Introducing BurnMan¶
Overview¶
BurnMan is an open source mineral physics and seismological toolkit written in Python which can enable a user to calculate (or fit) the physical and chemical properties of endmember minerals, fluids/melts, solid solutions, and composite assemblages.
Properties which BurnMan can calculate include:
 the thermodynamic free energies, allowing phase equilibrium calculations, endmember activities, chemical potentials and oxygen (and other) fugacities.
 entropy, enabling the user to calculate isentropes for a given assemblage.
 volume, to allow the user to create density profiles.
 seismic velocities, including VoigtReussHill and HashinStrikman bounds and averages.
The toolkit itself comes with a large set of classes and functions which are designed to allow the user to easily combine mineral physics with geophysics, and geodynamics. The features of BurnMan include:
 the full codebase, which includes implementations of many static and thermal equations of state (including Vinet, Birch Murnaghan, MieDebyeGrueneisen, Modified Tait), and solution models (ideal, symmetric, asymmetric, subregular).
 popular endmember and solution datasets already coded into burnmanusable format (including [HollandPowell11], [SLB05] and [SLB11])
 Optimal least squares fitting routines for multivariate data with (potentially correlated) errors in pressure and temperature. As an example, such functions can be used to simultaneously fit volumes, seismic velocities and enthalpies.
 a “Planet” class, which selfconsistently calculates gravity profiles, mass, moment of inertia of planets given the chemical and temperature structure of a planet
 published geotherms
 a tutorial on the basic use of BurnMan
 a large collection of annotated examples
 a set of highlevel functions which create files readable by seismological and geodynamic software, including: Mineos [MWF11], AxiSEM [NissenMeyervanDrielStahler+14] and ASPECT
 an extensive suite of unit tests to ensure code functions as intended
 a series of benchmarks comparing BurnMan output with published data
 a directory containing usercontributed code from published papers
BurnMan makes extensive use of SciPy and NumPy, which are widely used Python libraries for scientific computation. Matplotlib is used to display results and produce publication quality figures. The computations are consistently formulated in terms of SI units.
The code documentation including class and function descriptions can be found online at http://burnman.readthedocs.io.
This software has been designed to allow the enduser a great deal of freedom to do whatever calculations they may wish and to add their own modules. The underlying Python classes have been designed to make new endmember, solid solution and composite models easy to read and create. We have endeavoured to provide examples and benchmarks which cover the most popular uses of the software, some of which are included in the figure below. This list is certainly not exhaustive, and we will definitely have missed interesting applications. We will be very happy to accept contributions in form of corrections, examples, or new features.
Structure¶
Installation¶
Requirements¶
 Python 2.7.x or Python 3.4+
 Python modules: NumPy, SciPy, Matplotlib
Source code¶
The source code can be found at https://github.com/geodynamics/burnman.
Install under Ubuntu¶
 Install dependencies using apt by opening a terminal window and entering
sudo aptget install python pythonscipy pythonnumpy pythonmatplotlib git
 Clone the BurnMan repository
git clone https://github.com/geodynamics/burnman.git
 Go to the Burnman examples directory and type:
python example_beginner.py
Figures should show up, indicating that it is working.
Install on a Mac¶
 get Xcode
 If you don’t have Python yet, download it (for free) from
python.org/download . Make sure to use either Python 2.7 or Python 3.4+.
To check your version of python, type the following in a
terminal:
python version
 Install the latest Numpy version from http://sourceforge.net/projects/numpy/files/NumPy/
 Install the latest Scipy from http://sourceforge.net/projects/scipy/files/
 Install the latest Matplotlib from http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib1.1.1/
 Clone the BurnMan repository
git clone https://github.com/geodynamics/burnman.git
 Go to the Burnman examples directory and type python example_beginner.py Figures should show up, indicating that it is working.
Install under Windows¶
To get Python 2.7.x (for example) running under Windows:
 Download Python from http://www.python.org/ and install the version at C:Python27; the 32bit version is recommended
 Go to http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy, download “numpyMKL1.6.2.win32py2.7.exe” and install
 Go to http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy, download “scipy0.10.1.win32py2.7.exe” and install
 Go to http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib, download “matplotlib1.1.1.win32py2.7.exe” and install
 Download BurnMan from github (https://github.com/geodynamics/burnman)
 Open Python Shell (IDLE Python GUI)
 File – Open – find one of the example files
 Run the module (or press F5)
Citing BurnMan¶
If you use BurnMan in your work, we ask that you cite the following publications:
 Cottaar, S., Heister, T., Myhill, R., Rose, I., and Unterborn, C. (2017): BurnMan v0.10.0 [Software]. Computational Infrastructure for Geodynamics. Zenodo. (link)
 Cottaar S., Heister, T., Rose, I., and Unterborn, C., 2014, BurnMan: A lower mantle mineral physics toolkit, Geochemistry, Geophysics, and Geosystems, 15(4), 11641179 (link)
Contributing to BurnMan¶
We welcome the submission of scripts used to create published results. If you have any scripts that you would like to contribute, please contact us at info@burnman.org or make a pull request at https://github.com/geodynamics/burnman
Acknowledgement and Support¶
 This project was initiated at, and followup research support was received through, Cooperative Institute of Deep Earth Research, CIDER (NSF FESD grant 1135452) – see www.deepearth.org
 We thank all the members of the CIDER Mg/Si team for their input: Valentina Magni, Yu Huang, JiaChao Liu, Marc Hirschmann, and Barbara Romanowicz. We also thank Lars Stixrude for providing benchmarking calculations and Zack Geballe, Motohiko Murakami, Bill McDonough, Quentin Williams, Wendy Panero, and Wolfgang Bangerth for helpful discussions.
 We thank CIG (www.geodynamics.org) for support and accepting our donation of BurnMan as an official project.
Mathematical Background¶
Here is a bit of background on the methods used to calculate thermoelastic and thermodynamic properties in BurnMan. More detail can be found in the cited papers.
Endmember Properties¶
Calculating Thermoelastic Properties¶
To calculate the bulk (\(K\)) modulus, shear modulus (\(G\)) and density (\(\rho\)) of a material at a given pressure (\(P\)) and temperature (\(T\)), optionally defined by a geotherm) and determine the seismic velocities (\(V_S, V_P, V_\Phi\)), one uses an Equation of State (EoS). Currently the following EoSs are supported in BurnMan:
 BirchMurnaghan finitestrain EoS (excludes temperature effects, [Poi91]),
 BirchMurnaghan finitestrain EoS with a MieGrüneisenDebye thermal correction, as formulated by [SLB05].
 BirchMurnaghan finitestrain EoS with a MieGrüneisenDebye thermal correction, as formulated by [MBR+07].
 Modified Tait EoS (excludes temperature effects, [HuangChow74]),
 Modified Tait EoS with a pseudoEinstein model for thermal corrections, as formulated by [HollandPowell11].
 CompensatedRedlichKwong for fluids, as formulated by [HP91].
To calculate these thermoelastic parameters, the EoS requires the user to input the pressure, temperature, and the phases and their molar fractions. These inputs and outputs are further discussed in User input.
BirchMurnaghan (isothermal)¶
The BirchMurnaghan equation is an isothermal Eulerian finitestrain EoS relating pressure and volume. The negative finitestrain (or compression) is defined as
where \(V\) is the volume at a given pressure and \(V_0\) is the volume at a reference state (\(P = 10^5\) Pa , \(T\) = 300 K). The pressure and elastic moduli are derived from a thirdorder Taylor expansion of Helmholtz free energy in \(f\) and evaluating the appropriate volume and strain derivatives (e.g., [Poi91]). For an isotropic material one obtains for the pressure, isothermal bulk modulus, and shear modulus:
Here \(K_0\) and \(G_0\) are the reference bulk modulus and shear modulus and \(K_0^\prime\) and \({G}^\prime_{0}\) are the derivative of the respective moduli with respect to pressure.
BurnMan has the option to use the secondorder expansion for shear modulus by dropping the \(f^2\) terms in these equations (as is sometimes done for experimental fits or EoS modeling).
Modified Tait (isothermal)¶
The Modified Tait equation of state was developed by [HuangChow74]. It has the considerable benefit of allowing volume to be expressed as a function of pressure. It performs very well to pressures and temperatures relevant to the deep Earth [HollandPowell11].
MieGrüneisenDebye (thermal correction to BirchMurnaghan)¶
The Debye model for the Helmholtz free energy can be written as follows [MBR+07]
where \(\theta\) is the Debye temperature and \(\gamma\) is the Grüneisen parameter.
Using thermodynamic relations we can derive equations for the thermal pressure and bulk modulus
The thermal shear correction used in BurnMan was developed by [HamaSuito98]
The total pressure, bulk and shear moduli can be calculated from the following sums
This equation of state is substantially the same as that in SLB2005 (see below). The primary differences are in the thermal correction to the shear modulus and in the volume dependences of the Debye temperature and the Gruneisen parameter.
HP2011 (thermal correction to Modified Tait)¶
The thermal pressure can be incorporated into the Modified Tait equation of state, replacing \(P\) with \(P\left(P_{\textrm{th}}  P_{\textrm{th0}}\right)\) in Equation (5) [HollandPowell11]. Thermal pressure is calculated using a MieGrüneisen equation of state and an Einstein model for heat capacity, even though the Einstein model is not actually used for the heat capacity when calculating the enthalpy and entropy (see following section).
\(\Theta\) is the Einstein temperature of the crystal in Kelvin, approximated for a substance \(i\) with \(n_i\) atoms in the unit formula and a molar entropy \(S_i\) using the empirical formula
SLB2005 (for solids, thermal)¶
Thermal corrections for pressure, and isothermal bulk modulus and shear modulus are derived from the MieGrüneisenDebye EoS with the quasiharmonic approximation. Here we adopt the formalism of [SLB05] where these corrections are added to equations (2)–(4):
The \(\Delta\) refers to the difference in the relevant quantity from the reference temperature (300 K). \(\gamma\) is the Grüneisen parameter, \(q\) is the logarithmic volume derivative of the Grüneisen parameter, \(\eta_{S}\) is the shear strain derivative of the Grüneisen parameter, \(C_V\) is the heat capacity at constant volume, and \(\mathcal{U}\) is the internal energy at temperature \(T\). \(C_V\) and \(\mathcal{U}\) are calculated using the Debye model for vibrational energy of a lattice. These quantities are calculated as follows:
where \(\theta\) is the Debye temperature of the mineral, \(\nu\) is the frequency of vibrational modes for the mineral, \(n\) is the number of atoms per formula unit (e.g. 2 for periclase, 5 for perovskite), and \(R\) is the gas constant. Under the approximation that the vibrational frequencies behave the same under strain, we may identify \(\nu/\nu_0 = \theta/\theta_0\). The quantities \(\gamma_0\), \(\eta_{S0}\) \(q_0\), and \(\theta_0\) are the experimentally determined values for those parameters at the reference state.
Due to the fact that a planetary mantle is rarely isothermal along a geotherm, it is more appropriate to use the adiabatic bulk modulus \(K_S\) instead of \(K_T\), which is calculated using
where \(\alpha\) is the coefficient of thermal expansion:
There is no difference between the isothermal and adiabatic shear moduli for an isotropic solid. All together this makes an eleven parameter EoS model, which is summarized in the Table below. For more details on the EoS, we refer readers to [SLB05].
User Input  Symbol  Definition  Units 

V_0  \(V_{0}\) 

m \(^{3}\) mol \(^{1}\) 
K_0  \(K_{0}\)  Isothermal bulk modulus at P=10^5 Pa, T = 300 K  Pa 
Kprime_0  \(K^\prime_0\)  Pressure derivative of \(K_{0}\)  
G_0  \(G_{0}\)  Shear modulus at P = \(10^5\) Pa, T = 300 K  Pa 
Gprime_0  \(G^\prime_0\)  Pressure derivative of \(G_{0}\)  
molar_mass  \(\mu\)  mass per mole formula unit  kg \(\mathrm{mol}^{1}\) 
n  n  number of atoms per formula unit  
Debye_0  \(\theta_{0}\)  Debye Temperature  K 
grueneisen_0  \(\gamma_{0}\)  Grüneisen parameter at P = \(10^5\) Pa, T = 300 K  
q0  \(q_{0}\)  Logarithmic volume derivative of the Grüneisen parameter  
eta_s_0  \(\eta_{S0}\)  Shear strain derivative of the Grüneisen parameter 
This equation of state is substantially the same as that of the MieGruneisenDebye (see above). The primary differences are in the thermal correction to the shear modulus and in the volume dependences of the Debye temperature and the Gruneisen parameter.
CompensatedRedlichKwong (for fluids, thermal)¶
The CORK equation of state [HP91] is a simple virialtype extension to the modified RedlichKwong (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.
Calculating Thermodynamic Properties¶
So far, we have concentrated on the thermoelastic properties of minerals. There are, however, additional thermodynamic properties which are required to describe the thermal properties such as the energy, entropy and heat capacity. These properties are related by the following expressions:
where \(P\) is the pressure, \(T\) is the temperature and \(\mathcal{E}\), \(\mathcal{F}\), \(\mathcal{H}\), \(\mathcal{S}\) and \(V\) are the molar internal energy, Helmholtz free energy, enthalpy, entropy and volume respectively.
HP2011¶
The heat capacity at one bar is given by an empirical polynomial fit to experimental data
The entropy at high pressure and temperature can be calculated by differentiating the expression for \(\mathcal{G}\) with respect to temperature
Finally, the enthalpy at high pressure and temperature can be calculated
SLB2005¶
The Debye model yields the Helmholtz free energy and entropy due to lattice vibrations
Property modifiers¶
The thermodynamic models above consider the effects of strain and quasiharmonic lattice vibrations on the free energies of minerals at given temperatures and pressures. There are a number of additional processes, such as isochemical orderdisorder and magnetic effects which also contribute to the total free energy of a phase. Corrections for these additional processes can be applied in a number of different ways. Burnman currently includes implementations of the following:
 Linear excesses (useful for DQF modifications for [HollandPowell11])
 Tricritical Landau model (two formulations)
 BraggWilliams model
 Magnetic excesses
In all cases, the excess Gibbs free energy \(\mathcal{G}\) and first and second partial derivatives with respect to pressure and temperature are calculated. The thermodynamic properties of each phase are then modified in a consistent manner; specifically:
Subscripts \(_o\) and \(_m\) indicate original properties and modifiers respectively. Importantly, this allows us to stack modifications such as multiple Landau transitions in a simple and straightforward manner. In the burnman code, we add property modifiers as an attribute to each mineral as a list. For example:
from burnman.minerals import SLB_2011
stv = SLB_2011.stishovite()
stv.property_modifiers = [
['landau',
{'Tc_0': 4250.0, 'S_D': 0.012, 'V_D': 1e09}]]
['linear',
{'delta_E': 1.e3, 'delta_S': 0., 'delta_V': 0.}]]
Each modifier is a list with two elements, first the name of the modifier type, and second a dictionary with the required parameters for that model. A list of parameters for each model is given in the following sections.
Linear excesses (linear)¶
A simple linear correction in pressure and temperature. Parameters are ‘delta_E’, ‘delta_S’ and ‘delta_V’.
Tricritical Landau model (landau)¶
Applies a tricritical Landau correction to the properties of an endmember which undergoes a displacive phase transition. These transitions are not associated with an activation energy, and therefore they occur rapidly compared with seismic wave propagation. Parameters are ‘Tc_0’, ‘S_D’ and ‘V_D’.
This correction follows [Putnis92], and is done relative to the completely ordered state (at 0 K). It therefore differs in implementation from both [SLB11] and [HollandPowell11], who compute properties relative to the completely disordered state and standard states respectively. The current implementation is preferred, as the excess entropy (and heat capacity) terms are equal to zero at 0 K.
If the temperature is above the critical temperature, Q (the order parameter) is equal to zero, and the Gibbs free energy is simply that of the disordered phase:
If temperature is below the critical temperature, Q is between 0 and 1. The gibbs free energy can be described thus:
Tricritical Landau model (landau_hp)¶
Applies a tricritical Landau correction similar to that described above. However, this implementation follows [HollandPowell11], who compute properties relative to the standard state. Parameters are ‘P_0’, ‘T_0’, ‘Tc_0’, ‘S_D’ and ‘V_D’.
It is worth noting that the correction described by [HollandPowell11] has been incorrectly used throughout the geological literature, particularly in studies involving magnetite (which includes studies comparing oxygen fugacities to the FMQ buffer (due to an incorrect calculation of the properties of magnetite). Note that even if the implementation is correct, it still allows the order parameter Q to be greater than one, which is physically impossible.
We include this implementation in order to reproduce the dataset of [HollandPowell11]. If you are creating your own minerals, we recommend using the standard implementation.
If the temperature is above the critical temperature, Q (the order parameter) is equal to zero. Otherwise
The second derivatives of the Gibbs free energy are only nonzero if the order parameter exceeds zero. Then
BraggWilliams model (bragg_williams)¶
The BraggWilliams model is essentially a symmetric solid solution model between endmembers, with an excess configurational entropy term predicted on the basis of the specifics of orderdisorder in the mineral, multiplied by some empirical factor. Expressions for the excess Gibbs free energy can be found in [HP96]. Parameters are ‘deltaH’, ‘deltaV’, ‘Wh’, ‘Wv’, ‘n’ and ‘factor’.
Magnetic model (magnetic_chs)¶
This model approximates the excess energy due to magnetic ordering. It was originally described in [CHS87]. The expressions used by BurnMan can be found in [Sun91]. Parameters are ‘structural_parameter’, ‘curie_temperature’[2] (zero pressure value and pressure dependence) and ‘magnetic_moment’[2] (zero pressure value and pressure dependence).
Calculating Solid Solution Properties¶
Many minerals can exist over a finite region of composition space. These spaces are bounded by endmembers (which may themselves not be stable), and each individual mineral can then be described as a solid solution of those endmembers. At an atomic level, different elements substitute for one another on distinct crystallographic sites in the structure. For example, low pressure silicate garnets have two distinct sites on which mixing takes place; a dodecahedral site (of which there are three per unit cell on an eightcation basis) and octahedral site (of which there are two per unit cell). A third tetrahedral cation site (three per unit cell) is usually assumed to be occupied solely by silicon, and therefore can be ignored in solid solution calculations. The chemical formula of many low pressure garnets exist within the solid solution:
We typically calculate solid solution properties by appropriate differentiation of the Gibbs Free energy, where
Implemented models¶
Ideal solid solutions¶
A solid solution is not simply a mechanical mixture of its constituent endmembers. The mixing of different elements on sites results in an excess configurational entropy
where \(s\) is a site in the lattice \(M\), \(c\) are the cations mixing on site \(s\) and \(\nu\) is the number of \(s\) sites in the formula unit. Solid solutions where this configurational entropy is the only deviation from a mechanical mixture are termed ideal. From this expression, we can see that
Symmetric solid solutions¶
Many real minerals are not well approximated as ideal solid solutions. Deviations are the result of elastic and chemical interactions between ions with different physical and chemical characteristics. Regular (symmetric) solid solution models are designed to account for the simplest form of deviations from ideality, by allowing the addition of excess enthalpies, nonconfigurational entropies and volumes to the ideal solution model. These excess terms have the matrix form [DPWH07]
where \(p\) is a vector of molar fractions of each of the \(n\) endmembers and \(W\) is a strictly uppertriangular matrix of interaction terms between endmembers. Excesses within binary systems (\(i\)\(j\)) have a quadratic form and a maximum of \(W_{ij}/4\) halfway between the two endmembers.
Asymmetric solid solutions¶
Some solid solutions exhibit asymmetric excess terms. These can be accounted for with an asymmetric solid solution [DPWH07]
\(\alpha\) is a vector of “van Laar parameters” governing asymmetry in the excess properties.
The \(w_{ij}\) terms are a set of interaction terms between endmembers \(i\) and \(j\). If all the \(\alpha\) terms are equal to unity, a nonzero \(w\) yields an excess with a quadratic form and a maximum of \(w/4\) halfway between the two endmembers.
Subregular solid solutions¶
An alternative way to create asymmetric solution models is to expand each binary term as a cubic expression [HW89]. In this case,
Note the similarity with the symmetric solution model, the primary difference being that there are not two interaction terms for each binary.
Thermodynamic and thermoelastic properties¶
From the preceeding equations, we can define the thermodynamic potentials of solid solutions:
We can also define the derivatives of volume with respect to pressure and temperature
Making the approximation that the excess entropy has no temperature dependence
Including orderdisorder¶
Orderdisorder can be treated trivially with solid solutions. The only difference between mixing between ordered and disordered endmembers is that disordered endmembers have a nonzero configurational entropy, which must be accounted for when calculating the excess entropy within a solid solution.
Including spin transitions¶
The regular solid solution formalism should provide an elegant way to model spin transitions in phases such as periclase and bridgmanite. High and low spin iron can be treated as different elements, providing distinct endmembers and an excess configurational entropy. Further excess terms can be added as necessary.
Calculating Multiphase Composite Properties¶
Averaging schemes¶
After the thermoelastic parameters (\(K_S\), \(G\), \(\rho\)) of each phase are determined at each pressure and/or temperature step, these values must be combined to determine the seismic velocity of a multiphase assemblage. We define the volume fraction of the individual minerals in an assemblage:
where \(V_i\) and \(n_i\) are the molar volume and the molar fractions of the \(i\) th individual phase, and \(V\) is the total molar volume of the assemblage:
The density of the multiphase assemblage is then
where \(\rho_i\) is the density and \(\mu_i\) is the molar mass of the \(i\) th phase.
Unlike density and volume, there is no straightforward way to average the bulk and shear moduli of a multiphase rock, as it depends on the specific distribution and orientation of the constituent minerals. BurnMan allows several schemes for averaging the elastic moduli: the Voigt and Reuss bounds, the HashinShtrikman bounds, the VoigtReussHill average, and the HashinShtrikman average [WDOConnell76].
The Voigt average, assuming constant strain across all phases, is defined as
where \(X_i\) is the bulk or shear modulus for the \(i\) th phase. The Reuss average, assuming constant stress across all phases, is defined as
The VoigtReussHill average is the arithmetic mean of Voigt and Reuss bounds:
The HashinShtrikman bounds make an additional assumption that the distribution of the phases is statistically isotropic and are usually much narrower than the Voigt and Reuss bounds [WDOConnell76]. This may be a poor assumption in regions of Earth with high anisotropy, such as the lowermost mantle, however these bounds are more physically motivated than the commonlyused VoigtReussHill average. In most instances, the VoigtReussHill average and the arithmetic mean of the HashinShtrikman bounds are quite similar with the pure arithmetic mean (linear averaging) being well outside of both.
It is worth noting that each of the above bounding methods are derived from mechanical models of a linear elastic composite. It is thus only appropriate to apply them to elastic moduli, and not to other thermoelastic properties, such as wave speeds or density.
Computing seismic velocities¶
Once the moduli for the multiphase assemblage are computed, the compressional (\(P\)), shear (\(S\)) and bulk sound (\(\Phi\)) velocities are then result from the equations:
To correctly compare to observed seismic velocities one needs to correct for the frequency sensitivity of attenuation. Moduli parameters are obtained from experiments that are done at high frequencies (MHzGHz) compared to seismic frequencies (mHzHz). The frequency sensitivity of attenuation causes slightly lower velocities for seismic waves than they would be for high frequency waves. In BurnMan one can correct the calculated acoustic velocity values to those for long period seismic tomography [MA81]:
Similar to [MBR+07], we use a \(\beta\) value of 0.3, which falls in the range of values of \(0.2\) to \(0.4\) proposed for the lower mantle (e.g. [KS90]). The correction is implemented for \(Q\) values of PREM for the lower mantle. As \(Q_S\) is smaller than \(Q_P\), the correction is more significant for S waves. In both cases, though, the correction is minor compared to, for example, uncertainties in the temperature (corrections) and mineral physical parameters. More involved models of relaxation mechanisms can be implemented, but lead to the inclusion of more poorly constrained parameters, [MB07]. While attenuation can be ignored in many applications [TVV01], it might play a significant role in explaining strong variations in seismic velocities in the lowermost mantle [DGD+12].
User input¶
Mineralogical composition¶
A number of predefined minerals are included in the mineral library and users can create their own. The library includes wrapper functions to include a transition from the highspin mineral to the lowspin mineral [LSMM13] or to combine minerals for a given iron number.
Standard minerals – The ‘standard’ mineral format includes a list of parameters given in the above table. Each mineral includes a suggested EoS with which the mineral parameters are derived. For some minerals the parameters for the thermal corrections are not yet measured or calculated, and therefore the corrections can not be applied. An occasional mineral will not have a measured or calculated shear moduli, and therefore can only be used to compute densities and bulk sound velocities. The mineral library is subdivided by citation. BurnMan includes the option to produce a LaTeX; table of the mineral parameters used. BurnMan can be easily setup to incorporate uncertainties for these parameters.
Minerals with a spin transition – A standard mineral for the high spin and low spin must be defined separately. These minerals are “wrapped,” so as to switch from the high spin to high spin mineral at a give pressure. While not realistic, for the sake of simplicity, the spin transitions are considered to be sharp at a given pressure.
Minerals depending on Fe partitioning – The wrapper function can partition iron, for example between ferropericlase, fp, and perovskite, pv. It requires the input of the iron mol fraction with regards to Mg, \(X_\mathrm{fp}\) and \(X_\mathrm{pv}\), which then defines the chemistry of an MgFe solid solution according to (\(\mathrm{Mg}_{1X_{\mathrm{Fe}}^{\mathrm{fp}}},\mathrm{Fe}_{X_{\mathrm{Fe}}^{\mathrm{fp}}})\mathrm{O}\) or \((\mathrm{Mg}_{1X_{\mathrm{Fe}}^{\mathrm{pv}}},\mathrm{Fe}_{X_{\mathrm{Fe}}^{\mathrm{pv}}})\mathrm{SiO_3}\). The iron mol fractions can be set to be constant or varying with P and T as needed. Alternatively one can calculate the iron mol fraction from the distribution coefficient \(K_D\) defined as
We adopt the formalism of [NFR12] choosing a reference distribution coefficient \(K_{D0}\) and standard state volume change (\(\Delta \upsilon^{0}\)) for the FeMg exchange between perovskite and ferropericlase
where \(R\) is the gas constant and \(P_0\) the reference pressure. As a default, we adopt the average \(\Delta \upsilon^{0}\) of [NFR12] of \(2\cdot10^{7}\) \(m^3 mol^{1}\) and suggest using their \({K_D}_0\) value of \(0.5\).
The multiphase mixture of these minerals can be built by the user in three ways:
1. Molar fractions of an arbitrary number of predefined minerals, for example mixing standard minerals mg_perovskite (\(\mathrm{MgSiO_3}\)), fe_perovskite (\(\mathrm{FeSiO_3}\)), periclase (\(\mathrm{MgO}\)) and wüstite (\(\mathrm{FeO}\)).
2. A twophase mixture with constant or (\(P,T\)) varying Fe partitioning using the minerals that include Fedependency, for example mixing \(\mathrm{(Mg,Fe)SiO_3}\) and \(\mathrm{(Mg,Fe)O}\) with a predefined distribution coefficient.
3. Weight percents (wt%) of (Mg, Si, Fe) and distribution coefficient (includes (P,T)dependent Fe partitioning). This calculation assumes that each element is completely oxidized into its corresponding oxide mineral (\(\mathrm{MgO}\), \(\mathrm{FeO}\), \(\mathrm{SiO_2}\)) and then combined to form ironbearing perovskite and ferropericlase taking into account some Fe partition coefficient.
Geotherm¶
Unlike the pressure, the temperature of the lower mantle is relatively unconstrained. As elsewhere, BurnMan provides a number of builtin geotherms, as well as the ability to use userdefined temperaturedepth relationships. A geotherm in BurnMan is an object that returns temperature as a function of pressure. Alternatively, the user could ignore the geothermal and compute elastic velocities for a range of temperatures at any give pressure.
Currently, we include geotherms published by [BS81] and [And82]. Alternatively one can use an adiabatic gradient defined by the thermoelastic properties of a given mineralogical model. For a homogeneous material, the adiabatic temperature profile is given by integrating the ordinary differential equation (ODE)
This equation can be extended to multiphase composite using the first law of thermodynamics to arrive at
where the subscripts correspond to the \(i\) th phase, \(C_P\) is the heat capacity at constant pressure of a phase, and the other symbols are as defined above. Integrating this ODE requires a choice in anchor temperature (\(T_0\)) at the top of the lower mantle (or including this as a parameter in an inversion). As the adiabatic geotherm is dependent on the thermoelastic parameters at high pressures and temperatures, it is dependent on the equation of state used.
Seismic Models¶
BurnMan allows for direct visual and quantitative comparison with seismic velocity models. Various ways of plotting can be found in the examples. Quantitative misfits between two profiles include an L2norm and a chisquared misfit, but user defined norms can be implemented. A seismic model in BurnMan is an object that provides pressure, density, and seismic velocities (\(V_P, V_\Phi, V_S\)) as a function of depth.
To compare to seismically constrained profiles, BurnMan provides the 1D seismic velocity model PREM [DA81]. One can choose to evaluate \(V_P, V_\Phi, V_S, \rho, K_S\) and/or \(G\). The user can input their own seismic profile, an example of which is included using AK135 [KEB95].
Besides standardized 1D radial profiles, one can also compare to regionalized average profiles for the lower mantle. This option accommodates the observation that the lowermost mantle can be clustered into two regions, a ‘slow’ region, which represents the socalled Large Low Shear Velocity Provinces, and ‘fast’ region, the continuous surrounding region where slabs might subduct [LCDR12]. This clustering as well as the averaging of the 1D model occurs over five tomographic S wave velocity models (SAW24B16: [MegninR00]; HMSLS: [HMSL08]; S362ANI: [KED08]; GyPSuM: [SFBG10]; S40RTS: [RDvHW11]). The strongest deviations from PREM occur in the lowermost 1000 km. Using the ‘fast’ and ‘slow’ S wave velocity profiles is therefore most important when interpreting the lowermost mantle. Suggestion of compositional variation between these regions comes from seismology [TRCT05][HW12] as well as geochemistry [DCT12][JCK+10]. Based on thermochemical convection models, [SDG11] also show that averaging profiles in thermal boundary layers may cause problems for seismic interpretation.
We additionally apply cluster analysis to and provide models for P wave velocity based on two tomographic models (MITP08: [LvdH08]; GyPSuM: [SMJM12]). The clustering results correlate well with the fast and slow regions for S wave velocities; this could well be due to the fact that the initial model for the P wave velocity models is scaled from S wave tomographic velocity models. Additionally, the variations in P wave velocities are a lot smaller than for S waves. For this reason using these adapted models is most important when comparing the S wave velocities.
While interpreting lateral variations of seismic velocity in terms of composition and temperature is a major goal [TDRY04][MCD+12], to determine the bulk composition the current challenge appears to be concurrently fitting absolute P and S wave velocities and incorporate the significant uncertainties in mineral physical parameters).
Tutorial¶
CIDER 2014 BurnMan Tutorial — step 1¶
In this first part of the tutorial we will acquaint ourselves with a basic script for calculating the elastic properties of a mantle mineralogical model.
In general, there are three portions of this script:
1) Define a set of pressures and temperatures at which we want to calculate elastic properties
2) Setup a composite of minerals (or “rock”) and calculate its elastic properties at those pressures and temperatures.
3) Plot those elastic properties, and compare them to a seismic model, in this case PREM
The script is basically already written, and should run as is by typing:
python step_1.py
on the command line. However, the mineral model for the rock is not very realistic, and you will want to change it to one that is more in accordance with what we think the bulk composition of Earth’s lower mantle is.
When run (without putting in a more realistic composition), the program produces the following image:
Your goal in this tutorial is to improve this awful fit...
CIDER 2014 BurnMan Tutorial — step 2¶
In this second part of the tutorial we try to get a closer fit to our 1D seismic reference model. In the simple Mg, Si, and O model that we used in step 1 there was one free parameter, namely phase_1_fraction, which goes between zero and one.
In this script we want to explore how good of a fit to PREM we can get by varying this fraction. We create a simple function that calculates a misfit between PREM and our mineral model as a function of phase_1_fraction, and then plot this misfit function to try to find a best model.
This script may be run by typing
python step_2.py
Without changing any input, the program should produce the following image showing the misfit as a function of perovskite content:
CIDER 2014 BurnMan Tutorial — step 3¶
In the previous two steps of the tutorial we tried to find a very simple mineralogical model that best fit the 1D seismic model PREM. But we know that there is consideral uncertainty in many of the mineral physical parameters that control how the elastic properties of minerals change with pressure and temperature. In this step we explore how uncertainties in these parameters might affect the conclusions you draw.
The strategy here is to make many different “realizations” of the rock that you determined was the closest fit to PREM, where each realization has its mineral physical parameters perturbed by a small amount, hopefully related to the uncertainty in that parameter. In particular, we will look at how perturbations to \(K_{0}^{'}\) and \(G_{0}^{'}\) (the pressure derivatives of the bulk and shear modulus, respectively) change the calculated 1D seismic profiles.
This script may be run by typing
python step_3.py
After changing the standard deviations for \(K_{0}^{'}\) and \(G_{0}^{'}\) to 0.2, the following figure of velocities for 1000 realizations is produced:
Examples¶
BurnMan comes with a large collection of example programs under examples/. Below you can find a summary of the different examples. They are grouped into Simple Examples and More Advanced Examples. We suggest starting with the Tutorial before moving on to the examples, especially if you are new to using BurnMan.
Finally, we also include the scripts that were used for all computations and figures in the 2014 BurnMan paper in the misc/ folder, see Reproducing Cottaar, Heister, Rose and Unterborn (2014).
Simple Examples¶
 The following is a list of simple examples:
example_beginner¶
This example script is intended for absolute beginners to BurnMan. We cover importing BurnMan modules, creating a composite material, and calculating its seismic properties at lower mantle pressures and temperatures. Afterwards, we plot it against a 1D seismic model for visual comparison.
Uses:
 Mineral database
burnman.composite.Composite
burnman.seismic.PREM
burnman.geotherm.brown_shankland()
burnman.material.Material.evaluate()
Demonstrates:
 creating basic composites
 calculating thermoelastic properties
 seismic comparison
Resulting figure:
example_solid_solution¶
This example shows how to create different solid solution models and output thermodynamic and thermoelastic quantities.
There are four main types of solid solution currently implemented in BurnMan:
 Ideal solid solutions
 Symmmetric solid solutions
 Asymmetric solid solutions
 Subregular solid solutions
These solid solutions can potentially deal with:
 Disordered endmembers (more than one element on a crystallographic site)
 Site vacancies
 More than one valence/spin state of the same element on a site
Uses:
Demonstrates:
 Different ways to define a solid solution
 How to set composition and state
 How to output thermodynamic and thermoelastic properties
Resulting figures:
example_geotherms¶
This example shows each of the geotherms currently possible with BurnMan. These are:
 Brown and Shankland, 1981 [BS81]
 Anderson, 1982 [And82]
 Watson and Baxter, 2007 [WB07]
 linear extrapolation
 Read in from file from user
 Adiabatic from potential temperature and choice of mineral
Uses:
burnman.geotherm.brown_shankland()
burnman.geotherm.anderson()
 input geotherm file input_geotherm/example_geotherm.txt (optional)
burnman.composite.Composite
for adiabat
Demonstrates:
 the available geotherms
Resulting figure:
example_seismic¶
Shows the various ways to input seismic models (\(V_s, V_p, V_{\phi}, \rho\)) as a function of depth (or pressure) as well as different velocity model libraries available within Burnman:
This example will first calculate or read in a seismic model and plot the model along the defined pressure range. The example also illustrates how to import a seismic model of your choice, here shown by importing AK135 [KEB95].
Uses:
Demonstrates:
 Utilization of library seismic models within BurnMan
 Input of userdefined seismic models
Resulting figures:
example_composition¶
This example shows how to create different minerals, how to compute seismic velocities, and how to compare them to a seismic reference model.
There are many different ways in BurnMan to combine minerals into a composition. Here we present a couple of examples:
 Two minerals mixed in simple mole fractions. Can be chosen from the BurnMan libraries or from user defined minerals (see example_user_input_material)
 Example with three minerals
 Using preset solid solutions
 Defining your own solid solution
To turn a method of mineral creation “on” the first if statement above the method must be set to True, with all others set to False.
Note: These minerals can include a spin transition in (Mg,Fe)O, see example_spintransition.py for explanation of how to implement this
Uses:
 Mineral database
burnman.composite.Composite
burnman.mineral.Mineral
burnman.solidsolution.SolidSolution
Demonstrates:
 Different ways to define a composite
 Using minerals and solid solutions
 Compare computations to seismic models
Resulting figure:
example_averaging¶
This example shows the effect of different averaging schemes. Currently four averaging schemes are available:
 VoightReussHill
 Voight averaging
 Reuss averaging
 HashinShtrikman averaging
See [WDOConnell76] Journal of Geophysics and Space Physics for explanations of each averaging scheme.
Specifically uses:
burnman.averaging_schemes.VoigtReussHill
burnman.averaging_schemes.Voigt
burnman.averaging_schemes.Reuss
burnman.averaging_schemes.HashinShtrikmanUpper
burnman.averaging_schemes.HashinShtrikmanLower
Demonstrates:
 implemented averaging schemes
Resulting figure:
example_chemical_potentials¶
This example shows how to use the chemical potentials library of functions.
Demonstrates:
 How to calculate chemical potentials
 How to compute fugacities and relative fugacities
Resulting figure:
More Advanced Examples¶
 Advanced examples:
example_spintransition¶
This example shows the different minerals that are implemented with a spin transition. Minerals with spin transition are implemented by defining two separate minerals (one for the low and one for the high spin state). Then a third dynamic mineral is created that switches between the two previously defined minerals by comparing the current pressure to the transition pressure.
Specifically uses:
burnman.mineral_helpers.HelperSpinTransition()
burnman.minerals.Murakami_etal_2012.fe_periclase()
burnman.minerals.Murakami_etal_2012.fe_periclase_HS()
burnman.minerals.Murakami_etal_2012.fe_periclase_LS()
Demonstrates:
 implementation of spin transition in (Mg,Fe)O at user defined pressure
Resulting figure:
example_user_input_material¶
Shows user how to input a mineral of his/her choice without usint the library and which physical values need to be input for BurnMan to calculate \(V_P, V_\Phi, V_S\) and density at depth.
Specifically uses:
Demonstrates:
 how to create your own minerals
example_optimize_pv¶
Vary the amount perovskite vs. ferropericlase and compute the error in the seismic data against PREM. For more extensive comments on this setup, see tutorial/step_2.py
Uses:
 Mineral database
burnman.composite.Composite
burnman.seismic.PREM
burnman.geotherm.brown_shankland()
burnman.material.Material.evaluate()
burnman.main.compare_l2()
Demonstrates:
 compare errors between models
 loops over models
Resulting figure:
example_build_planet¶
For Earth we have wellconstrained onedimensional density models. This allows us to calculate pressure as a funcion of depth. Furthermore, petrologic data and assumptions regarding the convective state of the planet allow us to estimate the temperature.
For planets other than Earth we have much less information, and in particular we know almost nothing about the pressure and temperature in the interior. Instead, we tend to have measurements of things like mass, radius, and momentofinertia. We would like to be able to make a model of the planet’s interior that is consistent with those measurements.
However, there is a difficulty with this. In order to know the density of the planetary material, we need to know the pressure and temperature. In order to know the pressure, we need to know the gravity profile. And in order to the the gravity profile, we need to know the density. This is a nonlinear problem which requires us to iterate to find a selfconsistent solution.
Here we show an example that does this, using the planet Mercury as motivation.
Uses:
Resulting figure:
example_compare_all_methods¶
This example demonstrates how to call each of the individual calculation methodologies that exist within BurnMan. See below for current options. This example calculates seismic velocity profiles for the same set of minerals and a plot of \(V_s, V_\phi\) and \(\rho\) is produce for the user to compare each of the different methods.
Specifically uses:
Demonstrates:
 Each method for calculating velocity profiles currently included within BurnMan
Resulting figure:
example_anisotropy¶
This example illustrates the basic functions required to convert an elastic stiffness tensor into elastic properties.
Specifically uses:
burnman.AnisotropicMaterial
Demonstrates:
 anisotropic functions
Resulting figure:
example_fit_data¶
This example demonstrates BurnMan’s functionality to fit various mineral physics data to an EoS of the user’s choice.
Please note also the separate file example_fit_eos.py, which can be viewed as a more advanced example in the same general field.
teaches:  least squares fitting
Resulting figures:
example_fit_eos¶
This example demonstrates BurnMan’s functionality to fit data to an EoS of the user’s choice.
The first example deals with simple PVT fitting. The second example illustrates how powerful it can be to provide nonPVT constraints to the same fitting problem.
teaches:  least squares fitting
Last seven resulting figures:
Reproducing Cottaar, Heister, Rose and Unterborn (2014)¶
In this section we include the scripts that were used for all computations and figures in the 2014 BurnMan paper: Cottaar, Heister, Rose & Unterborn (2014) [CHRU14]
paper_averaging¶
This script reproduces [CHRU14], Figure 2.
This example shows the effect of different averaging schemes. Currently four averaging schemes are available: 1. VoightReussHill 2. Voight averaging 3. Reuss averaging 4. HashinShtrikman averaging
See [WDOConnell76] for explanations of each averaging scheme.
requires:  geotherms  compute seismic velocities
teaches:  averaging
paper_incorrect_averaging¶
This script reproduces [CHRU14], Figure 5. Attempt to reproduce Figure 6.12 from [Mur13]
paper_opt_pv¶
This script reproduces [CHRU14], Figure 6. Vary the amount perovskite vs. ferropericlase and compute the error in the seismic data against PREM.
requires:  creating minerals  compute seismic velocities  geotherms  seismic models  seismic comparison
teaches:  compare errors between models  loops over models
Misc or work in progress¶
example_grid¶
This example shows how to evaluate seismic quantities on a \(P,T\) grid.
example_woutput¶
This example explains how to perform the basic i/o of BurnMan. A method of calculation is chosen, a composite mineral/material (see example_composition.py for explanation of this process) is created in the class “rock,” finally a geotherm is created and seismic velocities calculated.
Postcalculation, the results are written to a simple text file to plot/manipulate at the user’s whim.
requires:  creating minerals  compute seismic velocities  geotherms
teaches:  output computed seismic data to file
Autogenerated Full API¶
Main module¶

burnman.main.
velocities_from_rock
(rock, pressures, temperatures, averaging_scheme=<burnman.averaging_schemes.VoigtReussHill object>)[source]¶ This function is deprecated. Use
burnman.material.Material.evaluate()
instead.A function that rolls several steps into one: given a rock and a list of pressures and temperatures, it calculates the elastic moduli of the individual phases using calculate_moduli(), averages them using average_moduli(), and calculates the seismic velocities using compute_velocities().
Parameters: rock :
burnman.Material
this is the rock for which you are calculating velocities
pressures: list of float
list of pressures you want to evaluate the rock at. \([Pa]\)
temperatures: list of float
list of temperatures you want to evaluate the rock at. \([K]\)
averaging_scheme: :class:`burnman.averaging_schemes.AveragingScheme`
Averaging scheme to use.
Returns: rho, V_p, V_s, V_phi, K, G : lists of floats
Lists of density [kg/m^3], Pwave velocity [m/s], shearwave velocity [m/s], bulk sound velocity [m/s], bulk modulus [Pa], and shear modulus [Pa] for each P,T point.

burnman.main.
compare_l2
(depth, calc, obs)[source]¶ PUT IN TOOLS Computes the L2 norm for N profiles at a time (assumed to be linear between points).
\[math does not work yet... \sum_{i=1}^{\infty} x_{i}\]Parameters:  depths (array of float) – depths. \([m]\)
 calc (list of arrays of float) – N arrays calculated values, e.g. [mat_vs,mat_vphi]
 obs (list of arrays of float) – N arrays of values (observed or calculated) to compare to , e.g. [seis_vs, seis_vphi]
Returns: array of L2 norms of length N
Return type: array of floats

burnman.main.
compare_chifactor
(calc, obs)[source]¶ PUT IN TOOLS Computes the chi factor for N profiles at a time. Assumes a 1% a priori uncertainty on the seismic model.
Parameters:  calc (list of arrays of float) – N arrays calculated values, e.g. [mat_vs,mat_vphi]
 obs (list of arrays of float) – N arrays of values (observed or calculated) to compare to , e.g. [seis_vs, seis_vphi]
Returns: error array of length N
Return type: array of floats

burnman.main.
l2
(x, funca, funcb)[source]¶ PUT IN TOOLS Computes the L2 norm for one profile(assumed to be linear between points).
Parameters:  x (array of float) – depths \([m]\).
 funca (list of arrays of float) – array calculated values
 funcb (list of arrays of float) – array of values (observed or calculated) to compare to
Returns: L2 norm
Return type: array of floats

burnman.main.
nrmse
(x, funca, funcb)[source]¶ PUT IN TOOLS Normalized root mean square error for one profile :type x: array of float :param x: depths in m. :type funca: list of arrays of float :param funca: array calculated values :type funcb: list of arrays of float :param funcb: array of values (observed or calculated) to compare to
Returns: RMS error Return type: array of floats

burnman.main.
chi_factor
(calc, obs)[source]¶ PUT IN TOOLS \(\chi\) factor for one profile assuming 1% uncertainty on the reference model (obs) :type calc: list of arrays of float :param calc: array calculated values :type obs: list of arrays of float :param obs: array of reference values to compare to
Returns: \(\chi\) factor Return type: array of floats
Materials¶
Burnman operates on materials (type Material
) most prominently in form of minerals (Mineral
) and composites (Composite
).
Material Base Class¶

class
burnman.material.
Material
[source]¶ Bases:
object
Base class for all materials. The main functionality is unroll() which returns a list of objects of type
Mineral
and their molar fractions. This class is available asburnman.Material
.The user needs to call set_method() (once in the beginning) and set_state() before querying the material with unroll() or density().

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

set_method
(method)[source]¶ Set the averaging method. See Averaging Schemes for details.
Notes
Needs to be implemented in derived classes.

to_string
()[source]¶ Returns a humanreadable name of this material. The default implementation will return the name of the class, which is a reasonable default.
Returns: name : string
Name of this material.

print_minerals_of_current_state
()[source]¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

set_state
(pressure, temperature)[source]¶ Set the material to the given pressure and temperature.
Parameters: pressure : float
The desired pressure in [Pa].
temperature : float
The desired temperature in [K].

reset
()[source]¶ Resets all cached material properties.
It is typically not required for the user to call this function.

unroll
()[source]¶ Unroll this material into a list of
burnman.Mineral
and their molar fractions. All averaging schemes then operate on this list of minerals. Note that the return value of this function may depend on the current state (temperature, pressure).Returns: fractions : list of float
List of molar fractions, should sum to 1.0.
minerals : list of
burnman.Mineral
List of minerals.
Notes
Needs to be implemented in derived classes.

evaluate
(vars_list, pressures, temperatures)[source]¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

internal_energy
¶ Returns the internal energy of the mineral.
Returns: internal_energy : float
The internal energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
energy()
.

molar_gibbs
¶ Returns the Gibbs free energy of the mineral.
Returns: molar_gibbs : float
Gibbs free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gibbs()
.

molar_helmholtz
¶ Returns the Helmholtz free energy of the mineral.
Returns: molar_helmholtz : float
Helmholtz free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
helmholtz()
.

molar_mass
¶ Returns molar mass of the mineral.
Returns: molar_mass : float
Molar mass in [kg/mol].
Notes
 Needs to be implemented in derived classes.

molar_volume
¶ Returns molar volume of the mineral.
Returns: molar_volume : float
Molar volume in [m^3/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
V()
.

density
¶ Returns the density of this material.
Returns: density : float
The density of this material in [kg/m^3].
Notes
 Needs to be implemented in derived classes.
 Aliased with
rho()
.

molar_entropy
¶ Returns entropy of the mineral.
Returns: entropy : float
Entropy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
S()
.

molar_enthalpy
¶ Returns enthalpy of the mineral.
Returns: enthalpy : float
Enthalpy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
H()
.

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the material.
Returns: isothermal_bulk_modulus : float
Bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_T()
.

adiabatic_bulk_modulus
¶ Returns the adiabatic bulk modulus of the mineral.
Returns: adiabatic_bulk_modulus : float
Adiabatic bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_S()
.

isothermal_compressibility
¶ Returns isothermal compressibility of the mineral (or inverse isothermal bulk modulus).
Returns: (K_T)^1 : float
Compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_T()
.

adiabatic_compressibility
¶ Returns adiabatic compressibility of the mineral (or inverse adiabatic bulk modulus).
Returns: adiabatic_compressibility : float
adiabatic compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_S()
.

shear_modulus
¶ Returns shear modulus of the mineral.
Returns: shear_modulus : float
Shear modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_G()
.

p_wave_velocity
¶ Returns P wave speed of the mineral.
Returns: p_wave_velocity : float
P wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_p()
.

bulk_sound_velocity
¶ Returns bulk sound speed of the mineral.
Returns: bulk sound velocity: float
Sound velocity in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_phi()
.

shear_wave_velocity
¶ Returns shear wave speed of the mineral.
Returns: shear_wave_velocity : float
Wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_s()
.

grueneisen_parameter
¶ Returns the grueneisen parameter of the mineral.
Returns: gr : float
Grueneisen parameters [unitless].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gr()
.

thermal_expansivity
¶ Returns thermal expansion coefficient of the mineral.
Returns: alpha : float
Thermal expansivity in [1/K].
Notes
 Needs to be implemented in derived classes.
 Aliased with
alpha()
.

heat_capacity_v
¶ Returns heat capacity at constant volume of the mineral.
Returns: heat_capacity_v : float
Heat capacity in [J/K/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
C_v()
.

heat_capacity_p
¶ Returns heat capacity at constant pressure of the mineral.
Returns: heat_capacity_p : float
Heat capacity in [J/K/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
C_p()
.

P
¶ Alias for
pressure()

T
¶ Alias for
temperature()

energy
¶ Alias for
internal_energy()

helmholtz
¶ Alias for
molar_helmholtz()

gibbs
¶ Alias for
molar_gibbs()

V
¶ Alias for
molar_volume()

S
¶ Alias for
molar_entropy()

H
¶ Alias for
molar_enthalpy()

K_T
¶ Alias for
isothermal_bulk_modulus()

K_S
¶ Alias for
adiabatic_bulk_modulus()

beta_T
¶ Alias for
isothermal_compressibility()

beta_S
¶ Alias for
adiabatic_compressibility()

G
¶ Alias for
shear_modulus()

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

gr
¶ Alias for
grueneisen_parameter()

alpha
¶ Alias for
thermal_expansivity()

C_v
¶ Alias for
heat_capacity_v()

C_p
¶ Alias for
heat_capacity_p()

PerpleX Class¶

class
burnman.perplex.
PerplexMaterial
(tab_file)[source]¶ Bases:
burnman.material.Material
This is the base class for a PerpleX material. States of the material can only be queried after setting the pressure and temperature using set_state().
Instances of this class are initialised with a 2D PerpleX tab file. This file should be in the standard format (as output by werami), and should have columns with the following names: ‘rho,kg/m3’, ‘alpha,1/K’, ‘beta,1/bar’, ‘Ks,bar’, ‘Gs,bar’, ‘v0,km/s’, ‘vp,km/s’, ‘vs,km/s’, ‘s,J/K/kg’, ‘h,J/kg’, ‘cp,J/K/kg’, ‘V,J/bar/mol’. The order of these names is not important.
Properties of the material are determined by linear interpolation from the PerpleX grid. They are all returned in SI units on a molar basis, even though the PerpleX tab file is not in these units.
This class is available as
burnman.PerplexMaterial
.
set_state
(*args)¶ (copied from set_state):
Set the material to the given pressure and temperature.
Parameters: pressure : float
The desired pressure in [Pa].
temperature : float
The desired temperature in [K].

molar_volume
¶ Returns molar volume of the mineral.
Returns: molar_volume : float
Molar volume in [m^3/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
V()
.

molar_enthalpy
¶ Returns enthalpy of the mineral.
Returns: enthalpy : float
Enthalpy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
H()
.

molar_entropy
¶ Returns entropy of the mineral.
Returns: entropy : float
Entropy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
S()
.

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the material.
Returns: isothermal_bulk_modulus : float
Bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_T()
.

adiabatic_bulk_modulus
¶ Returns the adiabatic bulk modulus of the mineral.
Returns: adiabatic_bulk_modulus : float
Adiabatic bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_S()
.

heat_capacity_p
¶ Returns heat capacity at constant pressure of the mineral.
Returns: heat_capacity_p : float
Heat capacity in [J/K/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
C_p()
.

thermal_expansivity
¶ Returns thermal expansion coefficient of the mineral.
Returns: alpha : float
Thermal expansivity in [1/K].
Notes
 Needs to be implemented in derived classes.
 Aliased with
alpha()
.

shear_modulus
¶ Returns shear modulus of the mineral.
Returns: shear_modulus : float
Shear modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_G()
.

p_wave_velocity
¶ Returns P wave speed of the mineral.
Returns: p_wave_velocity : float
P wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_p()
.

bulk_sound_velocity
¶ Returns bulk sound speed of the mineral.
Returns: bulk sound velocity: float
Sound velocity in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_phi()
.

shear_wave_velocity
¶ Returns shear wave speed of the mineral.
Returns: shear_wave_velocity : float
Wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_s()
.

molar_gibbs
¶ Returns the Gibbs free energy of the mineral.
Returns: molar_gibbs : float
Gibbs free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gibbs()
.

molar_mass
¶ Returns molar mass of the mineral.
Returns: molar_mass : float
Molar mass in [kg/mol].
Notes
 Needs to be implemented in derived classes.

density
¶ Returns the density of this material.
Returns: density : float
The density of this material in [kg/m^3].
Notes
 Needs to be implemented in derived classes.
 Aliased with
rho()
.

internal_energy
¶ Returns the internal energy of the mineral.
Returns: internal_energy : float
The internal energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
energy()
.

molar_helmholtz
¶ Returns the Helmholtz free energy of the mineral.
Returns: molar_helmholtz : float
Helmholtz free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
helmholtz()
.

isothermal_compressibility
¶ Returns isothermal compressibility of the mineral (or inverse isothermal bulk modulus).
Returns: (K_T)^1 : float
Compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_T()
.

adiabatic_compressibility
¶ Returns adiabatic compressibility of the mineral (or inverse adiabatic bulk modulus).
Returns: adiabatic_compressibility : float
adiabatic compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_S()
.

heat_capacity_v
¶ Returns heat capacity at constant volume of the mineral.
Returns: heat_capacity_v : float
Heat capacity in [J/K/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
C_v()
.

grueneisen_parameter
¶ Returns the grueneisen parameter of the mineral.
Returns: gr : float
Grueneisen parameters [unitless].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gr()
.

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

debug_print
(indent='')¶ Print a humanreadable representation of this Material.

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

helmholtz
¶ Alias for
molar_helmholtz()

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

set_method
(method)¶ Set the averaging method. See Averaging Schemes for details.
Notes
Needs to be implemented in derived classes.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

to_string
()¶ Returns a humanreadable name of this material. The default implementation will return the name of the class, which is a reasonable default.
Returns: name : string
Name of this material.

unroll
()¶ Unroll this material into a list of
burnman.Mineral
and their molar fractions. All averaging schemes then operate on this list of minerals. Note that the return value of this function may depend on the current state (temperature, pressure).Returns: fractions : list of float
List of molar fractions, should sum to 1.0.
minerals : list of
burnman.Mineral
List of minerals.
Notes
Needs to be implemented in derived classes.

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

Minerals¶
Endmembers¶

class
burnman.mineral.
Mineral
(params=None, property_modifiers=None)[source]¶ Bases:
burnman.material.Material
This is the base class for all minerals. States of the mineral can only be queried after setting the pressure and temperature using set_state(). The method for computing properties of the material is set using set_method(). This is done during initialisation if the param ‘equation_of_state’ has been defined. The method can be overridden later by the user.
This class is available as
burnman.Mineral
.If deriving from this class, set the properties in self.params to the desired values. For more complicated materials you can overwrite set_state(), change the params and then call set_state() from this class.
All the material parameters are expected to be in plain SI units. This means that the elastic moduli should be in Pascals and NOT Gigapascals, and the Debye temperature should be in K not C. Additionally, the reference volume should be in m^3/(mol molecule) and not in unit cell volume and ‘n’ should be the number of atoms per molecule. Frequently in the literature the reference volume is given in Angstrom^3 per unit cell. To convert this to m^3/(mol of molecule) you should multiply by 10^(30) * N_a / Z, where N_a is Avogadro’s number and Z is the number of formula units per unit cell. You can look up Z in many places, including www.mindat.org

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

set_method
(equation_of_state)[source]¶ Set the equation of state to be used for this mineral. Takes a string corresponding to any of the predefined equations of state: ‘bm2’, ‘bm3’, ‘mgd2’, ‘mgd3’, ‘slb2’, ‘slb3’, ‘mt’, ‘hp_tmt’, or ‘cork’. Alternatively, you can pass a user defined class which derives from the equation_of_state base class. After calling set_method(), any existing derived properties (e.g., elastic parameters or thermodynamic potentials) will be out of date, so set_state() will need to be called again.

set_state
(*args)¶ (copied from set_state):
Set the material to the given pressure and temperature.
Parameters: pressure : float
The desired pressure in [Pa].
temperature : float
The desired temperature in [K].

molar_gibbs
¶ Returns the Gibbs free energy of the mineral.
Returns: molar_gibbs : float
Gibbs free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gibbs()
.

molar_volume
¶ Returns molar volume of the mineral.
Returns: molar_volume : float
Molar volume in [m^3/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
V()
.

molar_entropy
¶ Returns entropy of the mineral.
Returns: entropy : float
Entropy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
S()
.

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the material.
Returns: isothermal_bulk_modulus : float
Bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_T()
.

heat_capacity_p
¶ Returns heat capacity at constant pressure of the mineral.
Returns: heat_capacity_p : float
Heat capacity in [J/K/mol].
Notes
 Needs to be implemented in derived classes.
 Aliased with
C_p()
.

thermal_expansivity
¶ Returns thermal expansion coefficient of the mineral.
Returns: alpha : float
Thermal expansivity in [1/K].
Notes
 Needs to be implemented in derived classes.
 Aliased with
alpha()
.

shear_modulus
¶ Returns shear modulus of the mineral.
Returns: shear_modulus : float
Shear modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_G()
.

molar_mass
¶ Returns molar mass of the mineral.
Returns: molar_mass : float
Molar mass in [kg/mol].
Notes
 Needs to be implemented in derived classes.

density
¶ Returns the density of this material.
Returns: density : float
The density of this material in [kg/m^3].
Notes
 Needs to be implemented in derived classes.
 Aliased with
rho()
.

internal_energy
¶ Returns the internal energy of the mineral.
Returns: internal_energy : float
The internal energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
energy()
.

molar_helmholtz
¶ Returns the Helmholtz free energy of the mineral.
Returns: molar_helmholtz : float
Helmholtz free energy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
helmholtz()
.

molar_enthalpy
¶ Returns enthalpy of the mineral.
Returns: enthalpy : float
Enthalpy in [J].
Notes
 Needs to be implemented in derived classes.
 Aliased with
H()
.

adiabatic_bulk_modulus
¶ Returns the adiabatic bulk modulus of the mineral.
Returns: adiabatic_bulk_modulus : float
Adiabatic bulk modulus in [Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
K_S()
.

isothermal_compressibility
¶ Returns isothermal compressibility of the mineral (or inverse isothermal bulk modulus).
Returns: (K_T)^1 : float
Compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_T()
.

adiabatic_compressibility
¶ Returns adiabatic compressibility of the mineral (or inverse adiabatic bulk modulus).
Returns: adiabatic_compressibility : float
adiabatic compressibility in [1/Pa].
Notes
 Needs to be implemented in derived classes.
 Aliased with
beta_S()
.

p_wave_velocity
¶ Returns P wave speed of the mineral.
Returns: p_wave_velocity : float
P wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_p()
.

bulk_sound_velocity
¶ Returns bulk sound speed of the mineral.
Returns: bulk sound velocity: float
Sound velocity in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_phi()
.

shear_wave_velocity
¶ Returns shear wave speed of the mineral.
Returns: shear_wave_velocity : float
Wave speed in [m/s].
Notes
 Needs to be implemented in derived classes.
 Aliased with
v_s()
.

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

grueneisen_parameter
¶ Returns the grueneisen parameter of the mineral.
Returns: gr : float
Grueneisen parameters [unitless].
Notes
 Needs to be implemented in derived classes.
 Aliased with
gr()
.

helmholtz
¶ Alias for
molar_helmholtz()

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

Solid solutions¶

class
burnman.solidsolution.
SolidSolution
(name=None, solution_type=None, endmembers=None, energy_interaction=None, volume_interaction=None, entropy_interaction=None, alphas=None, molar_fractions=None)[source]¶ Bases:
burnman.mineral.Mineral
This is the base class for all solid solutions. Site occupancies, endmember activities and the constant and pressure and temperature dependencies of the excess properties can be queried after using set_composition() States of the solid solution can only be queried after setting the pressure, temperature and composition using set_state().
This class is available as
burnman.SolidSolution
. It uses an instance ofburnman.SolutionModel
to calculate interaction terms between endmembers.All the solid solution parameters are expected to be in SI units. This means that the interaction parameters should be in J/mol, with the T and P derivatives in J/K/mol and m^3/mol.

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

set_composition
(molar_fractions)[source]¶ Set the composition for this solid solution.
Parameters: molar_fractions: list of float
molar abundance for each endmember, needs to sum to one.

activities
¶ Returns a list of endmember activities [unitless]

activity_coefficients
¶ Returns a list of endmember activity coefficients (gamma = activity / ideal activity) [unitless]

internal_energy
¶ Returns internal energy of the mineral [J] Aliased with self.energy

excess_partial_gibbs
¶ Returns excess partial gibbs free energy [J] Property specific to solid solutions.

partial_gibbs
¶ Returns excess partial gibbs free energy [J] Property specific to solid solutions.

excess_gibbs
¶ Returns excess gibbs free energy [J] Property specific to solid solutions.

molar_gibbs
¶ Returns Gibbs free energy of the solid solution [J] Aliased with self.gibbs

molar_helmholtz
¶ Returns Helmholtz free energy of the solid solution [J] Aliased with self.helmholtz

molar_mass
¶ Returns molar mass of the solid solution [kg/mol]

formula
¶ Returns chemical formula of the solid solution

excess_volume
¶ Returns excess volume of the solid solution [m^3/mol] Specific property for solid solutions

molar_volume
¶ Returns molar volume of the solid solution [m^3/mol] Aliased with self.V

density
¶ Returns density of the solid solution [kg/m^3] Aliased with self.rho

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

debug_print
(indent='')¶

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

excess_entropy
¶ Returns excess entropy [J] Property specific to solid solutions.

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

helmholtz
¶ Alias for
molar_helmholtz()

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

to_string
()¶ Returns the name of the mineral class

unroll
()¶

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

molar_entropy
¶ Returns entropy of the solid solution [J] Aliased with self.S

excess_enthalpy
¶ Returns excess enthalpy [J] Property specific to solid solutions.

molar_enthalpy
¶ Returns enthalpy of the solid solution [J] Aliased with self.H

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the solid solution [Pa] Aliased with self.K_T

adiabatic_bulk_modulus
¶ Returns adiabatic bulk modulus of the solid solution [Pa] Aliased with self.K_S

isothermal_compressibility
¶ Returns isothermal compressibility of the solid solution (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.K_T

adiabatic_compressibility
¶ Returns adiabatic compressibility of the solid solution (or inverse adiabatic bulk modulus) [1/Pa] Aliased with self.K_S

shear_modulus
¶ Returns shear modulus of the solid solution [Pa] Aliased with self.G

p_wave_velocity
¶ Returns P wave speed of the solid solution [m/s] Aliased with self.v_p

bulk_sound_velocity
¶ Returns bulk sound speed of the solid solution [m/s] Aliased with self.v_phi

shear_wave_velocity
¶ Returns shear wave speed of the solid solution [m/s] Aliased with self.v_s

grueneisen_parameter
¶ Returns grueneisen parameter of the solid solution [unitless] Aliased with self.gr

thermal_expansivity
¶ Returns thermal expansion coefficient (alpha) of the solid solution [1/K] Aliased with self.alpha

heat_capacity_v
¶ Returns heat capacity at constant volume of the solid solution [J/K/mol] Aliased with self.C_v

heat_capacity_p
¶ Returns heat capacity at constant pressure of the solid solution [J/K/mol] Aliased with self.C_p

Mineral helpers¶

class
burnman.mineral_helpers.
HelperSpinTransition
(transition_pressure, ls_mat, hs_mat)[source]¶ Bases:
burnman.composite.Composite
Helper class that makes a mineral that switches between two materials (for low and high spin) based on some transition pressure [Pa]

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

adiabatic_bulk_modulus
¶ Returns adiabatic bulk modulus of the mineral [Pa] Aliased with self.K_S

adiabatic_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_S

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

bulk_sound_velocity
¶ Returns bulk sound speed of the composite [m/s] Aliased with self.v_phi

density
¶ Compute the density of the composite based on the molar volumes and masses Aliased with self.rho

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

grueneisen_parameter
¶ Returns grueneisen parameter of the composite [unitless] Aliased with self.gr

heat_capacity_p
¶ Returns heat capacity at constant pressure of the composite [J/K/mol] Aliased with self.C_p

heat_capacity_v
¶ Returns heat capacity at constant volume of the composite [J/K/mol] Aliased with self.C_v

helmholtz
¶ Alias for
molar_helmholtz()

internal_energy
¶ Returns internal energy of the mineral [J] Aliased with self.energy

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the composite [Pa] Aliased with self.K_T

isothermal_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_T

molar_enthalpy
¶ Returns enthalpy of the mineral [J] Aliased with self.H

molar_entropy
¶ Returns enthalpy of the mineral [J] Aliased with self.S

molar_gibbs
¶ Returns Gibbs free energy of the composite [J] Aliased with self.gibbs

molar_helmholtz
¶ Returns Helmholtz free energy of the mineral [J] Aliased with self.helmholtz

molar_mass
¶ Returns molar mass of the composite [kg/mol]

molar_volume
¶ Returns molar volume of the composite [m^3/mol] Aliased with self.V

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

p_wave_velocity
¶ Returns P wave speed of the composite [m/s] Aliased with self.v_p

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

set_averaging_scheme
(averaging_scheme)¶ Set the averaging scheme for the moduli in the composite. Default is set to VoigtReussHill, when Composite is initialized.

set_fractions
(fractions, fraction_type='molar')¶ Change the fractions of the phases of this Composite.
Parameters: fractions: list of floats
molar or mass fraction for each phase.
fraction_type: ‘molar’ or ‘mass’
specify whether molar or mass fractions are specified.

set_method
(method)¶ set the same equation of state method for all the phases in the composite

shear_modulus
¶ Returns shear modulus of the mineral [Pa] Aliased with self.G

shear_wave_velocity
¶ Returns shear wave speed of the composite [m/s] Aliased with self.v_s

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

thermal_expansivity
¶ Returns thermal expansion coefficient of the composite [1/K] Aliased with self.alpha

to_string
()¶ return the name of the composite

unroll
()¶

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

Composites¶

class
burnman.composite.
Composite
(phases, fractions=None, fraction_type='molar')[source]¶ Bases:
burnman.material.Material
Base class for a composite material. The static phases can be minerals or materials, meaning composite can be nested arbitrarily.
The fractions of the phases can be input as either ‘molar’ or ‘mass’ during instantiation, and modified (or initialised) after this point by using set_fractions.
This class is available as
burnman.Composite
.
set_fractions
(fractions, fraction_type='molar')[source]¶ Change the fractions of the phases of this Composite.
Parameters: fractions: list of floats
molar or mass fraction for each phase.
fraction_type: ‘molar’ or ‘mass’
specify whether molar or mass fractions are specified.

set_method
(method)[source]¶ set the same equation of state method for all the phases in the composite

set_averaging_scheme
(averaging_scheme)[source]¶ Set the averaging scheme for the moduli in the composite. Default is set to VoigtReussHill, when Composite is initialized.

set_state
(pressure, temperature)[source]¶ Update the material to the given pressure [Pa] and temperature [K].

internal_energy
¶ Returns internal energy of the mineral [J] Aliased with self.energy

molar_gibbs
¶ Returns Gibbs free energy of the composite [J] Aliased with self.gibbs

molar_helmholtz
¶ Returns Helmholtz free energy of the mineral [J] Aliased with self.helmholtz

molar_volume
¶ Returns molar volume of the composite [m^3/mol] Aliased with self.V

molar_mass
¶ Returns molar mass of the composite [kg/mol]

density
¶ Compute the density of the composite based on the molar volumes and masses Aliased with self.rho

molar_entropy
¶ Returns enthalpy of the mineral [J] Aliased with self.S

molar_enthalpy
¶ Returns enthalpy of the mineral [J] Aliased with self.H

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the composite [Pa] Aliased with self.K_T

adiabatic_bulk_modulus
¶ Returns adiabatic bulk modulus of the mineral [Pa] Aliased with self.K_S

isothermal_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_T

adiabatic_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_S

shear_modulus
¶ Returns shear modulus of the mineral [Pa] Aliased with self.G

p_wave_velocity
¶ Returns P wave speed of the composite [m/s] Aliased with self.v_p

bulk_sound_velocity
¶ Returns bulk sound speed of the composite [m/s] Aliased with self.v_phi

shear_wave_velocity
¶ Returns shear wave speed of the composite [m/s] Aliased with self.v_s

grueneisen_parameter
¶ Returns grueneisen parameter of the composite [unitless] Aliased with self.gr

thermal_expansivity
¶ Returns thermal expansion coefficient of the composite [1/K] Aliased with self.alpha

heat_capacity_v
¶ Returns heat capacity at constant volume of the composite [J/K/mol] Aliased with self.C_v

heat_capacity_p
¶ Returns heat capacity at constant pressure of the composite [J/K/mol] Aliased with self.C_p

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

helmholtz
¶ Alias for
molar_helmholtz()

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: volume : float
Molar volume of the mineral. \([m^3]\)

pressure
(temperature, volume, params)[source]¶ Parameters: volume : float
Molar volume at which to evaluate the equation of state. [m^3]
temperature : float
Temperature at which to evaluate the equation of state. [K]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: pressure : float
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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: gamma : float
Grueneisen parameter of the mineral. \([unitless]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: K_T : float
Isothermal bulk modulus of the mineral. \([Pa]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: K_S : float
Adiabatic bulk modulus of the mineral. \([Pa]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Shear modulus of the mineral. \([Pa]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: C_V : float
Heat capacity at constant volume of the mineral. \([J/K/mol]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: C_P : float
Heat capacity at constant pressure of the mineral. \([J/K/mol]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: alpha : float
Thermal expansivity of the mineral. \([1/K]\)

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(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. For consistency this should be calculated using
volume()
. [m^3]params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
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: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
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: params : dictionary
Dictionary containing material parameters required by the equation of state.

BirchMurnaghan¶

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
andburnman.birch_murnaghan.BM3
.
volume
(pressure, temperature, params)[source]¶ Returns volume \([m^3]\) as a function of pressure \([Pa]\).

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

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

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

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

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

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

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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]\).

pressure
(temperature, volume, params)¶

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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

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

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

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

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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]\).

pressure
(temperature, volume, params)¶

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

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

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

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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].

volume
(pressure, temperature, params)[source]¶ Returns volume \([m^3]\) as a function of pressure \([Pa]\).

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.

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

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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]\).

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

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

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral

Reciprocal Kprime¶

class
burnman.eos.
RKprime
[source]¶ Bases:
burnman.eos.equation_of_state.EquationOfState
Class for the isothermal reciprocal Kprime 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 HTLP 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]\)

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral

Stixrude and LithgowBertelloni Formulation¶

class
burnman.eos.slb.
SLBBase
[source]¶ Bases:
burnman.eos.equation_of_state.EquationOfState
Base class for the finite strainMieGrueneiesenDebye 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
andburnman.slb.SLB3
classes.
volume_dependent_q
(x, params)[source]¶ Finite strain approximation for \(q\), the isotropic volume strain derivative of the grueneisen parameter.

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

heat_capacity_v
(pressure, temperature, volume, params)[source]¶ Returns heat capacity at constant volume. \([J/K/mol]\)

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]

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]

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
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]\)

heat_capacity_p
(pressure, temperature, volume, params)¶ Returns heat capacity at constant pressure. \([J/K/mol]\)

heat_capacity_v
(pressure, temperature, volume, params)¶ Returns heat capacity at constant volume. \([J/K/mol]\)

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

internal_energy
(pressure, temperature, volume, params)¶ Returns the internal energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus
(pressure, temperature, volume, params)¶ Returns isothermal bulk modulus \([Pa]\)

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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
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]\)

heat_capacity_p
(pressure, temperature, volume, params)¶ Returns heat capacity at constant pressure. \([J/K/mol]\)

heat_capacity_v
(pressure, temperature, volume, params)¶ Returns heat capacity at constant volume. \([J/K/mol]\)

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Returns the Helmholtz free energy at the pressure and temperature of the mineral [J/mol]

internal_energy
(pressure, temperature, volume, params)¶ Returns the internal energy at the pressure and temperature of the mineral [J/mol]

isothermal_bulk_modulus
(pressure, temperature, volume, params)¶ Returns isothermal bulk modulus \([Pa]\)

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.

MieGrüneisenDebye¶

class
burnman.eos.mie_grueneisen_debye.
MGDBase
[source]¶ Bases:
burnman.eos.equation_of_state.EquationOfState
Base class for a generic finitestrain MieGrueneisenDebye 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

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]

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral


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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

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

heat_capacity_p
(pressure, temperature, volume, params)¶ Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

heat_capacity_v
(pressure, temperature, volume, params)¶ Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol]

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral

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

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: volume : float
Molar volume of the mineral. For consistency this should be calculated
using :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

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

heat_capacity_p
(pressure, temperature, volume, params)¶ Returns heat capacity at constant pressure at the pressure, temperature, and volume [J/K/mol]

heat_capacity_v
(pressure, temperature, volume, params)¶ Returns heat capacity at constant volume at the pressure, temperature, and volume [J/K/mol]

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral

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

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.

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

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

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
Enthalpy of the mineral

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)¶ 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: G : float
Gibbs free energy of the mineral

helmholtz_free_energy
(pressure, temperature, volume, params)¶ Parameters: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal 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.

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

heat_capacity_v
(pressure, temperature, volume, params)[source]¶ Returns heat capacity at constant volume. \([J/K/mol]\)

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]

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]

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
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).

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

heat_capacity_v
(pressure, temperature, volume, params)[source]¶ Returns heat capacity at constant volume. \([J/K/mol]\)

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]

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
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 virialtype extension to the modified RedlichKwong (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.

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 PPth for nonambient temperature

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

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]

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 :func:`volume`. :math:`[m^3]`
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: density : float
Density of the mineral. \([kg/m^3]\)

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]
params : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: H : float
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: 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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: F : float
Helmholtz free energy of the mineral

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 : dictionary
Dictionary containing material parameters required by the equation of state.
Returns: U : float
Internal energy of the mineral

Solution models¶
Base class¶

class
burnman.solidsolution.
SolidSolution
(name=None, solution_type=None, endmembers=None, energy_interaction=None, volume_interaction=None, entropy_interaction=None, alphas=None, molar_fractions=None)[source]¶ Bases:
burnman.mineral.Mineral
This is the base class for all solid solutions. Site occupancies, endmember activities and the constant and pressure and temperature dependencies of the excess properties can be queried after using set_composition() States of the solid solution can only be queried after setting the pressure, temperature and composition using set_state().
This class is available as
burnman.SolidSolution
. It uses an instance ofburnman.SolutionModel
to calculate interaction terms between endmembers.All the solid solution parameters are expected to be in SI units. This means that the interaction parameters should be in J/mol, with the T and P derivatives in J/K/mol and m^3/mol.

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

set_composition
(molar_fractions)[source]¶ Set the composition for this solid solution.
Parameters: molar_fractions: list of float
molar abundance for each endmember, needs to sum to one.

activities
¶ Returns a list of endmember activities [unitless]

activity_coefficients
¶ Returns a list of endmember activity coefficients (gamma = activity / ideal activity) [unitless]

internal_energy
¶ Returns internal energy of the mineral [J] Aliased with self.energy

excess_partial_gibbs
¶ Returns excess partial gibbs free energy [J] Property specific to solid solutions.

partial_gibbs
¶ Returns excess partial gibbs free energy [J] Property specific to solid solutions.

excess_gibbs
¶ Returns excess gibbs free energy [J] Property specific to solid solutions.

molar_gibbs
¶ Returns Gibbs free energy of the solid solution [J] Aliased with self.gibbs

molar_helmholtz
¶ Returns Helmholtz free energy of the solid solution [J] Aliased with self.helmholtz

molar_mass
¶ Returns molar mass of the solid solution [kg/mol]

formula
¶ Returns chemical formula of the solid solution

excess_volume
¶ Returns excess volume of the solid solution [m^3/mol] Specific property for solid solutions

molar_volume
¶ Returns molar volume of the solid solution [m^3/mol] Aliased with self.V

density
¶ Returns density of the solid solution [kg/m^3] Aliased with self.rho

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

debug_print
(indent='')¶

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

excess_entropy
¶ Returns excess entropy [J] Property specific to solid solutions.

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

helmholtz
¶ Alias for
molar_helmholtz()

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

to_string
()¶ Returns the name of the mineral class

unroll
()¶

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

molar_entropy
¶ Returns entropy of the solid solution [J] Aliased with self.S

excess_enthalpy
¶ Returns excess enthalpy [J] Property specific to solid solutions.

molar_enthalpy
¶ Returns enthalpy of the solid solution [J] Aliased with self.H

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the solid solution [Pa] Aliased with self.K_T

adiabatic_bulk_modulus
¶ Returns adiabatic bulk modulus of the solid solution [Pa] Aliased with self.K_S

isothermal_compressibility
¶ Returns isothermal compressibility of the solid solution (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.K_T

adiabatic_compressibility
¶ Returns adiabatic compressibility of the solid solution (or inverse adiabatic bulk modulus) [1/Pa] Aliased with self.K_S

shear_modulus
¶ Returns shear modulus of the solid solution [Pa] Aliased with self.G

p_wave_velocity
¶ Returns P wave speed of the solid solution [m/s] Aliased with self.v_p

bulk_sound_velocity
¶ Returns bulk sound speed of the solid solution [m/s] Aliased with self.v_phi

shear_wave_velocity
¶ Returns shear wave speed of the solid solution [m/s] Aliased with self.v_s

grueneisen_parameter
¶ Returns grueneisen parameter of the solid solution [unitless] Aliased with self.gr

thermal_expansivity
¶ Returns thermal expansion coefficient (alpha) of the solid solution [1/K] Aliased with self.alpha

heat_capacity_v
¶ Returns heat capacity at constant volume of the solid solution [J/K/mol] Aliased with self.C_v

heat_capacity_p
¶ Returns heat capacity at constant pressure of the solid solution [J/K/mol] Aliased with self.C_p


class
burnman.solutionmodel.
SolutionModel
[source]¶ Bases:
object
This is the base class for a solution model, intended for use in defining solid solutions and performing thermodynamic calculations on them. All minerals of type
burnman.SolidSolution
use a solution model for defining how the endmembers in the solid solution interact.A user wanting a new solution model should define the functions included in the base class. All of the functions in the base class return zero, so if the userdefined solution model does not implement them, they essentially have no effect, and the Gibbs free energy and molar volume of a solid solution will be equal to the weighted arithmetic averages of the different endmember values.

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_partial_gibbs_free_energies
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy for each endmember of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: partial_G_excess : numpy array
The excess Gibbs free energy of each endmember

excess_volume
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess volume of the solution. The base class implementation assumes that the excess volume is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: V_excess : float
The excess volume of the solution

excess_enthalpy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess enthalpy of the solution. The base class implementation assumes that the excess enthalpy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: H_excess : float
The excess enthalpy of the solution

excess_entropy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess entropy of the solution. The base class implementation assumes that the excess entropy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: S_excess : float
The excess entropy of the solution

Solution models¶

class
burnman.solutionmodel.
MechanicalSolution
(endmembers)[source]¶ Bases:
burnman.solutionmodel.SolutionModel
An extremely simple class representing a mechanical solution model. A mechanical solution experiences no interaction between endmembers. Therefore, unlike ideal solutions there is no entropy of mixing; the total gibbs free energy of the solution is equal to the dot product of the molar gibbs free energies and molar fractions of the constituent materials.

class
burnman.solutionmodel.
IdealSolution
(endmembers)[source]¶ Bases:
burnman.solutionmodel.SolutionModel
A very simple class representing an ideal solution model. Calculate the excess gibbs free energy due to configurational entropy, all the other excess terms return zero.

excess_enthalpy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess enthalpy of the solution. The base class implementation assumes that the excess enthalpy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: H_excess : float
The excess enthalpy of the solution

excess_entropy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess entropy of the solution. The base class implementation assumes that the excess entropy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: S_excess : float
The excess entropy of the solution

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_volume
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess volume of the solution. The base class implementation assumes that the excess volume is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: V_excess : float
The excess volume of the solution


class
burnman.solutionmodel.
AsymmetricRegularSolution
(endmembers, alphas, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.IdealSolution
Solution model implementing the asymmetric regular solution model formulation as described in [HollandPowell03].

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy


class
burnman.solutionmodel.
SymmetricRegularSolution
(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.AsymmetricRegularSolution
Solution model implementing the symmetric regular solution model. This is simply a special case of the
burnman.solutionmodel.AsymmetricRegularSolution
class.
activities
(pressure, temperature, molar_fractions)¶

activity_coefficients
(pressure, temperature, molar_fractions)¶

excess_enthalpy
(pressure, temperature, molar_fractions)¶

excess_entropy
(pressure, temperature, molar_fractions)¶

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_partial_gibbs_free_energies
(pressure, temperature, molar_fractions)¶

excess_volume
(pressure, temperature, molar_fractions)¶


class
burnman.solutionmodel.
SubregularSolution
(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.IdealSolution
Solution model implementing the subregular solution model formulation as described in [HW89].

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

Composites¶
Base class¶

class
burnman.composite.
Composite
(phases, fractions=None, fraction_type='molar')[source]¶ Bases:
burnman.material.Material
Base class for a composite material. The static phases can be minerals or materials, meaning composite can be nested arbitrarily.
The fractions of the phases can be input as either ‘molar’ or ‘mass’ during instantiation, and modified (or initialised) after this point by using set_fractions.
This class is available as
burnman.Composite
.
set_fractions
(fractions, fraction_type='molar')[source]¶ Change the fractions of the phases of this Composite.
Parameters: fractions: list of floats
molar or mass fraction for each phase.
fraction_type: ‘molar’ or ‘mass’
specify whether molar or mass fractions are specified.

set_method
(method)[source]¶ set the same equation of state method for all the phases in the composite

set_averaging_scheme
(averaging_scheme)[source]¶ Set the averaging scheme for the moduli in the composite. Default is set to VoigtReussHill, when Composite is initialized.

set_state
(pressure, temperature)[source]¶ Update the material to the given pressure [Pa] and temperature [K].

internal_energy
¶ Returns internal energy of the mineral [J] Aliased with self.energy

molar_gibbs
¶ Returns Gibbs free energy of the composite [J] Aliased with self.gibbs

molar_helmholtz
¶ Returns Helmholtz free energy of the mineral [J] Aliased with self.helmholtz

molar_volume
¶ Returns molar volume of the composite [m^3/mol] Aliased with self.V

molar_mass
¶ Returns molar mass of the composite [kg/mol]

density
¶ Compute the density of the composite based on the molar volumes and masses Aliased with self.rho

molar_entropy
¶ Returns enthalpy of the mineral [J] Aliased with self.S

molar_enthalpy
¶ Returns enthalpy of the mineral [J] Aliased with self.H

isothermal_bulk_modulus
¶ Returns isothermal bulk modulus of the composite [Pa] Aliased with self.K_T

adiabatic_bulk_modulus
¶ Returns adiabatic bulk modulus of the mineral [Pa] Aliased with self.K_S

isothermal_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_T

adiabatic_compressibility
¶ Returns isothermal compressibility of the composite (or inverse isothermal bulk modulus) [1/Pa] Aliased with self.beta_S

shear_modulus
¶ Returns shear modulus of the mineral [Pa] Aliased with self.G

p_wave_velocity
¶ Returns P wave speed of the composite [m/s] Aliased with self.v_p

bulk_sound_velocity
¶ Returns bulk sound speed of the composite [m/s] Aliased with self.v_phi

shear_wave_velocity
¶ Returns shear wave speed of the composite [m/s] Aliased with self.v_s

grueneisen_parameter
¶ Returns grueneisen parameter of the composite [unitless] Aliased with self.gr

thermal_expansivity
¶ Returns thermal expansion coefficient of the composite [1/K] Aliased with self.alpha

heat_capacity_v
¶ Returns heat capacity at constant volume of the composite [J/K/mol] Aliased with self.C_v

heat_capacity_p
¶ Returns heat capacity at constant pressure of the composite [J/K/mol] Aliased with self.C_p

C_p
¶ Alias for
heat_capacity_p()

C_v
¶ Alias for
heat_capacity_v()

G
¶ Alias for
shear_modulus()

H
¶ Alias for
molar_enthalpy()

K_S
¶ Alias for
adiabatic_bulk_modulus()

K_T
¶ Alias for
isothermal_bulk_modulus()

P
¶ Alias for
pressure()

S
¶ Alias for
molar_entropy()

T
¶ Alias for
temperature()

V
¶ Alias for
molar_volume()

alpha
¶ Alias for
thermal_expansivity()

beta_S
¶ Alias for
adiabatic_compressibility()

beta_T
¶ Alias for
isothermal_compressibility()

energy
¶ Alias for
internal_energy()

evaluate
(vars_list, pressures, temperatures)¶ Returns an array of material properties requested through a list of strings at given pressure and temperature conditions. At the end it resets the set_state to the original values. The user needs to call set_method() before.
Parameters: vars_list : list of strings
Variables to be returned for given conditions
pressures : ndlist or ndarray of float
ndimensional array of pressures in [Pa].
temperatures : ndlist or ndarray of float
ndimensional array of temperatures in [K].
Returns: output : array of array of float
Array returning all variables at given pressure/temperature values. output[i][j] is property vars_list[j] and temperatures[i] and pressures[i].

gibbs
¶ Alias for
molar_gibbs()

gr
¶ Alias for
grueneisen_parameter()

helmholtz
¶ Alias for
molar_helmholtz()

name
¶ Humanreadable name of this material.
By default this will return the name of the class, but it can be set to an arbitrary string. Overriden in Mineral.

pressure
¶ Returns current pressure that was set with
set_state()
.Returns: pressure : float
Pressure in [Pa].
Notes
 Aliased with
P()
.
 Aliased with

print_minerals_of_current_state
()¶ Print a humanreadable representation of this Material at the current P, T as a list of minerals. This requires set_state() has been called before.

reset
()¶ Resets all cached material properties.
It is typically not required for the user to call this function.

temperature
¶ Returns current temperature that was set with
set_state()
.Returns: temperature : float
Temperature in [K].
Notes
 Aliased with
T()
.
 Aliased with

v_p
¶ Alias for
p_wave_velocity()

v_phi
¶ Alias for
bulk_sound_velocity()

v_s
¶ Alias for
shear_wave_velocity()

Averaging Schemes¶
Given a set of mineral physics parameters and an equation of state we can calculate the density, bulk, and shear modulus for a given phase.
However, as soon as we have a composite material (e.g., a rock), the determination of elastic properties become more complicated.
The bulk and shear modulus of a rock are dependent on the specific geometry of the grains in the rock, so there is no general
formula for its averaged elastic properties. Instead, we must choose from a number of averaging schemes if we want a single value,
or use bounding methods to get a range of possible values. The module burnman.averaging_schemes
provides a number of different
average and bounding schemes for determining a composite rock’s physical parameters.
Base class¶

class
burnman.averaging_schemes.
AveragingScheme
[source]¶ Bases:
object
Base class defining an interface for determining average elastic properties of a rock. Given a list of volume fractions for the different mineral phases in a rock, as well as their bulk and shear moduli, an averaging will give back a single scalar values for the averages. New averaging schemes should define the functions average_bulk_moduli and average_shear_moduli, as specified here.

average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli \(K\) for a composite. This defines the interface for this method, and is not implemented in the base class.
Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli of each phase in the composite. \([Pa]\)
Returns: K : float
The average bulk modulus \(K\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli \(G\) for a composite. This defines the interface for this method, and is not implemented in the base class.
Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli of each phase in the composite. \([Pa]\)
Returns: G : float
The average shear modulus \(G\). \([Pa]\)

average_density
(volumes, densities)[source]¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_thermal_expansivity
(volumes, alphas)[source]¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

average_heat_capacity_v
(fractions, c_v)[source]¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_heat_capacity_p
(fractions, c_p)[source]¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

Voigt bound¶

class
burnman.averaging_schemes.
Voigt
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing the Voigt (isostrain) bound for elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite \(K\) with the Voigt (isostrain) bound, given by:
\[K_V = \Sigma_i V_i K_i\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. Not used in this average. \([Pa]\)
Returns: K : float
The Voigt average bulk modulus \(K_V\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli of a composite with the Voigt (isostrain) bound, given by:
\[G_V = \Sigma_i V_i G_i\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. Not used in this average. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: G : float
The Voigt average shear modulus \(G_V\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

Reuss bound¶

class
burnman.averaging_schemes.
Reuss
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing the Reuss (isostress) bound for elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the Reuss (isostress) bound, given by:
\[K_R = \left(\Sigma_i \frac{V_i}{K_i} \right)^{1}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. Not used in this average. \([Pa]\)
Returns: K : float
The Reuss average bulk modulus \(K_R\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli of a composite with the Reuss (isostress) bound, given by:
\[G_R = \left( \Sigma_i \frac{V_i}{G_i} \right)^{1}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. Not used in this average. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: G : float
The Reuss average shear modulus \(G_R\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

VoigtReussHill average¶

class
burnman.averaging_schemes.
VoigtReussHill
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing the VoigtReussHill average for elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the VoigtReussHill average, given by:
\[K_{VRH} = \frac{K_V + K_R}{2}\]This is simply a shorthand for an arithmetic average of the bounds given by
burnman.averaging_schemes.voigt
andburnman.averaging_schemes.reuss
.Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. Not used in this average. \([Pa]\)
Returns: K : float
The VoigtReussHill average bulk modulus \(K_{VRH}\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli \(G\) of a composite with the VoigtReussHill average, given by:
\[G_{VRH} = \frac{G_V + G_R}{2}\]This is simply a shorthand for an arithmetic average of the bounds given by
burnman.averaging_schemes.voigt
andburnman.averaging_schemes.reuss
.Parameters: volumes : list of floats
List of the volume of each phase in the composite \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite Not used in this average. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite \([Pa]\)
Returns: G : float
The VoigtReussHill average shear modulus \(G_{VRH}\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

HashinShtrikman upper bound¶

class
burnman.averaging_schemes.
HashinShtrikmanUpper
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing the upper HashinShtrikman bound for elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions. Implements formulas from [WDOConnell76]. The HashinShtrikman bounds are tighter than the Voigt and Reuss bounds because they make the additional assumption that the orientation of the phases are statistically isotropic. In some cases this may be a good assumption, and in others it may not be.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the upper HashinShtrikman bound. Implements Formulas from [WDOConnell76], which are too lengthy to reproduce here.
Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: K : float
The upper HashinShtrikman average bulk modulus \(K\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli of a composite with the upper HashinShtrikman bound. Implements Formulas from [WDOConnell76], which are too lengthy to reproduce here.
Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: G : float
The upper HashinShtrikman average shear modulus \(G\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

HashinShtrikman lower bound¶

class
burnman.averaging_schemes.
HashinShtrikmanLower
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing the lower HashinShtrikman bound for elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions. Implements Formulas from [WDOConnell76]. The HashinShtrikman bounds are tighter than the Voigt and Reuss bounds because they make the additional assumption that the orientation of the phases are statistically isotropic. In some cases this may be a good assumption, and in others it may not be.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the lower HashinShtrikman bound. Implements Formulas from [WDOConnell76], which are too lengthy to reproduce here.
Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: K : float
The lower HashinShtrikman average bulk modulus \(K\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the shear moduli of a composite with the lower HashinShtrikman bound. Implements Formulas from [WDOConnell76], which are too lengthy to reproduce here.
Parameters: volumes : list of floats
List of volumes of each phase in the composite. \([m^3]\).
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\).
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: G : float
The lower HashinShtrikman average shear modulus \(G\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

HashinShtrikman arithmetic average¶

class
burnman.averaging_schemes.
HashinShtrikmanAverage
[source]¶ Bases:
burnman.averaging_schemes.AveragingScheme
Class for computing arithmetic mean of the HashinShtrikman bounds on elastic properties. This derives from
burnman.averaging_schemes.averaging_scheme
, and implements theburnman.averaging_schemes.averaging_scheme.average_bulk_moduli()
andburnman.averaging_schemes.averaging_scheme.average_shear_moduli()
functions.
average_bulk_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the arithmetic mean of the upper and lower HashinShtrikman bounds.
Parameters: volumes : list of floats
List of the volumes of each phase in the composite. \([m^3]\)
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. Not used in this average. \([Pa]\)
Returns: K : float
The arithmetic mean of the HashinShtrikman bounds on bulk modulus \(K\). \([Pa]\)

average_shear_moduli
(volumes, bulk_moduli, shear_moduli)[source]¶ Average the bulk moduli of a composite with the arithmetic mean of the upper and lower HashinShtrikman bounds.
Parameters: volumes : list of floats
List of the volumes of each phase in the composite. [m^3].
bulk_moduli : list of floats
List of bulk moduli \(K\) of each phase in the composite. Not used in this average. \([Pa]\)
shear_moduli : list of floats
List of shear moduli \(G\) of each phase in the composite. \([Pa]\)
Returns: G : float
The arithmetic mean of the HashinShtrikman bounds on shear modulus \(G\). \([Pa]\)

average_density
(volumes, densities)¶ Average the densities of a composite, given a list of volume fractions and densitites. This is implemented in the base class, as how to calculate it is not dependent on the geometry of the rock. The formula for density is given by
\[\rho = \frac{\Sigma_i \rho_i V_i }{\Sigma_i V_i}\]Parameters: volumes : list of floats
List of the volume of each phase in the composite. \([m^3]\)
densities : list of floats
List of densities of each phase in the composite. \([kg/m^3]\)
Returns: rho : float
Density \(\rho\). \([kg/m^3]\)

average_heat_capacity_p
(fractions, c_p)¶ Averages the heat capacities at constant pressure \(C_P\) by molar fractions.
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_p : list of floats
List of heat capacities at constant pressure \(C_P\) of each phase in the composite. \([J/K/mol]\)
Returns: c_p : float
heat capacity at constant pressure \(C_P\) of the composite. \([J/K/mol]\)

average_heat_capacity_v
(fractions, c_v)¶ Averages the heat capacities at constant volume \(C_V\) by molar fractions as in eqn. (16) in [IS92].
Parameters: fractions : list of floats
List of molar fractions of each phase in the composite (should sum to 1.0).
c_v : list of floats
List of heat capacities at constant volume \(C_V\) of each phase in the composite. \([J/K/mol]\)
Returns: c_v : float
heat capacity at constant volume of the composite \(C_V\). \([J/K/mol]\)

average_thermal_expansivity
(volumes, alphas)¶ thermal expansion coefficient of the mineral \(\alpha\). \([1/K]\)

Geotherms¶

burnman.geotherm.
brown_shankland
(depths)[source]¶ Geotherm from [BS81]. NOTE: Valid only above 270 km
Parameters: depths : list of floats
The list of depths at which to evaluate the geotherm. \([m]\)
Returns: temperature : list of floats
The list of temperatures for each of the pressures. \([K]\)

burnman.geotherm.
anderson
(depths)[source]¶ Geotherm from [And82].
Parameters: depths : list of floats
The list of depths at which to evaluate the geotherm. \([m]\)
Returns: temperature : list of floats
The list of temperatures for each of the pressures. \([K]\)

burnman.geotherm.
adiabatic
(pressures, T0, rock)[source]¶ This calculates a geotherm based on an anchor temperature and a rock, assuming that the rock’s temperature follows an adiabatic gradient with pressure. This amounts to integrating:
\[\frac{\partial T}{\partial P} = \frac{ \gamma T}{ K_s }\]where \(\gamma\) is the Grueneisen parameter and \(K_s\) is the adiabatic bulk modulus.
Parameters: pressures : list of floats
The list of pressures in \([Pa]\) at which to evaluate the geotherm.
T0 : float
An anchor temperature, corresponding to the temperature of the first pressure in the list. \([K]\)
rock :
burnman.composite
Material for which we compute the adiabat. From this material we must compute average Grueneisen parameters and adiabatic bulk moduli for each pressure/temperature.
Returns: temperature: list of floats
The list of temperatures for each pressure. \([K]\)

burnman.geotherm.
dTdP
(temperature, pressure, rock)[source]¶ ODE to integrate temperature with depth for a composite material Assumes that the minerals exist at a common pressure (Reuss bound, should be good for slow deformations at high temperature), as well as an adiabatic process. This corresponds to conservation of enthalpy. First consider compression of the composite to a new pressure P+dP. They all heat up different amounts dT[i], according to their thermoelastic parameters. Then allow them to equilibrate to a constant temperature dT, conserving heat within the composite. This works out to the formula:
\[dT/dP = T*\frac{\Sigma_i(X[i]*C_{p}[i]*\gamma[i]/K[i])}{\Sigma(X[i]*C_{p}[i])}\]Where \(X[i]\) is the molar fraction of phase \(i\), \(C_p\) is the specific heat at constant pressure, \(\gamma\) is the Gruneisen parameter and \(K\) is the bulk modulus. This function is called by
burnman.geotherm.adiabatic()
, and in general it will not be too useful in other contexts.Parameters: pressure : float
The pressure at which to evaluate dT/dP. \([Pa]\)
temperature : float
The temperature at which to evaluate dT/dP. \([K]\)
rock :
burnman.composite
Material for which we compute dT/dP.
Returns: dT/dP : float
Adiabatic temperature gradient for the composite at a given temperature and pressure. \([K/Pa]\)
Thermodynamics¶
Burnman has a number of functions and classes which deal with the thermodynamics of single phases and aggregates.
Lattice Vibrations¶
Debye model¶
Solution models¶

class
burnman.solutionmodel.
SolutionModel
[source]¶ Bases:
object
This is the base class for a solution model, intended for use in defining solid solutions and performing thermodynamic calculations on them. All minerals of type
burnman.SolidSolution
use a solution model for defining how the endmembers in the solid solution interact.A user wanting a new solution model should define the functions included in the base class. All of the functions in the base class return zero, so if the userdefined solution model does not implement them, they essentially have no effect, and the Gibbs free energy and molar volume of a solid solution will be equal to the weighted arithmetic averages of the different endmember values.

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_partial_gibbs_free_energies
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy for each endmember of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: partial_G_excess : numpy array
The excess Gibbs free energy of each endmember

excess_volume
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess volume of the solution. The base class implementation assumes that the excess volume is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: V_excess : float
The excess volume of the solution

excess_enthalpy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess enthalpy of the solution. The base class implementation assumes that the excess enthalpy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: H_excess : float
The excess enthalpy of the solution

excess_entropy
(pressure, temperature, molar_fractions)[source]¶ Given a list of molar fractions of different phases, compute the excess entropy of the solution. The base class implementation assumes that the excess entropy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: S_excess : float
The excess entropy of the solution


class
burnman.solutionmodel.
MechanicalSolution
(endmembers)[source]¶ Bases:
burnman.solutionmodel.SolutionModel
An extremely simple class representing a mechanical solution model. A mechanical solution experiences no interaction between endmembers. Therefore, unlike ideal solutions there is no entropy of mixing; the total gibbs free energy of the solution is equal to the dot product of the molar gibbs free energies and molar fractions of the constituent materials.

class
burnman.solutionmodel.
IdealSolution
(endmembers)[source]¶ Bases:
burnman.solutionmodel.SolutionModel
A very simple class representing an ideal solution model. Calculate the excess gibbs free energy due to configurational entropy, all the other excess terms return zero.

excess_enthalpy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess enthalpy of the solution. The base class implementation assumes that the excess enthalpy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: H_excess : float
The excess enthalpy of the solution

excess_entropy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess entropy of the solution. The base class implementation assumes that the excess entropy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: S_excess : float
The excess entropy of the solution

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_volume
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess volume of the solution. The base class implementation assumes that the excess volume is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: V_excess : float
The excess volume of the solution


class
burnman.solutionmodel.
AsymmetricRegularSolution
(endmembers, alphas, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.IdealSolution
Solution model implementing the asymmetric regular solution model formulation as described in [HollandPowell03].

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy


class
burnman.solutionmodel.
SymmetricRegularSolution
(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.AsymmetricRegularSolution
Solution model implementing the symmetric regular solution model. This is simply a special case of the
burnman.solutionmodel.AsymmetricRegularSolution
class.
activities
(pressure, temperature, molar_fractions)¶

activity_coefficients
(pressure, temperature, molar_fractions)¶

excess_enthalpy
(pressure, temperature, molar_fractions)¶

excess_entropy
(pressure, temperature, molar_fractions)¶

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

excess_partial_gibbs_free_energies
(pressure, temperature, molar_fractions)¶

excess_volume
(pressure, temperature, molar_fractions)¶


class
burnman.solutionmodel.
SubregularSolution
(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]¶ Bases:
burnman.solutionmodel.IdealSolution
Solution model implementing the subregular solution model formulation as described in [HW89].

excess_gibbs_free_energy
(pressure, temperature, molar_fractions)¶ Given a list of molar fractions of different phases, compute the excess Gibbs free energy of the solution. The base class implementation assumes that the excess gibbs free energy is zero.
Parameters: pressure : float
Pressure at which to evaluate the solution model. [Pa]
temperature : float
Temperature at which to evaluate the solution. [K]
molar_fractions : list of floats
List of molar fractions of the different endmembers in solution
Returns: G_excess : float
The excess Gibbs free energy

Chemistry parsing¶

burnman.processchemistry.
read_masses
()[source]¶ A simple function to read a file with a two column list of elements and their masses into a dictionary

burnman.processchemistry.
dictionarize_formula
(formula)[source]¶ A function to read a chemical formula string and convert it into a dictionary

burnman.processchemistry.
formula_mass
(formula)[source]¶ A function to take chemical formula and atomic mass dictionaries and compute the formula mass.

burnman.processchemistry.
dictionarize_site_formula
(formula)[source]¶ A function to take a chemical formula with sites specified by square brackets and return a standard dictionary with element keys and atoms of each element per formula unit as items.

burnman.processchemistry.
process_solution_chemistry
(formulae)[source]¶ This function parses a set of endmember formulae containing site information, e.g.
[ ‘[Mg]3[Al]2Si3O12’, ‘[Mg]3[Mg1/2Si1/2]2Si3O12’ ]It outputs the bulk composition of each endmember (removing the site information), and also a set of variables and arrays which contain the site information. These are output in a format that can easily be used to calculate activities and gibbs free energies, given molar fractions of the phases and pressure and temperature where necessary.
Parameters: formulae : list of strings
List of chemical formulae with site information
Returns: solution_formulae : list of dictionaries
List of endmember formulae is output from site formula strings
n_sites : integer
Number of sites in the solid solution. Should be the same for all endmembers.
sites : list of lists of strings
A list of elements for each site in the solid solution
n_occupancies : integer
Sum of the number of possible elements on each of the sites in the solid solution. Example: A binary solution [[A][B],[B][C1/2D1/2]] would have n_occupancies = 5, with two possible elements on Site 1 and three on Site 2
endmember_occupancies : 2d array of floats
A 1D array for each endmember in the solid solution, containing the number of atoms of each element on each site.
site_multiplicities : array of floats
The number of each site per formula unit To simplify computations later, the multiplicities are repeated for each element on each site
Chemical potentials¶

burnman.chemicalpotentials.
chemical_potentials
(assemblage, component_formulae)[source]¶ The compositional space of the components does not have to be a superset of the compositional space of the assemblage. Nor do they have to compose an orthogonal basis.
The components must each be described by a linear mineral combination
The mineral compositions must be linearly independent
Parameters: assemblage : list of classes
List of material classes set_method and set_state should already have been used the composition of the solid solutions should also have been set
 component_formulae : list of dictionaries
List of chemical component formula dictionaries No restriction on length
Returns: component_potentials : array of floats
Array of chemical potentials of components

burnman.chemicalpotentials.
fugacity
(standard_material, assemblage)[source]¶ Parameters: standard_material: class
Material class set_method and set_state should already have been used material must have a formula as a dictionary parameter
assemblage: list of classes
List of material classes set_method and set_state should already have been used
Returns: fugacity : float
Value of the fugacity of the component with respect to the standard material

burnman.chemicalpotentials.
relative_fugacity
(standard_material, assemblage, reference_assemblage)[source]¶ Parameters: standard_material: class
Material class set_method and set_state should already have been used material must have a formula as a dictionary parameter
assemblage: list of classes
List of material classes set_method and set_state should already have been used
reference_assemblage: list of classes
List of material classes set_method and set_state should already have been used
Returns: relative_fugacity : float
Value of the fugacity of the component in the assemblage with respect to the reference_assemblage
Seismic¶
Base class for all seismic models¶

class
burnman.seismic.
Seismic1DModel
[source]¶ Bases:
object
Base class for all the seismological models.

evaluate
(vars_list, depth_list)[source]¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

internal_depth_list
(mindepth=0.0, maxdepth=1e+99)[source]¶ Returns a sorted list of depths where this seismic data is specified at. This allows you to compare the seismic data without interpolation. The depths can be bounded by the mindepth and maxdepth parameters.
Parameters: mindepth : float
Minimum depth value to be returned [m]
maxdepth
Maximum depth value to be returned [m]
Returns: depths : array of floats
Depths [m].

pressure
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: pressure : float or array of floats
Pressure(s) at given depth(s) in [Pa].

v_p
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_p : float or array of floats
P wave velocity at given depth(s) in [m/s].

v_s
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_s : float or array of floats
S wave velocity at given depth(s) in [m/s].

v_phi
(depth)[source]¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

density
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: density : float or array of floats
Density at given depth(s) in [kg/m^3].

G
(depth)[source]¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)[source]¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QK
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: Qk : float or array of floats
Quality factor (dimensionless) for bulk modulus at given depth(s).

QG
(depth)[source]¶ Parameters: depth : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: QG : float or array of floats
Quality factor (dimensionless) for shear modulus at given depth(s).

Class for 1D Models¶

class
burnman.seismic.
SeismicTable
[source]¶ Bases:
burnman.seismic.Seismic1DModel
This is a base class that gets a 1D seismic model from a table indexed and sorted by radius. Fill the tables in the constructor after deriving from this class. This class uses
burnman.seismic.Seismic1DModel
Note: all tables need to be sorted by increasing depth. self.table_depth needs to be defined Alternatively, you can also overwrite the _lookup function if you want to access with something else.

G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

Models currently implemented¶

class
burnman.seismic.
PREM
[source]¶ Bases:
burnman.seismic.SeismicTable
Reads PREM (1s) (input_seismic/prem.txt, [DA81]). See also
burnman.seismic.SeismicTable
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶


class
burnman.seismic.
Slow
[source]¶ Bases:
burnman.seismic.SeismicTable
Inserts the mean profiles for slower regions in the lower mantle (Lekic et al. 2012). We stitch together tables ‘input_seismic/prem_lowermantle.txt’, ‘input_seismic/swave_slow.txt’, ‘input_seismic/pwave_slow.txt’). See also
burnman.seismic.SeismicTable
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶


class
burnman.seismic.
Fast
[source]¶ Bases:
burnman.seismic.SeismicTable
Inserts the mean profiles for faster regions in the lower mantle (Lekic et al. 2012). We stitch together tables ‘input_seismic/prem_lowermantle.txt’, ‘input_seismic/swave_fast.txt’, ‘input_seismic/pwave_fast.txt’). See also
burnman.seismic.Seismic1DModel
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶


class
burnman.seismic.
STW105
[source]¶ Bases:
burnman.seismic.SeismicTable
Reads STW05 (a.k.a. REF) (1s) (input_seismic/STW105.txt, [KED08]). See also
burnman.seismic.SeismicTable
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶


class
burnman.seismic.
IASP91
[source]¶ Bases:
burnman.seismic.SeismicTable
Reads REF/STW05 (input_seismic/STW105.txt, [KED08]). See also
burnman.seismic.SeismicTable
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶


class
burnman.seismic.
AK135
[source]¶ Bases:
burnman.seismic.SeismicTable
Reads AK135 (input_seismic/ak135.txt, [KEB95]). See also
burnman.seismic.SeismicTable
.
G
(depth)¶ Parameters: depth : float or array of floats
Shear modulus at given for depth(s) in [Pa].

K
(depth)¶ Parameters: depth : float or array of floats
Bulk modulus at given for depth(s) in [Pa]

QG
(depth)¶

QK
(depth)¶

density
(depth)¶

depth
(pressure)¶

evaluate
(vars_list, depth_list)¶ Returns the lists of data for a Seismic1DModel for the depths provided
Parameters: vars_list : array of str
Available variables depend on the seismic model, and can be chosen from ‘pressure’,’density’,’gravity’,’v_s’,’v_p’,’v_phi’,’G’,’K’,’QG’,’QK’
depth_list : array of floats
Array of depths [m] to evaluate seismic model at.
Returns: Array of values shapes as (len(vars_list),len(depth_list)).

gravity
(depth)¶

internal_depth_list
(mindepth=0.0, maxdepth=10000000000.0)¶

pressure
(depth)¶

radius
(pressure)¶

v_p
(depth)¶

v_phi
(depth)¶ Parameters: depth_list : float or array of floats
Depth(s) [m] to evaluate seismic model at.
Returns: v_phi : float or array of floats
bulk sound wave velocity at given depth(s) in [m/s].

v_s
(depth)¶

Attenuation Correction¶

burnman.seismic.
attenuation_correction
(v_p, v_s, v_phi, Qs, Qphi)[source]¶ Applies the attenuation correction following Matas et al. (2007), page 4. This is simplified, and there is also currently no 1D Q model implemented. The correction, however, only slightly reduces the velocities, and can be ignored for our current applications. Arguably, it might not be as relevant when comparing computations to PREM for periods of 1s as is implemented here. Called from
burnman.main.apply_attenuation_correction()
Parameters: v_p : float
P wave velocity in [m/s].
v_s : float
S wave velocitiy in [m/s].
v_phi : float
Bulk sound velocity in [m/s].
Qs : float
shear quality factor [dimensionless]
Qphi: float
bulk quality factor [dimensionless]
Returns: v_p : float
corrected P wave velocity in [m/s].
v_s : float
corrected S wave velocitiy in [m/s].
v_phi : float
corrected Bulk sound velocity in [m/s].
Mineral database¶
Mineral database
SLB_2005
SLB_2011_ZSB_2013
SLB_2011
DKS_2013_liquids
DKS_2013_solids
RS_2014_liquids
Murakami_etal_2012
Murakami_2013
Matas_etal_2007
HP_2011_ds62
HP_2011_fluids
HHPH_2013
other
Murakami_2013¶
Minerals from Murakami 2013 and references therein.

class
burnman.minerals.Murakami_2013.
periclase
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Murakami_2013.
wuestite
[source]¶ Bases:
burnman.mineral.Mineral
Murakami 2013 and references therein

class
burnman.minerals.Murakami_2013.
mg_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Murakami_2013.
fe_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

burnman.minerals.Murakami_2013.
mg_bridgmanite
¶ alias of
mg_perovskite

burnman.minerals.Murakami_2013.
fe_bridgmanite
¶ alias of
fe_perovskite
SLB_2011 Minerals from Stixrude & LithgowBertelloni 2011 and references therein File autogenerated using SLBdata_to_burnman.py

class
burnman.minerals.SLB_2011.
anorthite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
albite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
spinel
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
hercynite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
forsterite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fayalite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_wadsleyite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_wadsleyite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_ringwoodite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_ringwoodite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
enstatite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
ferrosilite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_tschermaks
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
ortho_diopside
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
diopside
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
hedenbergite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
clinoenstatite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
ca_tschermaks
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
jadeite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
hp_clinoenstatite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
hp_clinoferrosilite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
ca_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_akimotoite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_akimotoite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
corundum
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
pyrope
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
almandine
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
grossular
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_majorite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
jd_majorite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
quartz
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
coesite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
stishovite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
seifertite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
al_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_post_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_post_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
al_post_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
periclase
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
wuestite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
mg_ca_ferrite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
fe_ca_ferrite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
na_ca_ferrite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
kyanite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.SLB_2011.
nepheline
[source]¶ Bases:
burnman.mineral.Mineral

burnman.minerals.SLB_2011.
fo
¶ alias of
forsterite

burnman.minerals.SLB_2011.
mgwa
¶ alias of
mg_wadsleyite

burnman.minerals.SLB_2011.
fewa
¶ alias of
fe_wadsleyite

burnman.minerals.SLB_2011.
mgri
¶ alias of
mg_ringwoodite

burnman.minerals.SLB_2011.
feri
¶ alias of
fe_ringwoodite

burnman.minerals.SLB_2011.
fs
¶ alias of
ferrosilite

burnman.minerals.SLB_2011.
mgts
¶ alias of
mg_tschermaks

burnman.minerals.SLB_2011.
odi
¶ alias of
ortho_diopside

burnman.minerals.SLB_2011.
he
¶ alias of
hedenbergite

burnman.minerals.SLB_2011.
cen
¶ alias of
clinoenstatite

burnman.minerals.SLB_2011.
cats
¶ alias of
ca_tschermaks

burnman.minerals.SLB_2011.
mgc2
¶ alias of
hp_clinoenstatite

burnman.minerals.SLB_2011.
fec2
¶ alias of
hp_clinoferrosilite

burnman.minerals.SLB_2011.
hpcen
¶ alias of
hp_clinoenstatite

burnman.minerals.SLB_2011.
hpcfs
¶ alias of
hp_clinoferrosilite

burnman.minerals.SLB_2011.
mgpv
¶ alias of
mg_perovskite

burnman.minerals.SLB_2011.
mg_bridgmanite
¶ alias of
mg_perovskite

burnman.minerals.SLB_2011.
fepv
¶ alias of
fe_perovskite

burnman.minerals.SLB_2011.
fe_bridgmanite
¶ alias of
fe_perovskite

burnman.minerals.SLB_2011.
alpv
¶ alias of
al_perovskite

burnman.minerals.SLB_2011.
capv
¶ alias of
ca_perovskite

burnman.minerals.SLB_2011.
mgil
¶ alias of
mg_akimotoite

burnman.minerals.SLB_2011.
feil
¶ alias of
fe_akimotoite

burnman.minerals.SLB_2011.
mgmj
¶ alias of
mg_majorite

burnman.minerals.SLB_2011.
jdmj
¶ alias of
jd_majorite

burnman.minerals.SLB_2011.
st
¶ alias of
stishovite

burnman.minerals.SLB_2011.
seif
¶ alias of
seifertite

burnman.minerals.SLB_2011.
mppv
¶ alias of
mg_post_perovskite

burnman.minerals.SLB_2011.
fppv
¶ alias of
fe_post_perovskite

burnman.minerals.SLB_2011.
appv
¶ alias of
al_post_perovskite

burnman.minerals.SLB_2011.
mgcf
¶ alias of
mg_ca_ferrite

burnman.minerals.SLB_2011.
fecf
¶ alias of
fe_ca_ferrite

burnman.minerals.SLB_2011.
nacf
¶ alias of
na_ca_ferrite

burnman.minerals.SLB_2011.
c2c
¶ alias of
c2c_pyroxene

burnman.minerals.SLB_2011.
cf
¶ alias of
ca_ferrite_structured_phase

burnman.minerals.SLB_2011.
cpx
¶ alias of
clinopyroxene

burnman.minerals.SLB_2011.
il
¶ alias of
akimotoite

burnman.minerals.SLB_2011.
ilmenite_group
¶ alias of
akimotoite

burnman.minerals.SLB_2011.
mw
¶ alias of
ferropericlase

burnman.minerals.SLB_2011.
magnesiowuestite
¶ alias of
ferropericlase

burnman.minerals.SLB_2011.
ol
¶ alias of
mg_fe_olivine

burnman.minerals.SLB_2011.
opx
¶ alias of
orthopyroxene

burnman.minerals.SLB_2011.
plag
¶ alias of
plagioclase

burnman.minerals.SLB_2011.
ppv
¶ alias of
post_perovskite

burnman.minerals.SLB_2011.
pv
¶ alias of
mg_fe_perovskite

burnman.minerals.SLB_2011.
mg_fe_bridgmanite
¶ alias of
mg_fe_perovskite

burnman.minerals.SLB_2011.
mg_fe_silicate_perovskite
¶ alias of
mg_fe_perovskite

burnman.minerals.SLB_2011.
ri
¶ alias of
mg_fe_ringwoodite

burnman.minerals.SLB_2011.
spinel_group
¶ alias of
mg_fe_aluminous_spinel

burnman.minerals.SLB_2011.
wa
¶ alias of
mg_fe_wadsleyite

burnman.minerals.SLB_2011.
spinelloid_III
¶ alias of
mg_fe_wadsleyite
Matas_etal_2007¶
Minerals from Matas et al. 2007 and references therein. See Table 1 and 2.

class
burnman.minerals.Matas_etal_2007.
mg_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Matas_etal_2007.
fe_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Matas_etal_2007.
al_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Matas_etal_2007.
ca_perovskite
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Matas_etal_2007.
periclase
[source]¶ Bases:
burnman.mineral.Mineral

class
burnman.minerals.Matas_etal_2007.
wuestite
[source]¶ Bases:
burnman.mineral.Mineral

burnman.minerals.Matas_etal_2007.
ca_bridgmanite
¶ alias of