# This file is part of BurnMan - a thermoelastic
# and thermodynamic toolkit for the Earth and Planetary Sciences
# Copyright (C) 2012 - 2025 by the BurnMan team, released under the GNU
# GPL v2 or later.
"""
mp50MnNCKFMASHTO
^^^^^^^^^^^^^^^^
HPx-eos solutions using endmembers from
dataset HP_2011_ds62.
Contains the following solutions:
* g
* pl4tr
* k4tr
* plc
* ksp
* ep
* ma
* mu
* bi
* opx
* sa
* cd
* st
* chl
* ctd
* sp
* ilmm
* ilm
* mt1
The values in this document are all in S.I. units,
unlike those in the original THERMOCALC file.
This file is autogenerated using hpx_eos_to_burnman.py
"""
import numpy as np
from numpy import array, nan
from . import HP_2011_ds62
from ..classes.mineral import Mineral
from ..classes.solution import Solution
from ..classes.solutionmodel import SymmetricRegularSolution
from ..classes.solutionmodel import AsymmetricRegularSolution
from ..classes.combinedmineral import CombinedMineral
hem_nood = Mineral(
{
"name": "hem",
"formula": {"Fe": 2.0, "O": 3.0},
"equation_of_state": "hp_tmt",
"H_0": -825610.0,
"S_0": 87.4,
"V_0": 3.027e-05,
"Cp": [163.9, 0.0, -2257200.0, -657.6],
"a_0": 2.79e-05,
"K_0": 223000000000.0,
"Kprime_0": 4.04,
"Kdprime_0": -1.8e-11,
"n": 5.0,
"molar_mass": 0.1596882,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 444.6488294314381,
}
)
ilm_nood = Mineral(
{
"name": "ilm",
"formula": {"Fe": 1.0, "O": 3.0, "Ti": 1.0},
"equation_of_state": "hp_tmt",
"H_0": -1230450.0,
"S_0": 109.5,
"V_0": 3.169e-05,
"Cp": [138.9, 0.005081, -1288800.0, -463.7],
"a_0": 2.4e-05,
"K_0": 170000000000.0,
"Kprime_0": 8.3,
"Kdprime_0": -4.9e-11,
"n": 5.0,
"molar_mass": 0.1517102,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 375.2999294283698,
}
)
mt_nood = Mineral(
{
"name": "mt",
"formula": {"Fe": 3.0, "O": 4.0},
"equation_of_state": "hp_tmt",
"H_0": -1114500.0,
"S_0": 146.9,
"V_0": 4.452e-05,
"Cp": [262.5, -0.007205, -1926200.0, -1655.7],
"a_0": 3.71e-05,
"K_0": 185700000000.0,
"Kprime_0": 4.05,
"Kdprime_0": -2.2e-11,
"n": 7.0,
"molar_mass": 0.2315326,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 387.81123033649334,
}
)
kho = CombinedMineral(
[HP_2011_ds62.py(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -1.0, 1.0],
[np.float64(27000.0), np.float64(-0.0), np.float64(0.0)],
"kho",
)
anC = CombinedMineral(
[HP_2011_ds62.an()],
[1.0],
[np.float64(7030.0), np.float64(4.66), np.float64(0.0)],
"anC",
)
anC = CombinedMineral(
[HP_2011_ds62.an()],
[1.0],
[np.float64(7030.0), np.float64(4.66), np.float64(0.0)],
"anC",
)
mut = CombinedMineral(
[HP_2011_ds62.mu()],
[1.0],
[np.float64(1000.0), np.float64(-0.0), np.float64(0.0)],
"mut",
)
celt = CombinedMineral(
[HP_2011_ds62.cel()],
[1.0],
[np.float64(5000.0), np.float64(-0.0), np.float64(0.0)],
"celt",
)
fcelt = CombinedMineral(
[HP_2011_ds62.fcel()],
[1.0],
[np.float64(5000.0), np.float64(-0.0), np.float64(0.0)],
"fcelt",
)
pat = CombinedMineral(
[HP_2011_ds62.pa()],
[1.0],
[np.float64(4000.0), np.float64(-0.0), np.float64(0.0)],
"pat",
)
fmu = CombinedMineral(
[HP_2011_ds62.mu(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -0.5, 0.5],
[np.float64(25000.0), np.float64(-0.0), np.float64(0.0)],
"fmu",
)
mat = CombinedMineral(
[HP_2011_ds62.ma()],
[1.0],
[np.float64(5000.0), np.float64(-0.0), np.float64(0.0)],
"mat",
)
fmu = CombinedMineral(
[HP_2011_ds62.andr(), HP_2011_ds62.gr(), HP_2011_ds62.mu()],
[0.5, -0.5, 1.0],
[np.float64(25000.0), np.float64(-0.0), np.float64(0.0)],
"fmu",
)
annm = CombinedMineral(
[HP_2011_ds62.ann()],
[1.0],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"annm",
)
obi = CombinedMineral(
[HP_2011_ds62.ann(), HP_2011_ds62.phl()],
[0.3333333333333333, 0.6666666666666666],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"obi",
)
tbi = CombinedMineral(
[HP_2011_ds62.phl(), HP_2011_ds62.br(), HP_2011_ds62.ru()],
[1.0, -1.0, 1.0],
[np.float64(55000.0), np.float64(-0.0), np.float64(0.0)],
"tbi",
)
fbi = CombinedMineral(
[HP_2011_ds62.east(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -0.5, 0.5],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"fbi",
)
mmbi = CombinedMineral(
[HP_2011_ds62.mnbi()],
[1.0],
[np.float64(-7890.0), np.float64(-0.0), np.float64(0.0)],
"mmbi",
)
fm = CombinedMineral(
[HP_2011_ds62.en(), HP_2011_ds62.fs()],
[0.5, 0.5],
[np.float64(-6600.0), np.float64(-0.0), np.float64(0.0)],
"fm",
)
fopx = CombinedMineral(
[HP_2011_ds62.mgts(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -0.5, 0.5],
[np.float64(2000.0), np.float64(-0.0), np.float64(0.0)],
"fopx",
)
mnopx = CombinedMineral(
[HP_2011_ds62.pxmn()],
[2.0],
[np.float64(6680.0), np.float64(-0.0), np.float64(0.0)],
"mnopx",
)
odi = CombinedMineral(
[HP_2011_ds62.di()],
[1.0],
[np.float64(-100.0), np.float64(-0.211), np.float64(5.0000000000000004e-08)],
"odi",
)
fspm = CombinedMineral(
[HP_2011_ds62.fspr()],
[1.0],
[np.float64(-2000.0), np.float64(-0.0), np.float64(0.0)],
"fspm",
)
spro = CombinedMineral(
[HP_2011_ds62.fspr(), HP_2011_ds62.spr4()],
[0.75, 0.25],
[np.float64(-3500.0), np.float64(-0.0), np.float64(0.0)],
"spro",
)
ospr = CombinedMineral(
[HP_2011_ds62.andr(), HP_2011_ds62.gr(), HP_2011_ds62.spr5()],
[0.5, -0.5, 1.0],
[np.float64(-16000.0), np.float64(-0.0), np.float64(0.0)],
"ospr",
)
mncd = CombinedMineral(
[HP_2011_ds62.mncrd()],
[1.0],
[np.float64(-4210.0), np.float64(-0.0), np.float64(0.0)],
"mncd",
)
mstm = CombinedMineral(
[HP_2011_ds62.mst()],
[1.0],
[np.float64(-8000.0), np.float64(-0.0), np.float64(0.0)],
"mstm",
)
mnstm = CombinedMineral(
[HP_2011_ds62.mnst()],
[1.0],
[np.float64(-190.0), np.float64(-0.0), np.float64(0.0)],
"mnstm",
)
msto = CombinedMineral(
[HP_2011_ds62.mst(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -1.0, 1.0],
[np.float64(9000.0), np.float64(-0.0), np.float64(0.0)],
"msto",
)
mstt = CombinedMineral(
[HP_2011_ds62.mst(), HP_2011_ds62.cor(), HP_2011_ds62.ru()],
[1.0, -1.0, 1.5],
[np.float64(13000.0), np.float64(-0.0), np.float64(0.0)],
"mstt",
)
ochl1 = CombinedMineral(
[HP_2011_ds62.afchl(), HP_2011_ds62.clin(), HP_2011_ds62.daph()],
[1.0, -1.0, 1.0],
[np.float64(3000.0), np.float64(-0.0), np.float64(0.0)],
"ochl1",
)
ochl4 = CombinedMineral(
[HP_2011_ds62.afchl(), HP_2011_ds62.clin(), HP_2011_ds62.daph()],
[1.0, -0.2, 0.2],
[np.float64(2400.0), np.float64(-0.0), np.float64(0.0)],
"ochl4",
)
f3clin = CombinedMineral(
[HP_2011_ds62.clin(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -0.5, 0.5],
[np.float64(2000.0), np.float64(-0.0), np.float64(0.0)],
"f3clin",
)
mmchl = CombinedMineral(
[HP_2011_ds62.mnchl()],
[1.0],
[np.float64(-5670.0), np.float64(-0.0), np.float64(0.0)],
"mmchl",
)
mnct = CombinedMineral(
[HP_2011_ds62.mnctd()],
[1.0],
[np.float64(660.0), np.float64(-0.0), np.float64(0.0)],
"mnct",
)
ctdo = CombinedMineral(
[HP_2011_ds62.mctd(), HP_2011_ds62.andr(), HP_2011_ds62.gr()],
[1.0, 0.25, -0.25],
[np.float64(13500.0), np.float64(-0.0), np.float64(0.0)],
"ctdo",
)
oilm = CombinedMineral(
[ilm_nood],
[1.0],
[
np.float64(1444.0572257227777),
np.float64(1.5923196732102785),
np.float64(1.836386612201713e-07),
],
"oilm",
)
dilm = CombinedMineral(
[ilm_nood],
[1.0],
[
np.float64(17044.35722572278),
np.float64(13.118319673210278),
np.float64(1.836386612201713e-07),
],
"dilm",
)
dhem = CombinedMineral(
[hem_nood],
[1.0],
[np.float64(9522.770803030953), np.float64(12.937668369038724), np.float64(0.0)],
"dhem",
)
oilm = CombinedMineral(
[ilm_nood],
[1.0],
[
np.float64(1444.0572257227777),
np.float64(1.5923196732102785),
np.float64(1.836386612201713e-07),
],
"oilm",
)
dilm = CombinedMineral(
[ilm_nood],
[1.0],
[
np.float64(17044.35722572278),
np.float64(13.118319673210278),
np.float64(1.836386612201713e-07),
],
"dilm",
)
dhem = CombinedMineral(
[hem_nood],
[1.0],
[np.float64(9522.770803030953), np.float64(12.937668369038724), np.float64(0.0)],
"dhem",
)
imt = CombinedMineral(
[mt_nood],
[1.0],
[np.float64(16874.42602715333), np.float64(25.01732526713637), np.float64(0.0)],
"imt",
)
dmt = CombinedMineral(
[mt_nood],
[1.0],
[np.float64(20064.42602715333), np.float64(29.36782526713637), np.float64(0.0)],
"dmt",
)
[docs]
class g(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a g solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.py(), "[Mgx]3[Aly]2"]
* [HP_2011_ds62.alm(), "[Fex]3[Aly]2"]
* [HP_2011_ds62.spss(), "[Mnx]3[Aly]2"]
* [HP_2011_ds62.gr(), "[Cax]3[Aly]2"]
* [kho, "[Mgx]3[Fethreey]2"]
This is implemented as an asymmetric solution.
"""
self.name = "g"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.py(), "[Mgx]3[Aly]2"],
[HP_2011_ds62.alm(), "[Fex]3[Aly]2"],
[HP_2011_ds62.spss(), "[Mnx]3[Aly]2"],
[HP_2011_ds62.gr(), "[Cax]3[Aly]2"],
[kho, "[Mgx]3[Fethreey]2"],
],
alphas=[1.0, 1.0, 1.0, 2.7, 1.0],
energy_interaction=[
[2500.0, 2000.0, 31000.0, 5400.0],
[2000.0, 5000.0, 22600.0],
[0.0, 29400.0],
[-15300.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class pl4tr(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a pl4tr solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.ab(), "[Naa][Altb1/4Sitb3/4]"]
* [HP_2011_ds62.an(), "[Caa][Altb1/2Sitb1/2]"]
* [HP_2011_ds62.san(), "[Ka][Altb1/4Sitb3/4]"]
This is implemented as an asymmetric solution.
"""
self.name = "pl4tr"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.ab(), "[Naa][Altb1/4Sitb3/4]"],
[HP_2011_ds62.an(), "[Caa][Altb1/2Sitb1/2]"],
[HP_2011_ds62.san(), "[Ka][Altb1/4Sitb3/4]"],
],
alphas=[0.674, 0.55, 1.0],
energy_interaction=[[14600.0, 24100.0], [48500.0]],
entropy_interaction=[[0.00935, 0.00957], [-0.0]],
volume_interaction=[
[-4.0000000000000003e-07, 3.3800000000000007e-06],
[-1.3e-06],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class k4tr(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a k4tr solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.ab(), "[Naa][Altb1/4Sitb3/4]"]
* [HP_2011_ds62.an(), "[Caa][Altb1/2Sitb1/2]"]
* [HP_2011_ds62.san(), "[Ka][Altb1/4Sitb3/4]"]
This is implemented as an asymmetric solution.
"""
self.name = "k4tr"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.ab(), "[Naa][Altb1/4Sitb3/4]"],
[HP_2011_ds62.an(), "[Caa][Altb1/2Sitb1/2]"],
[HP_2011_ds62.san(), "[Ka][Altb1/4Sitb3/4]"],
],
alphas=[0.674, 0.55, 1.0],
energy_interaction=[[14600.0, 24100.0], [48500.0]],
entropy_interaction=[[0.00935, 0.00957], [-0.0]],
volume_interaction=[
[-4.0000000000000003e-07, 3.3800000000000007e-06],
[-1.3e-06],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class plc(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a plc solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.abh(), "[Na]"]
* [anC, "[Ca]"]
* [HP_2011_ds62.san(), "[K]"]
This is implemented as an asymmetric solution.
"""
self.name = "plc"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.abh(), "[Na]"],
[anC, "[Ca]"],
[HP_2011_ds62.san(), "[K]"],
],
alphas=[0.643, 1.0, 1.0],
energy_interaction=[[3100.0, 25100.0], [40000.0]],
entropy_interaction=[[-0.0, 0.0108], [-0.0]],
volume_interaction=[[0.0, 3.3800000000000007e-06], [0.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ksp(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ksp solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.san(), "[K]"]
* [HP_2011_ds62.abh(), "[Na]"]
* [anC, "[Ca]"]
This is implemented as an asymmetric solution.
"""
self.name = "ksp"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.san(), "[K]"],
[HP_2011_ds62.abh(), "[Na]"],
[anC, "[Ca]"],
],
alphas=[1.0, 0.643, 1.0],
energy_interaction=[[25100.0, 40000.0], [3100.0]],
entropy_interaction=[[0.0108, -0.0], [-0.0]],
volume_interaction=[[3.3800000000000007e-06, 0.0], [0.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ep(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ep solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.cz(), "[Almone][Almthree]"]
* [HP_2011_ds62.ep(), "[Almone][Femthree]"]
* [HP_2011_ds62.fep(), "[Femone][Femthree]"]
This is implemented as a symmetric solution.
"""
self.name = "ep"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.cz(), "[Almone][Almthree]"],
[HP_2011_ds62.ep(), "[Almone][Femthree]"],
[HP_2011_ds62.fep(), "[Femone][Femthree]"],
],
energy_interaction=[[1000.0, 3000.0], [1000.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ma(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ma solution object.
Contains the following endmembers with associated site occupancies:
* [mut, "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [celt, "[Ka][Mgmtwoa][Almtwob][Sitone]2"]
* [fcelt, "[Ka][Femtwoa][Almtwob][Sitone]2"]
* [pat, "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [HP_2011_ds62.ma(), "[Caa][Almtwoa][Almtwob][Altone]2"]
* [fmu, "[Ka][Almtwoa][Fethreemtwob][Sitone1/2Altone1/2]2"]
This is implemented as an asymmetric solution.
"""
self.name = "ma"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[mut, "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[celt, "[Ka][Mgmtwoa][Almtwob][Sitone]2"],
[fcelt, "[Ka][Femtwoa][Almtwob][Sitone]2"],
[pat, "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[HP_2011_ds62.ma(), "[Caa][Almtwoa][Almtwob][Altone]2"],
[fmu, "[Ka][Almtwoa][Fethreemtwob][Sitone1/2Altone1/2]2"],
],
alphas=[0.63, 0.63, 0.63, 0.37, 0.63, 0.63],
energy_interaction=[
[0.0, 0.0, 10120.0, 34000.0, 0.0],
[0.0, 45000.0, 50000.0, 0.0],
[45000.0, 50000.0, 0.0],
[18000.0, 30000.0],
[35000.0],
],
entropy_interaction=[
[-0.0, -0.0, -0.0034, -0.0, -0.0],
[-0.0, -0.0, -0.0, -0.0],
[-0.0, -0.0, -0.0],
[-0.0, -0.0],
[-0.0],
],
volume_interaction=[
[2.0000000000000003e-06, 2.0000000000000003e-06, 3.53e-06, 0.0, 0.0],
[0.0, 2.5e-06, 0.0, 0.0],
[2.5e-06, 0.0, 0.0],
[0.0, 0.0],
[0.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class mu(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a mu solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.mu(), "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [HP_2011_ds62.cel(), "[Ka][Mgmtwoa][Almtwob][Sitone]2"]
* [HP_2011_ds62.fcel(), "[Ka][Femtwoa][Almtwob][Sitone]2"]
* [HP_2011_ds62.pa(), "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [mat, "[Caa][Almtwoa][Almtwob][Altone]2"]
* [fmu, "[Ka][Almtwoa][Fethreemtwob][Sitone1/2Altone1/2]2"]
This is implemented as an asymmetric solution.
"""
self.name = "mu"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.mu(), "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[HP_2011_ds62.cel(), "[Ka][Mgmtwoa][Almtwob][Sitone]2"],
[HP_2011_ds62.fcel(), "[Ka][Femtwoa][Almtwob][Sitone]2"],
[HP_2011_ds62.pa(), "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[mat, "[Caa][Almtwoa][Almtwob][Altone]2"],
[fmu, "[Ka][Almtwoa][Fethreemtwob][Sitone1/2Altone1/2]2"],
],
alphas=[0.63, 0.63, 0.63, 0.37, 0.63, 0.63],
energy_interaction=[
[0.0, 0.0, 10120.0, 35000.0, 0.0],
[0.0, 45000.0, 50000.0, 0.0],
[45000.0, 50000.0, 0.0],
[15000.0, 30000.0],
[35000.0],
],
entropy_interaction=[
[-0.0, -0.0, -0.0034, -0.0, -0.0],
[-0.0, -0.0, -0.0, -0.0],
[-0.0, -0.0, -0.0],
[-0.0, -0.0],
[-0.0],
],
volume_interaction=[
[2.0000000000000003e-06, 2.0000000000000003e-06, 3.53e-06, 0.0, 0.0],
[0.0, 2.5e-06, 0.0, 0.0],
[2.5e-06, 0.0, 0.0],
[0.0, 0.0],
[0.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class bi(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a bi solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.phl(), "[Mgmthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"]
* [annm, "[Femthree][Femonetwo]2[Sit1/2Alt1/2]2[Ohv]2"]
* [obi, "[Femthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"]
* [HP_2011_ds62.east(), "[Almthree][Mgmonetwo]2[Alt]2[Ohv]2"]
* [tbi, "[Timthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ov]2"]
* [fbi, "[Fethreemthree][Mgmonetwo]2[Alt]2[Ohv]2"]
* [mmbi, "[Mnmthree][Mnmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"]
This is implemented as a symmetric solution.
"""
self.name = "bi"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.phl(), "[Mgmthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"],
[annm, "[Femthree][Femonetwo]2[Sit1/2Alt1/2]2[Ohv]2"],
[obi, "[Femthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"],
[HP_2011_ds62.east(), "[Almthree][Mgmonetwo]2[Alt]2[Ohv]2"],
[tbi, "[Timthree][Mgmonetwo]2[Sit1/2Alt1/2]2[Ov]2"],
[fbi, "[Fethreemthree][Mgmonetwo]2[Alt]2[Ohv]2"],
[mmbi, "[Mnmthree][Mnmonetwo]2[Sit1/2Alt1/2]2[Ohv]2"],
],
energy_interaction=[
[12000.0, 4000.0, 10000.0, 30000.0, 8000.0, 9000.0],
[8000.0, 15000.0, 32000.0, 13600.0, 6300.0],
[7000.0, 24000.0, 5600.0, 8100.0],
[40000.0, 1000.0, 13000.0],
[40000.0, 30000.0],
[11600.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class opx(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a opx solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.en(), "[Mgmone][Mgmtwo][Sit]1/2"]
* [HP_2011_ds62.fs(), "[Femone][Femtwo][Sit]1/2"]
* [fm, "[Mgmone][Femtwo][Sit]1/2"]
* [HP_2011_ds62.mgts(), "[Almone][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [fopx, "[Fethreemone][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [mnopx, "[Mnmone][Mnmtwo][Sit]1/2"]
* [odi, "[Mgmone][Camtwo][Sit]1/2"]
This is implemented as an asymmetric solution.
"""
self.name = "opx"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.en(), "[Mgmone][Mgmtwo][Sit]1/2"],
[HP_2011_ds62.fs(), "[Femone][Femtwo][Sit]1/2"],
[fm, "[Mgmone][Femtwo][Sit]1/2"],
[HP_2011_ds62.mgts(), "[Almone][Mgmtwo][Sit1/2Alt1/2]1/2"],
[fopx, "[Fethreemone][Mgmtwo][Sit1/2Alt1/2]1/2"],
[mnopx, "[Mnmone][Mnmtwo][Sit]1/2"],
[odi, "[Mgmone][Camtwo][Sit]1/2"],
],
alphas=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.2],
energy_interaction=[
[7000.0, 4000.0, 13000.0, 11000.0, 5000.0, 32200.000000000004],
[4000.0, 13000.0, 11600.0, 4200.0, 25540.0],
[17000.0, 15000.0, 5100.0, 22540.0],
[1000.0, 12000.0, 75400.0],
[10600.0, 73400.0],
[24540.0],
],
volume_interaction=[
[0.0, 0.0, -1.5e-06, -1.5e-06, 0.0, 1.2000000000000002e-06],
[0.0, -1.5e-06, -1.5e-06, 0.0, 8.400000000000001e-07],
[-1.5e-06, -1.5e-06, 0.0, 8.400000000000001e-07],
[0.0, -1.5e-06, -9.4e-06],
[-1.5e-06, -9.4e-06],
[8.400000000000001e-07],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class sa(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a sa solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.spr4(), "[Mgmthree][Mgmfourfivesix]3[Sit]"]
* [HP_2011_ds62.spr5(), "[Almthree][Mgmfourfivesix]3[Alt]"]
* [fspm, "[Femthree][Femfourfivesix]3[Sit]"]
* [spro, "[Mgmthree][Femfourfivesix]3[Sit]"]
* [ospr, "[Fethreemthree][Mgmfourfivesix]3[Alt]"]
This is implemented as a symmetric solution.
"""
self.name = "sa"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.spr4(), "[Mgmthree][Mgmfourfivesix]3[Sit]"],
[HP_2011_ds62.spr5(), "[Almthree][Mgmfourfivesix]3[Alt]"],
[fspm, "[Femthree][Femfourfivesix]3[Sit]"],
[spro, "[Mgmthree][Femfourfivesix]3[Sit]"],
[ospr, "[Fethreemthree][Mgmfourfivesix]3[Alt]"],
],
energy_interaction=[
[10000.0, 16000.0, 12000.0, 8000.0],
[19000.0, 22000.0, 1000.0],
[4000.0, 17600.0],
[20000.0],
],
volume_interaction=[
[-2.0000000000000002e-07, 0.0, 0.0, -2.0000000000000002e-07],
[-2.0000000000000002e-07, -2.0000000000000002e-07, 0.0],
[0.0, -2.0000000000000002e-07],
[-2.0000000000000002e-07],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class cd(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a cd solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.crd(), "[Mgx]2[Vh]"]
* [HP_2011_ds62.fcrd(), "[Fex]2[Vh]"]
* [HP_2011_ds62.hcrd(), "[Mgx]2[Htwooh]"]
* [mncd, "[Mnx]2[Vh]"]
This is implemented as a symmetric solution.
"""
self.name = "cd"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.crd(), "[Mgx]2[Vh]"],
[HP_2011_ds62.fcrd(), "[Fex]2[Vh]"],
[HP_2011_ds62.hcrd(), "[Mgx]2[Htwooh]"],
[mncd, "[Mnx]2[Vh]"],
],
energy_interaction=[[8000.0, 0.0, 6000.0], [9000.0, 4000.0], [6000.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class st(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a st solution object.
Contains the following endmembers with associated site occupancies:
* [mstm, "[Mgx]4[Aly]2"]
* [HP_2011_ds62.fst(), "[Fex]4[Aly]2"]
* [mnstm, "[Mnx]4[Aly]2"]
* [msto, "[Mgx]4[Fethreey]2"]
* [mstt, "[Mgx]4[Tiy3/4Vy1/4]2"]
This is implemented as a symmetric solution.
"""
self.name = "st"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[mstm, "[Mgx]4[Aly]2"],
[HP_2011_ds62.fst(), "[Fex]4[Aly]2"],
[mnstm, "[Mnx]4[Aly]2"],
[msto, "[Mgx]4[Fethreey]2"],
[mstt, "[Mgx]4[Tiy3/4Vy1/4]2"],
],
energy_interaction=[
[16000.0, 12000.0, 2000.0, 20000.0],
[8000.0, 18000.0, 36000.0],
[14000.0, 32000.0],
[30000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class chl(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a chl solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.clin(), "[Mgmone][Mgmtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2"]
* [HP_2011_ds62.afchl(), "[Mgmone][Mgmtwothree]4[Mgmfour][Sittwo]2"]
* [HP_2011_ds62.ames(), "[Almone][Mgmtwothree]4[Almfour][Alttwo]2"]
* [HP_2011_ds62.daph(), "[Femone][Femtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2"]
* [ochl1, "[Mgmone][Femtwothree]4[Femfour][Sittwo]2"]
* [ochl4, "[Femone][Mgmtwothree]4[Mgmfour][Sittwo]2"]
* [f3clin, "[Mgmone][Mgmtwothree]4[Fethreemfour][Sittwo1/2Alttwo1/2]2"]
* [mmchl, "[Mnmone][Mnmtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2"]
This is implemented as a symmetric solution.
"""
self.name = "chl"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[
HP_2011_ds62.clin(),
"[Mgmone][Mgmtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2",
],
[HP_2011_ds62.afchl(), "[Mgmone][Mgmtwothree]4[Mgmfour][Sittwo]2"],
[HP_2011_ds62.ames(), "[Almone][Mgmtwothree]4[Almfour][Alttwo]2"],
[
HP_2011_ds62.daph(),
"[Femone][Femtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2",
],
[ochl1, "[Mgmone][Femtwothree]4[Femfour][Sittwo]2"],
[ochl4, "[Femone][Mgmtwothree]4[Mgmfour][Sittwo]2"],
[f3clin, "[Mgmone][Mgmtwothree]4[Fethreemfour][Sittwo1/2Alttwo1/2]2"],
[mmchl, "[Mnmone][Mnmtwothree]4[Almfour][Sittwo1/2Alttwo1/2]2"],
],
energy_interaction=[
[17000.0, 17000.0, 20000.0, 30000.0, 21000.0, 2000.0, 6000.0],
[16000.0, 37000.0, 20000.0, 4000.0, 15000.0, 23000.0],
[30000.0, 29000.0, 13000.0, 19000.0, 17000.0],
[18000.0, 33000.0, 22000.0, 4000.0],
[24000.0, 28600.0, 19000.0],
[19000.0, 22000.0],
[8000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ctd(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ctd solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.mctd(), "[Almonea]1/2[Mgmoneb]"]
* [HP_2011_ds62.fctd(), "[Almonea]1/2[Femoneb]"]
* [mnct, "[Almonea]1/2[Mnmoneb]"]
* [ctdo, "[Fethreemonea]1/2[Mgmoneb]"]
This is implemented as a symmetric solution.
"""
self.name = "ctd"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.mctd(), "[Almonea]1/2[Mgmoneb]"],
[HP_2011_ds62.fctd(), "[Almonea]1/2[Femoneb]"],
[mnct, "[Almonea]1/2[Mnmoneb]"],
[ctdo, "[Fethreemonea]1/2[Mgmoneb]"],
],
energy_interaction=[[4000.0, 3000.0, 1000.0], [3000.0, 5000.0], [4000.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class sp(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a sp solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.herc(), "[Al][Fetwo]"]
* [HP_2011_ds62.sp(), "[Al][Mg]"]
* [HP_2011_ds62.mt(), "[Fethree][Fetwo]"]
* [HP_2011_ds62.usp(), "[Ti][Fetwo]"]
This is implemented as a symmetric solution.
"""
self.name = "sp"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.herc(), "[Al][Fetwo]"],
[HP_2011_ds62.sp(), "[Al][Mg]"],
[HP_2011_ds62.mt(), "[Fethree][Fetwo]"],
[HP_2011_ds62.usp(), "[Ti][Fetwo]"],
],
energy_interaction=[[0.0, 18500.0, 27000.0], [40000.0, 30000.0], [0.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ilmm(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ilmm solution object.
Contains the following endmembers with associated site occupancies:
* [oilm, "[Fea][Tib]"]
* [dilm, "[Fea1/2Tia1/2][Feb1/2Tib1/2]"]
* [dhem, "[Fethreea][Fethreeb]"]
* [HP_2011_ds62.geik(), "[Mga][Tib]"]
* [HP_2011_ds62.pnt(), "[Mna][Tib]"]
This is implemented as a symmetric solution.
"""
self.name = "ilmm"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[oilm, "[Fea][Tib]"],
[dilm, "[Fea1/2Tia1/2][Feb1/2Tib1/2]"],
[dhem, "[Fethreea][Fethreeb]"],
[HP_2011_ds62.geik(), "[Mga][Tib]"],
[HP_2011_ds62.pnt(), "[Mna][Tib]"],
],
energy_interaction=[
[15600.0, 26600.0, 4000.0, 2000.0],
[11000.0, 4000.0, 2000.0],
[36000.0, 25000.0],
[4000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class ilm(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ilm solution object.
Contains the following endmembers with associated site occupancies:
* [oilm, "[Fetwoa][Tib]"]
* [dilm, "[Fetwoa1/2Tia1/2][Fetwob1/2Tib1/2]"]
* [dhem, "[Fethreea][Fethreeb]"]
This is implemented as a symmetric solution.
"""
self.name = "ilm"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[oilm, "[Fetwoa][Tib]"],
[dilm, "[Fetwoa1/2Tia1/2][Fetwob1/2Tib1/2]"],
[dhem, "[Fethreea][Fethreeb]"],
],
energy_interaction=[[15600.0, 26600.0], [11000.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class mt1(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a mt1 solution object.
Contains the following endmembers with associated site occupancies:
* [imt, "[Fethreem1/2Fem1/2]2[Fethreet]"]
* [dmt, "[Fethreem2/3Fem1/3]2[Fethreet2/3Fet1/3]"]
* [HP_2011_ds62.usp(), "[Tim1/2Fem1/2]2[Fet]"]
This is implemented as a symmetric solution.
"""
self.name = "mt1"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[imt, "[Fethreem1/2Fem1/2]2[Fethreet]"],
[dmt, "[Fethreem2/3Fem1/3]2[Fethreet2/3Fet1/3]"],
[HP_2011_ds62.usp(), "[Tim1/2Fem1/2]2[Fet]"],
],
energy_interaction=[[2400.0, 1000.0], [-5000.0]],
)
Solution.__init__(self, molar_fractions=molar_fractions)