Source code for burnman.minerals.mb50NCKFMASHTO

# 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)