# 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.
"""
mb50NCKFMASHTO
^^^^^^^^^^^^^^
HPx-eos solutions using endmembers from
dataset HP_2011_ds62.
Contains the following solutions:
* hb
* aug
* dio
* opx
* g
* ol
* pl4tr
* abc
* k4tr
* ksp
* plc
* pli
* sp
* ilm
* ilmm
* ep
* bi
* mu
* chl
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
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": -3310110.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": -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,
}
)
tsm = CombinedMineral(
[HP_2011_ds62.ts()],
[1.0],
[np.float64(10000.0), np.float64(-0.0), np.float64(0.0)],
"tsm",
)
prgm = CombinedMineral(
[HP_2011_ds62.parg()],
[1.0],
[np.float64(-10000.0), np.float64(-0.0), np.float64(0.0)],
"prgm",
)
glm = CombinedMineral(
[HP_2011_ds62.gl()],
[1.0],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"glm",
)
grnm = CombinedMineral(
[HP_2011_ds62.grun()],
[1.0],
[np.float64(-3000.0), np.float64(-0.0), np.float64(0.0)],
"grnm",
)
a = CombinedMineral(
[HP_2011_ds62.cumm(), HP_2011_ds62.grun()],
[0.42857142857142855, 0.5714285714285714],
[np.float64(-11200.0), np.float64(-0.0), np.float64(0.0)],
"a",
)
b = CombinedMineral(
[HP_2011_ds62.cumm(), HP_2011_ds62.grun()],
[0.2857142857142857, 0.7142857142857143],
[np.float64(-13800.0), np.float64(-0.0), np.float64(0.0)],
"b",
)
mrb = CombinedMineral(
[HP_2011_ds62.gl(), HP_2011_ds62.gr(), HP_2011_ds62.andr()],
[1.0, -1.0, 1.0],
[np.float64(0.0), np.float64(-0.0), np.float64(0.0)],
"mrb",
)
kprg = CombinedMineral(
[HP_2011_ds62.mu(), HP_2011_ds62.pa(), HP_2011_ds62.parg()],
[1.0, -1.0, 1.0],
[np.float64(-7060.0), np.float64(-20.0), np.float64(0.0)],
"kprg",
)
tts = CombinedMineral(
[HP_2011_ds62.dsp(), HP_2011_ds62.ru(), HP_2011_ds62.ts()],
[-2.0, 2.0, 1.0],
[np.float64(95000.0), np.float64(-0.0), np.float64(0.0)],
"tts",
)
cenh = CombinedMineral(
[HP_2011_ds62.en()],
[1.0],
[np.float64(3500.0), np.float64(2.0), np.float64(4.800000000000001e-07)],
"cenh",
)
cfs = CombinedMineral(
[HP_2011_ds62.fs()],
[1.0],
[np.float64(2100.0), np.float64(2.0), np.float64(4.5000000000000003e-07)],
"cfs",
)
jdm = CombinedMineral(
[HP_2011_ds62.jd()],
[1.0],
[np.float64(2000.0), np.float64(-0.0), np.float64(0.0)],
"jdm",
)
acmm = CombinedMineral(
[HP_2011_ds62.acm()],
[1.0],
[np.float64(-5000.0), np.float64(-0.0), np.float64(0.0)],
"acmm",
)
ocats = CombinedMineral(
[cats_nood], [1.0], [np.float64(0.0), np.float64(0.0), np.float64(0.0)], "ocats"
)
dcats = CombinedMineral(
[cats_nood],
[1.0],
[
np.float64(3800.0),
np.float64(2.8815999999999997),
np.float64(1.0000000000000001e-07),
],
"dcats",
)
fmc = CombinedMineral(
[HP_2011_ds62.fs(), HP_2011_ds62.en()],
[0.5, 0.5],
[np.float64(-1600.0), np.float64(2.0), np.float64(4.6500000000000005e-07)],
"fmc",
)
acmm = CombinedMineral(
[HP_2011_ds62.acm()],
[1.0],
[np.float64(-7000.0), np.float64(-0.0), np.float64(0.0)],
"acmm",
)
om = CombinedMineral(
[HP_2011_ds62.jd(), HP_2011_ds62.di()],
[0.5, 0.5],
[np.float64(-2900.0), np.float64(-0.0), np.float64(0.0)],
"om",
)
cfm = CombinedMineral(
[HP_2011_ds62.di(), HP_2011_ds62.hed()],
[0.5, 0.5],
[np.float64(-1500.0), np.float64(-0.0), np.float64(0.0)],
"cfm",
)
jac = CombinedMineral(
[HP_2011_ds62.jd(), HP_2011_ds62.acm()],
[0.5, 0.5],
[np.float64(-4500.0), np.float64(-0.0), np.float64(0.0)],
"jac",
)
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",
)
odi = CombinedMineral(
[HP_2011_ds62.di()],
[1.0],
[np.float64(-100.0), np.float64(-0.211), np.float64(5.0000000000000004e-08)],
"odi",
)
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",
)
abm = CombinedMineral(
[HP_2011_ds62.ab()],
[1.0],
[np.float64(-1746.0), np.float64(-2.0), np.float64(0.0)],
"abm",
)
anm = CombinedMineral(
[HP_2011_ds62.an()],
[1.0],
[np.float64(10000.0), np.float64(-0.0), np.float64(0.0)],
"anm",
)
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",
)
abhI = CombinedMineral(
[HP_2011_ds62.abh()],
[1.0],
[np.float64(570.0), np.float64(4.12), np.float64(0.0)],
"abhI",
)
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",
)
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",
)
mam = CombinedMineral(
[HP_2011_ds62.ma()],
[1.0],
[np.float64(5000.0), np.float64(-0.0), np.float64(0.0)],
"mam",
)
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",
)
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",
)
[docs]
class hb(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a hb solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.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"]
* [HP_2011_ds62.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=[
[
HP_2011_ds62.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"],
[
HP_2011_ds62.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 aug(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a aug solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.di(), "[Mgmone][Camtwo][Sitone]1/4[Sittwo]1/4"]
* [cenh, "[Mgmone][Mgmtwo][Sitone]1/4[Sittwo]1/4"]
* [cfs, "[Femone][Femtwo][Sitone]1/4[Sittwo]1/4"]
* [jdm, "[Almone][Namtwo][Sitone]1/4[Sittwo]1/4"]
* [acmm, "[Fethreemone][Namtwo][Sitone]1/4[Sittwo]1/4"]
* [ocats, "[Almone][Camtwo][Sitone]1/4[Alttwo]1/4"]
* [dcats, "[Almone][Camtwo][Sitone1/2Altone1/2]1/4[Sittwo1/2Alttwo1/2]1/4"]
* [fmc, "[Mgmone][Femtwo][Sitone]1/4[Sittwo]1/4"]
This is implemented as an asymmetric solution.
"""
self.name = "aug"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.di(), "[Mgmone][Camtwo][Sitone]1/4[Sittwo]1/4"],
[cenh, "[Mgmone][Mgmtwo][Sitone]1/4[Sittwo]1/4"],
[cfs, "[Femone][Femtwo][Sitone]1/4[Sittwo]1/4"],
[jdm, "[Almone][Namtwo][Sitone]1/4[Sittwo]1/4"],
[acmm, "[Fethreemone][Namtwo][Sitone]1/4[Sittwo]1/4"],
[ocats, "[Almone][Camtwo][Sitone]1/4[Alttwo]1/4"],
[
dcats,
"[Almone][Camtwo][Sitone1/2Altone1/2]1/4[Sittwo1/2Alttwo1/2]1/4",
],
[fmc, "[Mgmone][Femtwo][Sitone]1/4[Sittwo]1/4"],
],
alphas=[1.2, 1.0, 1.0, 1.2, 1.2, 1.9, 1.9, 1.0],
energy_interaction=[
[29800.0, 25800.0, 26000.0, 21000.0, 12300.0, 12300.0, 20600.0],
[2300.0, 50000.0, 62000.0, 45700.0, 45700.0, 4000.0],
[60000.0, 58000.0, 48000.0, 48000.0, 3500.0],
[5000.0, 40000.0, 40000.0, 40000.0],
[35000.0, 35000.0, 60000.0],
[3800.0, 50000.0],
[50000.0],
],
volume_interaction=[
[
-3.0000000000000004e-07,
-3.0000000000000004e-07,
0.0,
0.0,
-1.0000000000000001e-07,
-1.0000000000000001e-07,
-3.0000000000000004e-07,
],
[0.0, 0.0, 0.0, -2.9e-06, -2.9e-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],
[1.0000000000000001e-07, 0.0],
[0.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)
[docs]
class dio(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a dio solution object.
Contains the following endmembers with associated site occupancies:
* [HP_2011_ds62.jd(), "[Almonem]1/2[Almonea]1/2[Namtwoc]1/2[Namtwon]1/2"]
* [HP_2011_ds62.di(), "[Mgmonem]1/2[Mgmonea]1/2[Camtwoc]1/2[Camtwon]1/2"]
* [HP_2011_ds62.hed(), "[Femonem]1/2[Femonea]1/2[Camtwoc]1/2[Camtwon]1/2"]
* [acmm, "[Fethreemonem]1/2[Fethreemonea]1/2[Namtwoc]1/2[Namtwon]1/2"]
* [om, "[Mgmonem]1/2[Almonea]1/2[Camtwoc]1/2[Namtwon]1/2"]
* [cfm, "[Femonem]1/2[Mgmonea]1/2[Camtwoc]1/2[Camtwon]1/2"]
* [jac, "[Almonem]1/2[Fethreemonea]1/2[Namtwoc]1/2[Namtwon]1/2"]
This is implemented as a symmetric solution.
"""
self.name = "dio"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.jd(), "[Almonem]1/2[Almonea]1/2[Namtwoc]1/2[Namtwon]1/2"],
[HP_2011_ds62.di(), "[Mgmonem]1/2[Mgmonea]1/2[Camtwoc]1/2[Camtwon]1/2"],
[
HP_2011_ds62.hed(),
"[Femonem]1/2[Femonea]1/2[Camtwoc]1/2[Camtwon]1/2",
],
[acmm, "[Fethreemonem]1/2[Fethreemonea]1/2[Namtwoc]1/2[Namtwon]1/2"],
[om, "[Mgmonem]1/2[Almonea]1/2[Camtwoc]1/2[Namtwon]1/2"],
[cfm, "[Femonem]1/2[Mgmonea]1/2[Camtwoc]1/2[Camtwon]1/2"],
[jac, "[Almonem]1/2[Fethreemonea]1/2[Namtwoc]1/2[Namtwon]1/2"],
],
energy_interaction=[
[26000.0, 24000.0, 5000.0, 15500.0, 25200.0, 3000.0],
[4000.0, 21000.0, 15750.0, 2000.0, 24650.0],
[20800.0, 17200.0, 2000.0, 24600.0],
[16400.0, 22200.0, 3000.0],
[18450.0, 19500.0],
[24550.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"]
* [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"],
[odi, "[Mgmone][Camtwo][Sit]1/2"],
],
alphas=[1.0, 1.0, 1.0, 1.0, 1.0, 1.2],
energy_interaction=[
[7000.0, 4000.0, 13000.0, 11000.0, 32200.000000000004],
[4000.0, 13000.0, 11600.0, 25540.0],
[17000.0, 15000.0, 22540.0],
[1000.0, 75400.0],
[73400.0],
],
volume_interaction=[
[0.0, 0.0, -1.5e-06, -1.5e-06, 1.2000000000000002e-06],
[0.0, -1.5e-06, -1.5e-06, 8.400000000000001e-07],
[-1.5e-06, -1.5e-06, 8.400000000000001e-07],
[0.0, -9.4e-06],
[-9.4e-06],
],
)
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:
* [HP_2011_ds62.py(), "[Mgx]3[Aly]2"]
* [HP_2011_ds62.alm(), "[Fex]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.gr(), "[Cax]3[Aly]2"],
[kho, "[Mgx]3[Fethreey]2"],
],
alphas=[1.0, 1.0, 2.7, 1.0],
energy_interaction=[
[2500.0, 31000.0, 5400.0],
[5000.0, 22600.0],
[-15300.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:
* [HP_2011_ds62.fo(), "[Mgm]2"]
* [HP_2011_ds62.fa(), "[Fem]2"]
This is implemented as a symmetric solution.
"""
self.name = "ol"
self.solution_model = SymmetricRegularSolution(
endmembers=[
[HP_2011_ds62.fo(), "[Mgm]2"],
[HP_2011_ds62.fa(), "[Fem]2"],
],
energy_interaction=[[9000.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 abc(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a abc solution object.
Contains the following endmembers with associated site occupancies:
* [abm, "[Naa]"]
* [anm, "[Caa]"]
This is implemented as an asymmetric solution.
"""
self.name = "abc"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[abm, "[Naa]"],
[anm, "[Caa]"],
],
alphas=[0.64, 1.0],
energy_interaction=[[3400.0]],
)
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 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 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 pli(Solution):
def __init__(self, molar_fractions=None):
"""
Initialisation for a pli solution object.
Contains the following endmembers with associated site occupancies:
* [abhI, "[Na]"]
* [HP_2011_ds62.an(), "[Ca]"]
* [HP_2011_ds62.san(), "[K]"]
This is implemented as an asymmetric solution.
"""
self.name = "pli"
self.solution_model = AsymmetricRegularSolution(
endmembers=[
[abhI, "[Na]"],
[HP_2011_ds62.an(), "[Ca]"],
[HP_2011_ds62.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 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 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 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]"]
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]"],
],
energy_interaction=[
[15600.0, 26600.0, 4000.0],
[11000.0, 4000.0],
[36000.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 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"]
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"],
],
energy_interaction=[
[12000.0, 4000.0, 10000.0, 30000.0, 8000.0],
[8000.0, 15000.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 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"]
* [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=[
[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"],
[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 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"]
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"],
],
energy_interaction=[
[17000.0, 17000.0, 20000.0, 30000.0, 21000.0, 2000.0],
[16000.0, 37000.0, 20000.0, 4000.0, 15000.0],
[30000.0, 29000.0, 13000.0, 19000.0],
[18000.0, 33000.0, 22000.0],
[24000.0, 28600.0],
[19000.0],
],
)
Solution.__init__(self, molar_fractions=molar_fractions)