Elastic Solution Model Classes

Mean-field elastic solution models

Just like the burnman.SolutionModel implementations, burnman.ElasticSolutionModel classes in BurnMan are based on mean-field theories of solutions. For more details on these theories, and how they relate to BurnMan solution objects, please refer to Solution Model Classes.

Implemented elastic solution models

ElasticMechanicalSolution

class burnman.classes.elasticsolutionmodel.ElasticMechanicalSolution(endmembers)[source]

Bases: ElasticSolutionModel

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 Helmholtz energy of the solution is equal to the dot product of the molar Helmholtz energies and molar fractions of the constituent materials.

ElasticIdealSolution

class burnman.classes.elasticsolutionmodel.ElasticIdealSolution(endmembers)[source]

Bases: ElasticSolutionModel

A class representing an ideal solution model. Calculates the excess Helmholtz energy and entropy due to configurational entropy. Excess internal energy and volume are equal to zero.

The multiplicity of each type of site in the structure is allowed to change linearly as a function of endmember proportions. This class is therefore equivalent to the entropic part of a Temkin-type model [Tem45].

ElasticAsymmetricRegularSolution

class burnman.classes.elasticsolutionmodel.ElasticAsymmetricRegularSolution(endmembers, alphas, energy_interaction, pressure_interaction=None, entropy_interaction=None)[source]

Bases: ElasticIdealSolution

Solution model implementing the asymmetric regular solution model formulation as described in [HollandPowell03].

The excess nonconfigurational Helmholtz energy is given by the expression:

\[\mathcal{F}_{\textrm{excess}} = \alpha^T p (\phi^T W \phi)\]

\(\alpha\) is a vector of van Laar parameters governing asymmetry in the excess properties.

\[\phi_i = \frac{\alpha_i p_i}{\sum_{k=1}^{n} \alpha_k p_k}, W_{ij} = \frac{2 w_{ij}}{\alpha_i + \alpha_j} \textrm{for i<j}\]

ElasticSymmetricRegularSolution

class burnman.classes.elasticsolutionmodel.ElasticSymmetricRegularSolution(endmembers, energy_interaction, pressure_interaction=None, entropy_interaction=None)[source]

Bases: ElasticAsymmetricRegularSolution

Solution model implementing the symmetric regular solution model. This is a special case of the burnman.solutionmodel.AsymmetricRegularSolution class.

ElasticSubregularSolution

class burnman.classes.elasticsolutionmodel.ElasticSubregularSolution(endmembers, energy_interaction, pressure_interaction=None, entropy_interaction=None, energy_ternary_terms=None, pressure_ternary_terms=None, entropy_ternary_terms=None)[source]

Bases: ElasticIdealSolution

Solution model implementing the subregular solution model formulation as described in [HW89]. The excess conconfigurational Helmholtz energy is given by the expression:

\[\mathcal{F}_{\textrm{excess}} = \sum_i \sum_{j > i} (p_i p_j^2 W_{ij} + p_j p_i^2 W_{ji} + \sum_{k > j > i} p_i p_j p_k W_{ijk})\]

Interaction parameters are inserted into a 3D interaction matrix during initialization to make use of numpy vector algebra.

Parameters:
  • endmembers (list of lists) – A list of all the independent endmembers in the solution. The first item of each list gives the Mineral object corresponding to the endmember. The second item gives the site-species formula.

  • energy_interaction (list of list of lists) – The binary endmember interaction energies. Each interaction[i, j-i-1, 0] corresponds to W(i,j), while interaction[i, j-i-1, 1] corresponds to W(j,i).

  • pressure_interaction (list of list of lists) – The binary endmember interaction pressures. Each interaction[i, j-i-1, 0] corresponds to W(i,j), while interaction[i, j-i-1, 1] corresponds to W(j,i).

  • entropy_interaction (list of list of lists) – The binary endmember interaction entropies. Each interaction[i, j-i-1, 0] corresponds to W(i,j), while interaction[i, j-i-1, 1] corresponds to W(j,i).

  • energy_ternary_terms (list of lists) – The ternary interaction energies. Each list should contain four entries: the indices i, j, k and the value of the interaction.

  • pressure_ternary_terms (list of lists) – The ternary interaction pressures. Each list should contain four entries: the indices i, j, k and the value of the interaction.

  • entropy_ternary_terms (list of lists) – The ternary interaction entropies. Each list should contain four entries: the indices i, j, k and the value of the interaction.

ElasticFunctionSolution

class burnman.classes.elasticsolutionmodel.ElasticFunctionSolution(endmembers, excess_helmholtz_function)[source]

Bases: ElasticIdealSolution

Solution model implementing a generalized elastic solution model. The extensive excess nonconfigurational Helmholtz energy is provided as a function by the user.

Derivatives are calculated using the autograd module, and so the user-defined excess Helmholtz energy function should be defined using autograd-friendly expressions.

Parameters:
  • endmembers (list of lists) – A list of all the independent endmembers in the solution. The first item of each list gives the Mineral object corresponding to the endmember. The second item gives the site-species formula.

  • excess_helmholtz_function (function) – The nonconfigurational Helmholtz energy function with arguments volume, temperature and molar_amounts, in that order. Note that the function must be extensive; if the molar amounts are doubled, the Helmholtz energy must also double.