Solution Model Classes¶
Mean-field solution models¶
In BurnMan, all solution models are based on mean-field theories of solutions. These theories, introduced by Bragg and Williams in 1934, assume that each component in the solution experiences an average environment created by all other components, rather than accounting for specific local interactions between different species. This simplification allows for tractable mathematical descriptions of solution behaviour.
Each of the solution models below takes an endmembers argument, which is a list of
lists. Each sub-list contains two items. The first is an instance of burnman.Mineral
representing an independent endmember (or component) of the solution. The second is a
string, which represents the occupancies of different species on distinct sites in the
solution. 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 eight-cation 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 solution calculations.
The chemical formula of many low pressure garnets exist within the solution:
where the dodecahedral site is occupied by Mg, Fe, Mn and Ca,
and the octahedral site is occupied by Al, Fe and Cr.
The pyrope endmember, composition \(\textrm{Mg}_3\textrm{Al}_2\textrm{Si}_3\textrm{O}_{12}\),
would have the corrsponding site occupancy string [Mg]3[Al]2Si3O12, while andradite would have
[Ca]3[Fef]2Si3O12. BurnMan also allows for partial occupancies on sites; for example,
disordered grandite with composition \(\textrm{Ca}_3\textrm{AlFeSi}_3\textrm{O}_{12}\) would have
the site occupancy string [Ca]3[Al0.5Fef0.5]2Si3O12. Note that distinct species do not need to
be named as elements; the only requirement is that the names start with a capital letter and
are followed by lower-case letters. Atom proportions and site multiplicities can be expressed
as decimal numbers or fractions.
In BurnMan, the multiplicities of each site are allowed to vary linearly between endmembers. This is known as a Temkin model [Tem45], and is useful for modelling phases where the site multiplicities are not fixed by crystal structure, such as glasses or melts.
Implemented solution models¶
MechanicalSolution¶
- class burnman.classes.solutionmodel.MechanicalSolution(endmembers)[source]
Bases:
SolutionModelAn 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.
IdealSolution¶
- class burnman.classes.solutionmodel.IdealSolution(endmembers)[source]
Bases:
SolutionModelA solution model representing ideal mixing between endmembers. In ideal solutions, the enthalpy of mixing is equal to zero; i.e. chemical mixing of endmembers at fixed pressure and temperature does not involve the absorption or release of heat. The only contribution to the Gibbs energy of mixing is the configurational entropy \(S_{\textrm{conf}}\):
\[\begin{split}\mathcal{G}_{\textrm{mixing}} = - T \Delta S_{\textrm{conf}}, \\ S_{\textrm{conf}} = R x_c^s \ln \frac{x_c^s}{\sum_{c^s} x_c^s}\end{split}\]where \(s\) is a site in the lattice, \(c\) are the species mixing on site \(s\). \(x_c^s\) is the absolute number of species \(c\) on site \(s\) in the lattice; it is calculated by multiplying the proportion of the species on the site by the multiplicity of the site per formula unit and the number of moles of formula units. This class allows the site multiplicities to vary linearly between endmembers. This is known as a Temkin model [Tem45].
AsymmetricRegularSolution¶
- class burnman.classes.solutionmodel.AsymmetricRegularSolution(endmembers, alphas, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]
Bases:
IdealSolutionSolution model implementing the asymmetric regular solution model formulation as described in [HollandPowell03].
The excess nonconfigurational Gibbs energy is given by the expression [DPWH07]:
\[\mathcal{G}_{\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}\]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 non-zero \(w\) yields an excess with a quadratic form and a maximum of \(w/4\) half-way between the two endmembers.
- Parameters:
endmembers (list of tuples) – A list of tuples defining the endmembers of the solution. Each tuple contains a
burnman.Mineralobject and a string defining the site formula of that endmember.alphas (list of floats) – A list of van Laar parameters governing asymmetry in the excess properties.
energy_interaction (list of lists of floats) – A 2D list of interaction parameters defining the energetic interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
volume_interaction (list of lists of floats) – (optional) A 2D list of interaction parameters defining the volumetric interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
entropy_interaction (list of lists of floats) – (optional) A 2D list of interaction parameters defining the entropic interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
SymmetricRegularSolution¶
- class burnman.classes.solutionmodel.SymmetricRegularSolution(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None)[source]
Bases:
AsymmetricRegularSolutionSolution model implementing the Symmetric Regular Solution Model. This is a special case of the
burnman.solutionmodel.AsymmetricRegularSolutionclass where all van Laar parameters are equal to unity.The excess terms in the Symmetric Regular Solution Model have the matrix form [DPWH07]
\[\mathcal{G}_{\textrm{excess}} = RT \ln \gamma = p^T W p\]where \(p\) is a vector of molar fractions of each of the \(n\) endmembers and \(W\) is a strictly upper-triangular matrix of interaction terms between endmembers. Excesses within binary systems (\(i\)-\(j\)) have a quadratic form and a maximum of \(W_{ij}/4\) half-way between the two endmembers.
- Parameters:
endmembers (list of tuples) – A list of tuples defining the endmembers of the solution. Each tuple contains a
burnman.Mineralobject and a string defining the site formula of that endmember.energy_interaction (list of lists of floats) – A 2D list of interaction parameters defining the energetic interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
volume_interaction (list of lists of floats) – (optional) A 2D list of interaction parameters defining the volumetric interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
entropy_interaction (list of lists of floats) – (optional) A 2D list of interaction parameters defining the entropic interactions between endmembers. The list should be upper-triangular, such that the first row has n-1 elements (for n endmembers), the second row has n-2 elements, etc.
SubregularSolution¶
- class burnman.classes.solutionmodel.SubregularSolution(endmembers, energy_interaction, volume_interaction=None, entropy_interaction=None, energy_ternary_terms=None, volume_ternary_terms=None, entropy_ternary_terms=None)[source]
Bases:
IdealSolutionSolution model implementing the subregular solution model formulation as described in [HW89]. The excess nonconfigurational Gibbs energy is given by the expression:
\[\mathcal{G}_{\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).
volume_interaction (list of list of lists) – The binary endmember interaction volumes. 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.
volume_ternary_terms (list of lists) – The ternary interaction volumes. 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.
FunctionSolution¶
- class burnman.classes.solutionmodel.FunctionSolution(endmembers, excess_gibbs_function)[source]
Bases:
IdealSolutionSolution model implementing a generalized solution model. The extensive excess nonconfigurational Gibbs energy is provided as a function by the user.
Derivatives are calculated using the autograd module, and so the user-defined excess Gibbs 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_gibbs_function (function) – The nonconfigurational Gibbs energy function with arguments pressure, temperature and molar_amounts, in that order. Note that the function must be extensive; if the molar amounts are doubled, the Gibbs energy must also double.
PolynomialSolution¶
- class burnman.classes.solutionmodel.PolynomialSolution(endmembers, ESV_interactions=None, interaction_endmembers=[], endmember_coefficients_and_interactions=None, transformation_matrix=None)[source]
Bases:
IdealSolutionSolution model implementing a general polynomial solution model.
- 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.
ESV_interactions (list of lists) – A list containing lists where the first three elements are energy, entropy and volume interactions and the rest of the elements are indices of the transformed endmembers to which those interactions correspond, and the proportion exponents. For example, [2., 0., 0., 0, 4, 1, 1] would correspond to an interaction of 2*p’[0]^4*p’[1]^1.
interaction_endmembers (list of
burnman.Mineralobjects) – A list of minerals involved in the interaction terms.endmember_coefficients_and_interactions (list of lists) – list of lists A list containing lists where the first n elements are coefficients for each of the interaction_endmembers and the rest of the elements are indices of the transformed endmembers to which those interactions correspond. For example, [1., 0., -1., 0, 4, 1, 1] would correspond to an interaction of (mbr[0].gibbs - mbr[2].gibbs)*p’[0]^4*p’[1]^1.
transformation_matrix (2D numpy array) – The interactions for a given solution may be most compactly expressed not as a polynomial function of the proportions of the endmembers, but a polynomial function of a linearly transformed set. This parameter is a square numpy array A, where p’i = A_ij p_j