Source code for burnman.minerals.mp50MnNCKFMASHTO

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