# 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.
"""
ig50NCKFMASHTOCr
^^^^^^^^^^^^^^^^
HPx-eos solutions using endmembers from
dataset HGP_2018_ds633.
Contains the following solutions:
* pl4tr
* k4tr
* pli
* plc
* ol
* ksp
* mu
* bi
* g
* ep
* cd
* opx
* cpx
* spn
* hb
* ilm
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 HGP_2018_ds633
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
cats_nood = Mineral(
{
"name": "cats",
"formula": {"Al": 2.0, "Ca": 1.0, "O": 6.0, "Si": 1.0},
"equation_of_state": "hp_tmt",
"H_0": -3310050.0,
"S_0": 135.0,
"V_0": 6.356e-05,
"Cp": [347.6, -0.006974, -1781600.0, -2757.5],
"a_0": 2.08e-05,
"K_0": 119200000000.0,
"Kprime_0": 5.19,
"Kdprime_0": -4.4e-11,
"n": 10.0,
"molar_mass": 0.2181229,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 533.4002006018054,
}
)
hem_nood = Mineral(
{
"name": "hem",
"formula": {"Fe": 2.0, "O": 3.0},
"equation_of_state": "hp_tmt",
"H_0": -825420.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,
}
)
herc_nood = Mineral(
{
"name": "herc",
"formula": {"Al": 2.0, "Fe": 1.0, "O": 4.0},
"equation_of_state": "hp_tmt",
"H_0": -1949470.0,
"S_0": 113.9,
"V_0": 4.075e-05,
"Cp": [184.9, 0.01417, -3674800.0, -404.0],
"a_0": 2.06e-05,
"K_0": 192200000000.0,
"Kprime_0": 4.04,
"Kdprime_0": -2.1e-11,
"n": 7.0,
"molar_mass": 0.1738056,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 468.310479305573,
}
)
ilm_nood = Mineral(
{
"name": "ilm",
"formula": {"Fe": 1.0, "O": 3.0, "Ti": 1.0},
"equation_of_state": "hp_tmt",
"H_0": -1232320.0,
"S_0": 107.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": 380.67287043664993,
}
)
sp_nood = Mineral(
{
"name": "sp",
"formula": {"Al": 2.0, "Mg": 1.0, "O": 4.0},
"equation_of_state": "hp_tmt",
"H_0": -2300180.0,
"S_0": 80.63,
"V_0": 3.978e-05,
"Cp": [200.5, 0.006252, -2996400.0, -888.4],
"a_0": 1.93e-05,
"K_0": 192200000000.0,
"Kprime_0": 4.04,
"Kdprime_0": -2.1e-11,
"n": 7.0,
"molar_mass": 0.1422656,
"T_0": 298.15,
"F_0": 0.0,
"P_0": 100000.0,
"G_0": nan,
"Gprime_0": nan,
"T_einstein": 592.252008591202,
}
)
abhI = CombinedMineral(
[HGP_2018_ds633.abh()],
[1.0],
[np.float64(570.0), np.float64(4.12), np.float64(0.0)],
"abhI",
)
anC = CombinedMineral(
[HGP_2018_ds633.an()],
[1.0],
[np.float64(7030.0), np.float64(4.66), np.float64(0.0)],
"anC",
)
cfm = CombinedMineral(
[HGP_2018_ds633.fa(), HGP_2018_ds633.fo()],
[0.5, 0.5],
[np.float64(0.0), np.float64(-0.0), np.float64(0.0)],
"cfm",
)
anC = CombinedMineral(
[HGP_2018_ds633.an()],
[1.0],
[np.float64(7030.0), np.float64(4.66), np.float64(0.0)],
"anC",
)
mam = CombinedMineral(
[HGP_2018_ds633.ma()],
[1.0],
[np.float64(6500.0), np.float64(-0.0), np.float64(0.0)],
"mam",
)
fmu = CombinedMineral(
[HGP_2018_ds633.andr(), HGP_2018_ds633.gr(), HGP_2018_ds633.mu()],
[0.5, -0.5, 1.0],
[np.float64(25000.0), np.float64(-0.0), np.float64(0.0)],
"fmu",
)
annm = CombinedMineral(
[HGP_2018_ds633.ann()],
[1.0],
[np.float64(-6000.0), np.float64(-0.0), np.float64(0.0)],
"annm",
)
obi = CombinedMineral(
[HGP_2018_ds633.ann(), HGP_2018_ds633.phl()],
[0.3333333333333333, 0.6666666666666666],
[np.float64(-6000.0), np.float64(-0.0), np.float64(0.0)],
"obi",
)
tbi = CombinedMineral(
[HGP_2018_ds633.br(), HGP_2018_ds633.phl(), HGP_2018_ds633.ru()],
[-1.0, 1.0, 1.0],
[np.float64(55000.0), np.float64(-0.0), np.float64(0.0)],
"tbi",
)
fbi = CombinedMineral(
[HGP_2018_ds633.andr(), HGP_2018_ds633.east(), HGP_2018_ds633.gr()],
[0.5, 1.0, -0.5],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"fbi",
)
knom = CombinedMineral(
[HGP_2018_ds633.knor()],
[1.0],
[np.float64(18200.0), np.float64(-0.0), np.float64(0.0)],
"knom",
)
tig = CombinedMineral(
[
HGP_2018_ds633.py(),
HGP_2018_ds633.per(),
HGP_2018_ds633.ru(),
HGP_2018_ds633.cor(),
],
[1.0, 0.5, 0.5, -0.5],
[np.float64(46700.0), np.float64(17.3), np.float64(0.0)],
"tig",
)
fm = CombinedMineral(
[HGP_2018_ds633.en(), HGP_2018_ds633.fs()],
[0.5, 0.5],
[np.float64(-6600.0), np.float64(-0.0), np.float64(0.0)],
"fm",
)
odi = CombinedMineral(
[HGP_2018_ds633.di()],
[1.0],
[np.float64(2800.0), np.float64(-0.0), np.float64(5.0000000000000004e-08)],
"odi",
)
cren = CombinedMineral(
[HGP_2018_ds633.mgts(), HGP_2018_ds633.kos(), HGP_2018_ds633.jd()],
[1.0, 1.0, -1.0],
[np.float64(-25900.0), np.float64(-15.5), np.float64(5.000000000000001e-07)],
"cren",
)
obuf = CombinedMineral(
[
HGP_2018_ds633.mgts(),
HGP_2018_ds633.per(),
HGP_2018_ds633.ru(),
HGP_2018_ds633.cor(),
],
[1.0, 0.5, 0.5, -0.5],
[np.float64(-5000.0), np.float64(5.1000000000000005), np.float64(-6.1e-08)],
"obuf",
)
mess = CombinedMineral(
[HGP_2018_ds633.mgts(), HGP_2018_ds633.acm(), HGP_2018_ds633.jd()],
[1.0, 1.0, -1.0],
[np.float64(4800.0), np.float64(-0.0), np.float64(-8.900000000000001e-07)],
"mess",
)
ojd = CombinedMineral(
[HGP_2018_ds633.jd()],
[1.0],
[np.float64(18800.0), np.float64(-0.0), np.float64(0.0)],
"ojd",
)
cfs = CombinedMineral(
[HGP_2018_ds633.fs()],
[1.0],
[np.float64(2100.0), np.float64(2.0), np.float64(4.5000000000000003e-07)],
"cfs",
)
crdi = CombinedMineral(
[cats_nood, HGP_2018_ds633.kos(), HGP_2018_ds633.jd()],
[1.0, 1.0, -1.0],
[np.float64(-1100.0), np.float64(2.8815731608219894), np.float64(1e-07)],
"crdi",
)
cess = CombinedMineral(
[cats_nood, HGP_2018_ds633.acm(), HGP_2018_ds633.jd()],
[1.0, 1.0, -1.0],
[np.float64(350.0), np.float64(2.8815731608219894), np.float64(1e-07)],
"cess",
)
cbuf = CombinedMineral(
[cats_nood, HGP_2018_ds633.per(), HGP_2018_ds633.ru(), HGP_2018_ds633.cor()],
[1.0, 0.5, 0.5, -0.5],
[
np.float64(-12400.0),
np.float64(4.081573160821989),
np.float64(4.999999999999999e-08),
],
"cbuf",
)
cen = CombinedMineral(
[HGP_2018_ds633.en()],
[1.0],
[np.float64(3500.0), np.float64(2.0), np.float64(4.800000000000001e-07)],
"cen",
)
cfm = CombinedMineral(
[HGP_2018_ds633.en(), HGP_2018_ds633.fs()],
[0.5, 0.5],
[np.float64(-1600.0), np.float64(2.0), np.float64(4.6500000000000005e-07)],
"cfm",
)
kjd = CombinedMineral(
[HGP_2018_ds633.jd(), HGP_2018_ds633.abh(), HGP_2018_ds633.san()],
[1.0, -1.0, 1.0],
[np.float64(11700.0), np.float64(-0.0), np.float64(6e-06)],
"kjd",
)
nsp = CombinedMineral(
[sp_nood], [1.0], [np.float64(0.0), np.float64(0.0), np.float64(0.0)], "nsp"
)
isp = CombinedMineral(
[sp_nood], [1.0], [np.float64(23600.0), np.float64(5.76303), np.float64(0.0)], "isp"
)
nhc = CombinedMineral(
[herc_nood], [1.0], [np.float64(0.0), np.float64(0.0), np.float64(0.0)], "nhc"
)
ihc = CombinedMineral(
[herc_nood],
[1.0],
[np.float64(23600.0), np.float64(5.76303), np.float64(0.0)],
"ihc",
)
nmt = CombinedMineral(
[HGP_2018_ds633.mt()],
[1.0],
[np.float64(0.0), np.float64(-5.76303), np.float64(0.0)],
"nmt",
)
imt = CombinedMineral(
[HGP_2018_ds633.mt()],
[1.0],
[np.float64(300.0), np.float64(-0.0), np.float64(0.0)],
"imt",
)
pcr = CombinedMineral(
[HGP_2018_ds633.picr()],
[1.0],
[np.float64(0.0), np.float64(-0.0), np.float64(0.0)],
"pcr",
)
qndm = CombinedMineral(
[HGP_2018_ds633.qnd()],
[1.0],
[np.float64(-30000.0), np.float64(-0.0), np.float64(0.0)],
"qndm",
)
tsm = CombinedMineral(
[HGP_2018_ds633.ts()],
[1.0],
[np.float64(10000.0), np.float64(-0.0), np.float64(0.0)],
"tsm",
)
prgm = CombinedMineral(
[HGP_2018_ds633.parg()],
[1.0],
[np.float64(-10000.0), np.float64(-0.0), np.float64(0.0)],
"prgm",
)
glm = CombinedMineral(
[HGP_2018_ds633.gl()],
[1.0],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"glm",
)
grnm = CombinedMineral(
[HGP_2018_ds633.grun()],
[1.0],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"grnm",
)
a = CombinedMineral(
[HGP_2018_ds633.cumm(), HGP_2018_ds633.grun()],
[0.42857142857142855, 0.5714285714285714],
[np.float64(-11200.0), np.float64(-0.0), np.float64(0.0)],
"a",
)
b = CombinedMineral(
[HGP_2018_ds633.cumm(), HGP_2018_ds633.grun()],
[0.2857142857142857, 0.7142857142857143],
[np.float64(-13800.0), np.float64(-0.0), np.float64(0.0)],
"b",
)
mrb = CombinedMineral(
[HGP_2018_ds633.gl(), HGP_2018_ds633.gr(), HGP_2018_ds633.andr()],
[1.0, -1.0, 1.0],
[np.float64(0.0), np.float64(-0.0), np.float64(0.0)],
"mrb",
)
kprg = CombinedMineral(
[HGP_2018_ds633.mu(), HGP_2018_ds633.pa(), HGP_2018_ds633.parg()],
[1.0, -1.0, 1.0],
[np.float64(-7060.0), np.float64(-20.0), np.float64(0.0)],
"kprg",
)
tts = CombinedMineral(
[HGP_2018_ds633.dsp(), HGP_2018_ds633.ru(), HGP_2018_ds633.ts()],
[-2.0, 2.0, 1.0],
[np.float64(95000.0), np.float64(-0.0), np.float64(0.0)],
"tts",
)
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",
)
[docs]
class pl4tr(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a pl4tr solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.ab(), "[Naa][Altb1/4Sitb3/4]"]
* [HGP_2018_ds633.an(), "[Caa][Altb1/2Sitb1/2]"]
* [HGP_2018_ds633.san(), "[Ka][Altb1/4Sitb3/4]"]
This is implemented as an asymmetric solution.
"""
self.name = "pl4tr"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.ab(), "[Naa][Altb1/4Sitb3/4]"],
[HGP_2018_ds633.an(), "[Caa][Altb1/2Sitb1/2]"],
[HGP_2018_ds633.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:
* [HGP_2018_ds633.ab(), "[Naa][Altb1/4Sitb3/4]"]
* [HGP_2018_ds633.an(), "[Caa][Altb1/2Sitb1/2]"]
* [HGP_2018_ds633.san(), "[Ka][Altb1/4Sitb3/4]"]
This is implemented as an asymmetric solution.
"""
self.name = "k4tr"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.ab(), "[Naa][Altb1/4Sitb3/4]"],
[HGP_2018_ds633.an(), "[Caa][Altb1/2Sitb1/2]"],
[HGP_2018_ds633.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 pli(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a pli solution object.
Contains the following endmembers with associated site occupancies:
* [abhI, "[Na]"]
* [HGP_2018_ds633.an(), "[Ca]"]
* [HGP_2018_ds633.san(), "[K]"]
This is implemented as an asymmetric solution.
"""
self.name = "pli"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[abhI, "[Na]"],
[HGP_2018_ds633.an(), "[Ca]"],
[HGP_2018_ds633.san(), "[K]"],
],
alphas=[0.643, 1.0, 1.0],
energy_interaction=[[15000.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 plc(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a plc solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.abh(), "[Na]"]
* [anC, "[Ca]"]
* [HGP_2018_ds633.san(), "[K]"]
This is implemented as an asymmetric solution.
"""
self.name = "plc"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.abh(), "[Na]"],
[anC, "[Ca]"],
[HGP_2018_ds633.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 ol(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a ol solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.mont(), "[Mgmone][Camtwo]"]
* [HGP_2018_ds633.fa(), "[Femone][Femtwo]"]
* [HGP_2018_ds633.fo(), "[Mgmone][Mgmtwo]"]
* [cfm, "[Mgmone][Femtwo]"]
This is implemented as a symmetric solution.
"""
self.name = "ol"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.mont(), "[Mgmone][Camtwo]"],
[HGP_2018_ds633.fa(), "[Femone][Femtwo]"],
[HGP_2018_ds633.fo(), "[Mgmone][Mgmtwo]"],
[cfm, "[Mgmone][Femtwo]"],
],
energy_interaction=[
[24000.0, 38000.0, 24000.0],
[9000.0, 4500.0],
[4500.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:
* [HGP_2018_ds633.san(), "[K]"]
* [HGP_2018_ds633.abh(), "[Na]"]
* [anC, "[Ca]"]
This is implemented as an asymmetric solution.
"""
self.name = "ksp"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.san(), "[K]"],
[HGP_2018_ds633.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 mu(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a mu solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.mu(), "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [HGP_2018_ds633.cel(), "[Ka][Mgmtwoa][Almtwob][Sitone]2"]
* [HGP_2018_ds633.fcel(), "[Ka][Femtwoa][Almtwob][Sitone]2"]
* [HGP_2018_ds633.pa(), "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"]
* [mam, "[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=[
[HGP_2018_ds633.mu(), "[Ka][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[HGP_2018_ds633.cel(), "[Ka][Mgmtwoa][Almtwob][Sitone]2"],
[HGP_2018_ds633.fcel(), "[Ka][Femtwoa][Almtwob][Sitone]2"],
[HGP_2018_ds633.pa(), "[Naa][Almtwoa][Almtwob][Sitone1/2Altone1/2]2"],
[mam, "[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:
* [HGP_2018_ds633.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"]
* [HGP_2018_ds633.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"]
This is implemented as a symmetric solution.
"""
self.name = "bi"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.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"],
[HGP_2018_ds633.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"],
],
energy_interaction=[
[12000.0, 4000.0, 10000.0, 30000.0, 8000.0],
[8000.0, 5000.0, 32000.0, 13600.0],
[7000.0, 24000.0, 5600.0],
[40000.0, 1000.0],
[40000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class g(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a g solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.py(), "[Mgmone]3[Almtwo]2"]
* [HGP_2018_ds633.alm(), "[Femone]3[Almtwo]2"]
* [HGP_2018_ds633.gr(), "[Camone]3[Almtwo]2"]
* [HGP_2018_ds633.andr(), "[Camone]3[Fethreemtwo]2"]
* [knom, "[Mgmone]3[Crmtwo]2"]
* [tig, "[Mgmone]3[Almtwo1/2Mgmtwo1/4Timtwo1/4]2"]
This is implemented as an asymmetric solution.
"""
self.name = "g"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.py(), "[Mgmone]3[Almtwo]2"],
[HGP_2018_ds633.alm(), "[Femone]3[Almtwo]2"],
[HGP_2018_ds633.gr(), "[Camone]3[Almtwo]2"],
[HGP_2018_ds633.andr(), "[Camone]3[Fethreemtwo]2"],
[knom, "[Mgmone]3[Crmtwo]2"],
[tig, "[Mgmone]3[Almtwo1/2Mgmtwo1/4Timtwo1/4]2"],
],
alphas=[1.0, 1.0, 2.5, 2.5, 1.0, 1.0],
energy_interaction=[
[4000.0, 45400.0, 107000.0, 2000.0, 0.0],
[17000.0, 65000.0, 6000.0, 0.0],
[2000.0, 1000.0, 0.0],
[63000.0, 0.0],
[0.0],
],
entropy_interaction=[
[-0.0, 0.01, 0.01, -0.0, -0.0],
[0.01, 0.01, -0.0, -0.0],
[-0.0, 0.01, -0.0],
[0.01, -0.0],
[-0.0],
],
volume_interaction=[
[1.0000000000000002e-06, 4.0000000000000003e-07, -3.6e-07, 0.0, 0.0],
[1.0000000000000002e-06, 3.9e-07, 1.0000000000000001e-07, 0.0],
[0.0, 1.8000000000000001e-06, 0.0],
[1.0000000000000002e-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:
* [HGP_2018_ds633.cz(), "[Almone][Almthree]"]
* [HGP_2018_ds633.ep(), "[Almone][Femthree]"]
* [HGP_2018_ds633.fep(), "[Femone][Femthree]"]
This is implemented as a symmetric solution.
"""
self.name = "ep"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.cz(), "[Almone][Almthree]"],
[HGP_2018_ds633.ep(), "[Almone][Femthree]"],
[HGP_2018_ds633.fep(), "[Femone][Femthree]"],
],
energy_interaction=[[1000.0, 3000.0], [1000.0]],
)
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:
* [HGP_2018_ds633.crd(), "[Mgx]2[Vh]"]
* [HGP_2018_ds633.fcrd(), "[Fex]2[Vh]"]
* [HGP_2018_ds633.hcrd(), "[Mgx]2[Htwooh]"]
This is implemented as a symmetric solution.
"""
self.name = "cd"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.crd(), "[Mgx]2[Vh]"],
[HGP_2018_ds633.fcrd(), "[Fex]2[Vh]"],
[HGP_2018_ds633.hcrd(), "[Mgx]2[Htwooh]"],
],
energy_interaction=[[6000.0, 0.0], [0.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:
* [HGP_2018_ds633.en(), "[Mgmone][Mgmtwo][Sit]1/2"]
* [HGP_2018_ds633.fs(), "[Femone][Femtwo][Sit]1/2"]
* [fm, "[Mgmone][Femtwo][Sit]1/2"]
* [odi, "[Mgmone][Camtwo][Sit]1/2"]
* [HGP_2018_ds633.mgts(), "[Almone][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [cren, "[Crmone][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [obuf, "[Mgmone1/2Timone1/2][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [mess, "[Fethreemone][Mgmtwo][Sit1/2Alt1/2]1/2"]
* [ojd, "[Almone][Namtwo][Sit]1/2"]
This is implemented as an asymmetric solution.
"""
self.name = "opx"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.en(), "[Mgmone][Mgmtwo][Sit]1/2"],
[HGP_2018_ds633.fs(), "[Femone][Femtwo][Sit]1/2"],
[fm, "[Mgmone][Femtwo][Sit]1/2"],
[odi, "[Mgmone][Camtwo][Sit]1/2"],
[HGP_2018_ds633.mgts(), "[Almone][Mgmtwo][Sit1/2Alt1/2]1/2"],
[cren, "[Crmone][Mgmtwo][Sit1/2Alt1/2]1/2"],
[obuf, "[Mgmone1/2Timone1/2][Mgmtwo][Sit1/2Alt1/2]1/2"],
[mess, "[Fethreemone][Mgmtwo][Sit1/2Alt1/2]1/2"],
[ojd, "[Almone][Namtwo][Sit]1/2"],
],
alphas=[1.0, 1.0, 1.0, 1.2, 1.0, 1.0, 1.0, 1.0, 1.2],
energy_interaction=[
[7000.0, 4000.0, 29400.0, 12500.0, 8000.0, 6000.0, 8000.0, 35000.0],
[4000.0, 21500.0, 11000.0, 10000.0, 7000.0, 10000.0, 35000.0],
[18000.0, 15000.0, 12000.0, 8000.0, 12000.0, 35000.0],
[75500.0, 20000.0, 40000.0, 20000.0, 35000.0],
[2000.0, 10000.0, 2000.0, 7000.0],
[6000.0, 2000.0, -11000.0],
[6000.0, 20000.0],
[-11000.0],
],
volume_interaction=[
[0.0, 0.0, 0.0, -4.0000000000000003e-07, 0.0, 0.0, 0.0, 0.0],
[0.0, 8.000000000000001e-07, -1.5e-06, 0.0, 0.0, 0.0, 0.0],
[8.000000000000001e-07, -1.5e-06, 0.0, 0.0, 0.0, 0.0],
[-8.400000000000001e-06, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
[0.0, 0.0],
[0.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class cpx(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a cpx solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.di(), "[Mgmone][Camtwo][Sit]1/2"]
* [cfs, "[Femone][Femtwo][Sit]1/2"]
* [HGP_2018_ds633.cats(), "[Almone][Camtwo][Sit1/2Alt1/2]1/2"]
* [crdi, "[Crmone][Camtwo][Sit1/2Alt1/2]1/2"]
* [cess, "[Fethreemone][Camtwo][Sit1/2Alt1/2]1/2"]
* [cbuf, "[Mgmone1/2Timone1/2][Camtwo][Sit1/2Alt1/2]1/2"]
* [HGP_2018_ds633.jd(), "[Almone][Namtwo][Sit]1/2"]
* [cen, "[Mgmone][Mgmtwo][Sit]1/2"]
* [cfm, "[Mgmone][Femtwo][Sit]1/2"]
* [kjd, "[Almone][Kmtwo][Sit]1/2"]
This is implemented as an asymmetric solution.
"""
self.name = "cpx"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HGP_2018_ds633.di(), "[Mgmone][Camtwo][Sit]1/2"],
[cfs, "[Femone][Femtwo][Sit]1/2"],
[HGP_2018_ds633.cats(), "[Almone][Camtwo][Sit1/2Alt1/2]1/2"],
[crdi, "[Crmone][Camtwo][Sit1/2Alt1/2]1/2"],
[cess, "[Fethreemone][Camtwo][Sit1/2Alt1/2]1/2"],
[cbuf, "[Mgmone1/2Timone1/2][Camtwo][Sit1/2Alt1/2]1/2"],
[HGP_2018_ds633.jd(), "[Almone][Namtwo][Sit]1/2"],
[cen, "[Mgmone][Mgmtwo][Sit]1/2"],
[cfm, "[Mgmone][Femtwo][Sit]1/2"],
[kjd, "[Almone][Kmtwo][Sit]1/2"],
],
alphas=[1.2, 1.0, 1.9, 1.9, 1.9, 1.9, 1.2, 1.0, 1.0, 1.2],
energy_interaction=[
[
25800.0,
13000.0,
8000.0,
8000.0,
8000.0,
26000.0,
29800.0,
20600.0,
26000.0,
],
[25000.0, 38300.0, 43300.0, 24000.0, 24000.0, 2300.0, 3500.0, 24000.0],
[2000.0, 2000.0, 6000.0, 6000.0, 45200.0, 27000.0, 6000.0],
[2000.0, 6000.0, 3000.0, 52300.0, 40300.0, 3000.0],
[6000.0, 3000.0, 57300.0, 45300.0, 3000.0],
[16000.0, 24000.0, 22000.0, 16000.0],
[40000.0, 40000.0, 28000.0],
[4000.0, 40000.0],
[40000.0],
],
volume_interaction=[
[0.0, -6.000000000000001e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[-1.0000000000000002e-06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, -3.5e-06, -1.0000000000000002e-06, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
[0.0, 0.0],
[0.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class spn(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a spn solution object.
Contains the following endmembers with associated site occupancies:
* [nsp, "[Mgt][Alm]"]
* [isp, "[Alt][Mgm1/2Alm1/2]"]
* [nhc, "[Fet][Alm]"]
* [ihc, "[Alt][Fem1/2Alm1/2]"]
* [nmt, "[Fet][Fethreem]"]
* [imt, "[Fethreet][Fem1/2Fethreem1/2]"]
* [pcr, "[Mgt][Crm]"]
* [qndm, "[Mgt][Mgm1/2Tim1/2]"]
This is implemented as a symmetric solution.
"""
self.name = "spn"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[nsp, "[Mgt][Alm]"],
[isp, "[Alt][Mgm1/2Alm1/2]"],
[nhc, "[Fet][Alm]"],
[ihc, "[Alt][Fem1/2Alm1/2]"],
[nmt, "[Fet][Fethreem]"],
[imt, "[Fethreet][Fem1/2Fethreem1/2]"],
[pcr, "[Mgt][Crm]"],
[qndm, "[Mgt][Mgm1/2Tim1/2]"],
],
energy_interaction=[
[-8200.0, 3500.0, -13000.0, 43200.0, 49100.0, -5000.0, 22500.0],
[4400.0, -6000.0, 36800.0, 20000.0, 14000.0, 21500.0],
[-8200.0, 18100.0, 49000.0, -19000.0, 35100.0],
[-4000.0, 7600.0, -11000.0, 9000.0],
[18100.0, 11900.0, 62200.0],
[-6400.0, 24300.0],
[60000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class hb(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a hb solution object.
Contains the following endmembers with associated site occupancies:
* [HGP_2018_ds633.tr(), "[Va][Mgmonethree]3[Mgmtwo]2[Camfour]2[Sitone][Ohv]2"]
* [tsm, "[Va][Mgmonethree]3[Almtwo]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2"]
* [prgm, "[Naa][Mgmonethree]3[Mgmtwo1/2Almtwo1/2]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2"]
* [glm, "[Va][Mgmonethree]3[Almtwo]2[Namfour]2[Sitone][Ohv]2"]
* [HGP_2018_ds633.cumm(), "[Va][Mgmonethree]3[Mgmtwo]2[Mgmfour]2[Sitone][Ohv]2"]
* [grnm, "[Va][Femonethree]3[Femtwo]2[Femfour]2[Sitone][Ohv]2"]
* [a, "[Va][Mgmonethree]3[Femtwo]2[Femfour]2[Sitone][Ohv]2"]
* [b, "[Va][Femonethree]3[Mgmtwo]2[Femfour]2[Sitone][Ohv]2"]
* [mrb, "[Va][Mgmonethree]3[Fethreemtwo]2[Namfour]2[Sitone][Ohv]2"]
* [kprg, "[Ka][Mgmonethree]3[Mgmtwo1/2Almtwo1/2]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2"]
* [tts, "[Va][Mgmonethree]3[Timtwo]2[Camfour]2[Sitone1/2Altone1/2][Ov]2"]
This is implemented as an asymmetric solution.
"""
self.name = "hb"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[
HGP_2018_ds633.tr(),
"[Va][Mgmonethree]3[Mgmtwo]2[Camfour]2[Sitone][Ohv]2",
],
[
tsm,
"[Va][Mgmonethree]3[Almtwo]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2",
],
[
prgm,
"[Naa][Mgmonethree]3[Mgmtwo1/2Almtwo1/2]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2",
],
[glm, "[Va][Mgmonethree]3[Almtwo]2[Namfour]2[Sitone][Ohv]2"],
[
HGP_2018_ds633.cumm(),
"[Va][Mgmonethree]3[Mgmtwo]2[Mgmfour]2[Sitone][Ohv]2",
],
[grnm, "[Va][Femonethree]3[Femtwo]2[Femfour]2[Sitone][Ohv]2"],
[a, "[Va][Mgmonethree]3[Femtwo]2[Femfour]2[Sitone][Ohv]2"],
[b, "[Va][Femonethree]3[Mgmtwo]2[Femfour]2[Sitone][Ohv]2"],
[mrb, "[Va][Mgmonethree]3[Fethreemtwo]2[Namfour]2[Sitone][Ohv]2"],
[
kprg,
"[Ka][Mgmonethree]3[Mgmtwo1/2Almtwo1/2]2[Camfour]2[Sitone1/2Altone1/2][Ohv]2",
],
[tts, "[Va][Mgmonethree]3[Timtwo]2[Camfour]2[Sitone1/2Altone1/2][Ov]2"],
],
alphas=[1.0, 1.5, 1.7, 0.8, 1.0, 1.0, 1.0, 1.0, 0.8, 1.7, 1.5],
energy_interaction=[
[
20000.0,
25000.0,
65000.0,
45000.0,
75000.0,
57000.0,
63000.0,
52000.0,
30000.0,
85000.0,
],
[
-40000.0,
25000.0,
70000.0,
80000.0,
70000.0,
72500.0,
20000.0,
-40000.0,
35000.0,
],
[
50000.0,
90000.0,
106700.0,
94800.0,
94800.0,
40000.0,
8000.0,
15000.0,
],
[100000.0, 113500.0, 100000.0, 111200.0, 0.0, 54000.0, 75000.0],
[33000.0, 18000.0, 23000.0, 80000.0, 87000.0, 100000.0],
[12000.0, 8000.0, 91000.0, 96000.0, 65000.0],
[20000.0, 80000.0, 94000.0, 95000.0],
[90000.0, 94000.0, 95000.0],
[50000.0, 50000.0],
[35000.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)