Source code for burnman.minerals.mp50KFMASH

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

"""
mp50KFMASH
^^^^^^^^^^

HPx-eos solutions using endmembers from
dataset HP_2011_ds62.

Contains the following solutions:
* g
* mu
* bi
* opx
* sa
* cd
* st
* chl
* ctd
* sp1

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


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",
)
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",
)
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",
)
mstm = CombinedMineral(
    [HP_2011_ds62.mst()],
    [1.0],
    [np.float64(0.0), np.float64(-0.0), np.float64(0.0)],
    "mstm",
)
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",
)


[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"] * [HP_2011_ds62.alm(), "[Fex]3"] This is implemented as a symmetric solution. """ self.name = "g" self.solution_model = SymmetricRegularSolution( endmembers=[ [HP_2011_ds62.py(), "[Mgx]3"], [HP_2011_ds62.alm(), "[Fex]3"], ], energy_interaction=[[2500.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(), "[Almtwoa][Sitone1/2Altone1/2]2"] * [HP_2011_ds62.cel(), "[Mgmtwoa][Sitone]2"] * [HP_2011_ds62.fcel(), "[Femtwoa][Sitone]2"] This is implemented as an asymmetric solution. """ self.name = "mu" self.solution_model = AsymmetricRegularSolution( endmembers=[ [HP_2011_ds62.mu(), "[Almtwoa][Sitone1/2Altone1/2]2"], [HP_2011_ds62.cel(), "[Mgmtwoa][Sitone]2"], [HP_2011_ds62.fcel(), "[Femtwoa][Sitone]2"], ], alphas=[0.63, 0.63, 0.63], energy_interaction=[[0.0, 0.0], [0.0]], volume_interaction=[ [2.0000000000000003e-06, 2.0000000000000003e-06], [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"] * [annm, "[Femthree][Femonetwo]2[Sit1/2Alt1/2]2"] * [obi, "[Femthree][Mgmonetwo]2[Sit1/2Alt1/2]2"] * [HP_2011_ds62.east(), "[Almthree][Mgmonetwo]2[Alt]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"], [annm, "[Femthree][Femonetwo]2[Sit1/2Alt1/2]2"], [obi, "[Femthree][Mgmonetwo]2[Sit1/2Alt1/2]2"], [HP_2011_ds62.east(), "[Almthree][Mgmonetwo]2[Alt]2"], ], energy_interaction=[ [12000.0, 4000.0, 10000.0], [8000.0, 15000.0], [7000.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][Alt1/2Sit1/2]1/2"] This is implemented as a symmetric solution. """ self.name = "opx" self.solution_model = SymmetricRegularSolution( 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][Alt1/2Sit1/2]1/2"], ], energy_interaction=[ [7000.0, 4000.0, 13000.0], [4000.0, 13000.0], [17000.0], ], volume_interaction=[[0.0, 0.0, -1.5e-06], [0.0, -1.5e-06], [-1.5e-06]], ) 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]"] 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]"], ], energy_interaction=[ [10000.0, 16000.0, 12000.0], [19000.0, 22000.0], [4000.0], ], volume_interaction=[ [-2.0000000000000002e-07, 0.0, 0.0], [-2.0000000000000002e-07, -2.0000000000000002e-07], [0.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: * [HP_2011_ds62.crd(), "[Mgx]2[Vh]"] * [HP_2011_ds62.fcrd(), "[Fex]2[Vh]"] * [HP_2011_ds62.hcrd(), "[Mgx]2[Htwooh]"] 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]"], ], energy_interaction=[[8000.0, 0.0], [9000.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"] * [HP_2011_ds62.fst(), "[Fex]4"] This is implemented as a symmetric solution. """ self.name = "st" self.solution_model = SymmetricRegularSolution( endmembers=[ [mstm, "[Mgx]4"], [HP_2011_ds62.fst(), "[Fex]4"], ], energy_interaction=[[16000.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"] 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"], ], energy_interaction=[ [17000.0, 17000.0, 20000.0, 30000.0, 21000.0], [16000.0, 37000.0, 20000.0, 4000.0], [30000.0, 29000.0, 13000.0], [18000.0, 33000.0], [24000.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(), "[Mgmoneb]"] * [HP_2011_ds62.fctd(), "[Femoneb]"] This is implemented as a symmetric solution. """ self.name = "ctd" self.solution_model = SymmetricRegularSolution( endmembers=[ [HP_2011_ds62.mctd(), "[Mgmoneb]"], [HP_2011_ds62.fctd(), "[Femoneb]"], ], energy_interaction=[[4000.0]], ) Solution.__init__(self, molar_fractions=molar_fractions)
[docs] class sp1(Solution): def __init__(self, molar_fractions=None): """ Initialisation for a sp1 solution object. Contains the following endmembers with associated site occupancies: * [HP_2011_ds62.herc(), "[Fea]"] * [HP_2011_ds62.sp(), "[Mga]"] This is implemented as a symmetric solution. """ self.name = "sp1" self.solution_model = SymmetricRegularSolution( endmembers=[ [HP_2011_ds62.herc(), "[Fea]"], [HP_2011_ds62.sp(), "[Mga]"], ], energy_interaction=[[0.0]], ) Solution.__init__(self, molar_fractions=molar_fractions)