peritheos 0.6.0__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- peritheos/__init__.py +50 -0
- peritheos/_rust.cp313-win_amd64.pyd +0 -0
- peritheos/constants.py +22 -0
- peritheos/data/__init__.py +1 -0
- peritheos/data/eosmat-v3.schema.json +461 -0
- peritheos/data/materials/DIOPTAS_LICENSE.txt +24 -0
- peritheos/data/materials/README.md +101 -0
- peritheos/data/materials/__init__.py +1 -0
- peritheos/data/materials/akimotoite.eosmat +125 -0
- peritheos/data/materials/almandine.eosmat +133 -0
- peritheos/data/materials/alpha_quartz.eosmat +116 -0
- peritheos/data/materials/alumina.eosmat +165 -0
- peritheos/data/materials/aluminum.eosmat +275 -0
- peritheos/data/materials/aragonite.eosmat +155 -0
- peritheos/data/materials/argon_hcp.eosmat +102 -0
- peritheos/data/materials/b4c.eosmat +151 -0
- peritheos/data/materials/boron_nitride.eosmat +114 -0
- peritheos/data/materials/boron_nitride_hexagonal.eosmat +118 -0
- peritheos/data/materials/boron_phosphide.eosmat +123 -0
- peritheos/data/materials/bridgmanite.eosmat +303 -0
- peritheos/data/materials/ca_perovskite.eosmat +213 -0
- peritheos/data/materials/calcite.eosmat +119 -0
- peritheos/data/materials/calcium_carbonate_post_aragonite.eosmat +236 -0
- peritheos/data/materials/cao.eosmat +127 -0
- peritheos/data/materials/cao_b2.eosmat +131 -0
- peritheos/data/materials/cementite.eosmat +132 -0
- peritheos/data/materials/cerium_dioxide.eosmat +119 -0
- peritheos/data/materials/chromium.eosmat +106 -0
- peritheos/data/materials/cobalt_hcp.eosmat +105 -0
- peritheos/data/materials/coesite.eosmat +150 -0
- peritheos/data/materials/coo.eosmat +165 -0
- peritheos/data/materials/copper.eosmat +272 -0
- peritheos/data/materials/cscl.eosmat +122 -0
- peritheos/data/materials/diamond.eosmat +500 -0
- peritheos/data/materials/e_feooh.eosmat +124 -0
- peritheos/data/materials/fayalite.eosmat +151 -0
- peritheos/data/materials/fe.eosmat +112 -0
- peritheos/data/materials/fe2o3.eosmat +116 -0
- peritheos/data/materials/fe3o4.eosmat +134 -0
- peritheos/data/materials/fe3s.eosmat +221 -0
- peritheos/data/materials/feh2.eosmat +168 -0
- peritheos/data/materials/feh3.eosmat +116 -0
- peritheos/data/materials/feo.eosmat +121 -0
- peritheos/data/materials/feo_b8_2.eosmat +121 -0
- peritheos/data/materials/fes.eosmat +114 -0
- peritheos/data/materials/forsterite.eosmat +149 -0
- peritheos/data/materials/geo2_rutile.eosmat +142 -0
- peritheos/data/materials/goethite.eosmat +126 -0
- peritheos/data/materials/gold.eosmat +578 -0
- peritheos/data/materials/graphite.eosmat +124 -0
- peritheos/data/materials/ice_vi.eosmat +180 -0
- peritheos/data/materials/ice_vii.eosmat +220 -0
- peritheos/data/materials/iceviii.eosmat +348 -0
- peritheos/data/materials/indium_nitride.eosmat +138 -0
- peritheos/data/materials/iridium.eosmat +111 -0
- peritheos/data/materials/iron.eosmat +175 -0
- peritheos/data/materials/iron_carbide_fe7c3.eosmat +197 -0
- peritheos/data/materials/kbr_b1.eosmat +121 -0
- peritheos/data/materials/kbr_b2.eosmat +121 -0
- peritheos/data/materials/kcl.eosmat +418 -0
- peritheos/data/materials/kcl_b1.eosmat +121 -0
- peritheos/data/materials/lead_fcc.eosmat +109 -0
- peritheos/data/materials/li_bcc.eosmat +140 -0
- peritheos/data/materials/lif_b1.eosmat +115 -0
- peritheos/data/materials/magnesite.eosmat +141 -0
- peritheos/data/materials/magnesium_bcc.eosmat +114 -0
- peritheos/data/materials/magnesium_hcp.eosmat +114 -0
- peritheos/data/materials/majorite.eosmat +834 -0
- peritheos/data/materials/manganese_alpha.eosmat +136 -0
- peritheos/data/materials/manifest.json +21 -0
- peritheos/data/materials/mg7si2o8.eosmat +336 -0
- peritheos/data/materials/mgfe60o.eosmat +180 -0
- peritheos/data/materials/mgo.eosmat +427 -0
- peritheos/data/materials/mgsio3_post_perovskite.eosmat +209 -0
- peritheos/data/materials/molybdenum.eosmat +273 -0
- peritheos/data/materials/molybenum_carbide_mo2c.eosmat +152 -0
- peritheos/data/materials/naalsi2o6.eosmat +184 -0
- peritheos/data/materials/naalsio4_calcium_ferrite.eosmat +168 -0
- peritheos/data/materials/nacl_b1.eosmat +116 -0
- peritheos/data/materials/nacl_b2.eosmat +179 -0
- peritheos/data/materials/neon_fcc.eosmat +201 -0
- peritheos/data/materials/nickel.eosmat +105 -0
- peritheos/data/materials/nickel_oxide.eosmat +124 -0
- peritheos/data/materials/niobium.eosmat +299 -0
- peritheos/data/materials/nis.eosmat +122 -0
- peritheos/data/materials/orthoenstatite.eosmat +180 -0
- peritheos/data/materials/osmium.eosmat +106 -0
- peritheos/data/materials/palladium.eosmat +106 -0
- peritheos/data/materials/pbs_b1.eosmat +147 -0
- peritheos/data/materials/perovskite_orthorhombic.eosmat +1186 -0
- peritheos/data/materials/phase_d.eosmat +630 -0
- peritheos/data/materials/platinum.eosmat +422 -0
- peritheos/data/materials/praseodymium_dioxide.eosmat +119 -0
- peritheos/data/materials/pyrope.eosmat +133 -0
- peritheos/data/materials/rhenium.eosmat +107 -0
- peritheos/data/materials/rhodium.eosmat +110 -0
- peritheos/data/materials/ringwoodite.eosmat +136 -0
- peritheos/data/materials/ruthenium.eosmat +110 -0
- peritheos/data/materials/seifertite.eosmat +150 -0
- peritheos/data/materials/silica_cacl2.eosmat +150 -0
- peritheos/data/materials/silicon.eosmat +109 -0
- peritheos/data/materials/silicon_carbide_b1.eosmat +116 -0
- peritheos/data/materials/silicon_carbide_b3.eosmat +118 -0
- peritheos/data/materials/silicon_v.eosmat +108 -0
- peritheos/data/materials/silicon_vii.eosmat +108 -0
- peritheos/data/materials/silicon_x.eosmat +108 -0
- peritheos/data/materials/silver.eosmat +270 -0
- peritheos/data/materials/sio2_stv_andr.eosmat +111 -0
- peritheos/data/materials/sno2.eosmat +142 -0
- peritheos/data/materials/sno2_cubic_27gpa.eosmat +203 -0
- peritheos/data/materials/sno2_pa_3_at_48gpa.eosmat +203 -0
- peritheos/data/materials/sro.eosmat +129 -0
- peritheos/data/materials/sro_b2.eosmat +120 -0
- peritheos/data/materials/tantalum.eosmat +381 -0
- peritheos/data/materials/titanium_alpha.eosmat +114 -0
- peritheos/data/materials/titanium_omega.eosmat +120 -0
- peritheos/data/materials/tungsten.eosmat +342 -0
- peritheos/data/materials/wadsleyite.eosmat +260 -0
- peritheos/data/materials/zinc_oxide_rocksalt.eosmat +115 -0
- peritheos/data/materials/zinc_oxide_wurtzite.eosmat +119 -0
- peritheos/data/materials/zircon.eosmat +177 -0
- peritheos/data/materials/zirconium_alpha.eosmat +118 -0
- peritheos/data/materials/zirconium_beta.eosmat +117 -0
- peritheos/data/materials/zirconium_omega.eosmat +124 -0
- peritheos/data/primary-source-audit.json +2738 -0
- peritheos/eos/__init__.py +838 -0
- peritheos/eos/rt/__init__.py +23 -0
- peritheos/eos/rt/bm.py +256 -0
- peritheos/eos/rt/holzapfel.py +140 -0
- peritheos/eos/rt/murnaghan.py +56 -0
- peritheos/eos/rt/natural_strain.py +67 -0
- peritheos/eos/rt/tait.py +98 -0
- peritheos/eos/rt/vinet.py +83 -0
- peritheos/eos/thermal/__init__.py +32 -0
- peritheos/eos/thermal/double_debye_helmholtz.py +444 -0
- peritheos/eos/thermal/holland_powell.py +115 -0
- peritheos/eos/thermal/linear.py +280 -0
- peritheos/eos/thermal/mie_gruneisen.py +505 -0
- peritheos/eos/thermal/multi_oscillator.py +371 -0
- peritheos/eos/thermal/sokolova2016.py +16 -0
- peritheos/eosmat.py +458 -0
- peritheos/fitting.py +994 -0
- peritheos/materials.py +3095 -0
- peritheos/uncertainty.py +718 -0
- peritheos/units.py +101 -0
- peritheos/utils.py +119 -0
- peritheos-0.6.0.dist-info/METADATA +266 -0
- peritheos-0.6.0.dist-info/RECORD +151 -0
- peritheos-0.6.0.dist-info/WHEEL +4 -0
- peritheos-0.6.0.dist-info/licenses/LICENSE +21 -0
- peritheos-0.6.0.dist-info/sboms/peritheos-python.cyclonedx.json +1732 -0
peritheos/__init__.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Peritheos: thermodynamic equations of state calculations."""
|
|
2
|
+
|
|
3
|
+
from peritheos.eosmat import (
|
|
4
|
+
EOSMAT_FORMAT,
|
|
5
|
+
EOSMAT_FORMAT_VERSION,
|
|
6
|
+
eosmat_schema,
|
|
7
|
+
get_material_document,
|
|
8
|
+
list_material_documents,
|
|
9
|
+
load_eosmat,
|
|
10
|
+
save_eosmat,
|
|
11
|
+
validate_eosmat_document,
|
|
12
|
+
)
|
|
13
|
+
from peritheos.materials import (
|
|
14
|
+
EOSRecord,
|
|
15
|
+
Material,
|
|
16
|
+
get_eos_record,
|
|
17
|
+
get_material,
|
|
18
|
+
list_eos_records,
|
|
19
|
+
list_materials,
|
|
20
|
+
material_from_dict,
|
|
21
|
+
)
|
|
22
|
+
from peritheos.uncertainty import (
|
|
23
|
+
EOSUncertainty,
|
|
24
|
+
ParameterUncertainty,
|
|
25
|
+
PredictionUncertainty,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__version__ = "0.6.0"
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
"EOSMAT_FORMAT",
|
|
32
|
+
"EOSMAT_FORMAT_VERSION",
|
|
33
|
+
"EOSUncertainty",
|
|
34
|
+
"ParameterUncertainty",
|
|
35
|
+
"EOSRecord",
|
|
36
|
+
"Material",
|
|
37
|
+
"PredictionUncertainty",
|
|
38
|
+
"__version__",
|
|
39
|
+
"eosmat_schema",
|
|
40
|
+
"get_eos_record",
|
|
41
|
+
"get_material",
|
|
42
|
+
"get_material_document",
|
|
43
|
+
"list_eos_records",
|
|
44
|
+
"list_materials",
|
|
45
|
+
"list_material_documents",
|
|
46
|
+
"load_eosmat",
|
|
47
|
+
"material_from_dict",
|
|
48
|
+
"save_eosmat",
|
|
49
|
+
"validate_eosmat_document",
|
|
50
|
+
]
|
|
Binary file
|
peritheos/constants.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Physical constants used in thermodynamic calculations
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from scipy import constants
|
|
6
|
+
|
|
7
|
+
# Universal gas constant (J/(mol·K))
|
|
8
|
+
R = constants.R
|
|
9
|
+
|
|
10
|
+
# Boltzmann constant (J/K)
|
|
11
|
+
k_B = constants.Boltzmann
|
|
12
|
+
|
|
13
|
+
# Avogadro's number (1/mol)
|
|
14
|
+
N_A = constants.Avogadro
|
|
15
|
+
|
|
16
|
+
# Standard temperature and pressure
|
|
17
|
+
STP_TEMPERATURE = constants.zero_Celsius # K (273.15)
|
|
18
|
+
STP_PRESSURE = constants.atm # Pa (101325.0)
|
|
19
|
+
|
|
20
|
+
# Other useful constants
|
|
21
|
+
STANDARD_GRAVITY = constants.g # m/s²
|
|
22
|
+
STEFAN_BOLTZMANN = constants.Stefan_Boltzmann # W/(m²·K⁴)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Versioned data resources distributed with Peritheos."""
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://peritheos.readthedocs.io/schemas/eosmat-v3.schema.json",
|
|
4
|
+
"title": "Peritheos material (.eosmat) format 3",
|
|
5
|
+
"description": "A material with optional crystallographic data and zero or more literature EOS records. Its storage shape is an additive evolution of Dioptas 0.10.0 format 2; consumers must still recognize every selected equation option before numerical evaluation.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"format",
|
|
9
|
+
"format_version",
|
|
10
|
+
"identifier",
|
|
11
|
+
"name",
|
|
12
|
+
"formula",
|
|
13
|
+
"units",
|
|
14
|
+
"eos_records"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"format": {
|
|
18
|
+
"enum": ["peritheos.material"],
|
|
19
|
+
"description": "Canonical format discriminator."
|
|
20
|
+
},
|
|
21
|
+
"format_version": {
|
|
22
|
+
"const": 3
|
|
23
|
+
},
|
|
24
|
+
"identifier": {
|
|
25
|
+
"$ref": "#/$defs/identifier",
|
|
26
|
+
"description": "Stable lower-snake-case material identifier."
|
|
27
|
+
},
|
|
28
|
+
"name": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
"formula": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"phase": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
37
|
+
"cell_contents": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Human-readable definition of the conventional cell used by all record volumes."
|
|
40
|
+
},
|
|
41
|
+
"units": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"required": ["pressure", "temperature", "volume"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"pressure": {"const": "GPa"},
|
|
46
|
+
"temperature": {"const": "K"},
|
|
47
|
+
"volume": {"const": "angstrom^3/conventional_unit_cell"}
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": false
|
|
50
|
+
},
|
|
51
|
+
"aliases": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": {"type": "string"}
|
|
54
|
+
},
|
|
55
|
+
"symmetry": {
|
|
56
|
+
"type": "string"
|
|
57
|
+
},
|
|
58
|
+
"lattice": {
|
|
59
|
+
"$ref": "#/$defs/lattice"
|
|
60
|
+
},
|
|
61
|
+
"formula_units_per_cell": {
|
|
62
|
+
"type": ["number", "null"],
|
|
63
|
+
"exclusiveMinimum": 0,
|
|
64
|
+
"description": "Crystallographic Z used to convert conventional-cell volume to formula-molar volume."
|
|
65
|
+
},
|
|
66
|
+
"space_group": {
|
|
67
|
+
"type": "string"
|
|
68
|
+
},
|
|
69
|
+
"space_group_number": {
|
|
70
|
+
"type": ["integer", "null"],
|
|
71
|
+
"minimum": 1,
|
|
72
|
+
"maximum": 230
|
|
73
|
+
},
|
|
74
|
+
"atom_sites": {
|
|
75
|
+
"type": "array",
|
|
76
|
+
"items": {"$ref": "#/$defs/atom_site"}
|
|
77
|
+
},
|
|
78
|
+
"source": {
|
|
79
|
+
"type": "object"
|
|
80
|
+
},
|
|
81
|
+
"notes": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"peaks": {
|
|
85
|
+
"type": "array",
|
|
86
|
+
"items": {"$ref": "#/$defs/peak"}
|
|
87
|
+
},
|
|
88
|
+
"eos_records": {
|
|
89
|
+
"type": "array",
|
|
90
|
+
"items": {"$ref": "#/$defs/eos_record"},
|
|
91
|
+
"description": "Literature EOS parameterizations for this material and phase; may be empty for a structure-only exchange document."
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"additionalProperties": true,
|
|
95
|
+
"$defs": {
|
|
96
|
+
"identifier": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"pattern": "^[a-z0-9]+(?:_[a-z0-9]+)*$"
|
|
99
|
+
},
|
|
100
|
+
"nullable_number": {
|
|
101
|
+
"type": ["number", "null"]
|
|
102
|
+
},
|
|
103
|
+
"lattice": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"required": ["a", "b", "c", "alpha", "beta", "gamma"],
|
|
106
|
+
"properties": {
|
|
107
|
+
"a": {"type": "number"},
|
|
108
|
+
"b": {"$ref": "#/$defs/nullable_number"},
|
|
109
|
+
"c": {"$ref": "#/$defs/nullable_number"},
|
|
110
|
+
"alpha": {"type": "number"},
|
|
111
|
+
"beta": {"type": "number"},
|
|
112
|
+
"gamma": {"type": "number"}
|
|
113
|
+
},
|
|
114
|
+
"additionalProperties": false
|
|
115
|
+
},
|
|
116
|
+
"atom_site": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"required": ["element", "x", "y", "z", "occupancy"],
|
|
119
|
+
"properties": {
|
|
120
|
+
"element": {"type": "string"},
|
|
121
|
+
"x": {"type": "number"},
|
|
122
|
+
"y": {"type": "number"},
|
|
123
|
+
"z": {"type": "number"},
|
|
124
|
+
"occupancy": {"type": "number"},
|
|
125
|
+
"wyckoff": {"type": "string"}
|
|
126
|
+
},
|
|
127
|
+
"additionalProperties": true
|
|
128
|
+
},
|
|
129
|
+
"peak": {
|
|
130
|
+
"type": "array",
|
|
131
|
+
"prefixItems": [
|
|
132
|
+
{"type": "number"},
|
|
133
|
+
{"type": "number"},
|
|
134
|
+
{"type": "number"},
|
|
135
|
+
{"type": "number"},
|
|
136
|
+
{"type": "number"}
|
|
137
|
+
],
|
|
138
|
+
"minItems": 5,
|
|
139
|
+
"maxItems": 5
|
|
140
|
+
},
|
|
141
|
+
"reference": {
|
|
142
|
+
"oneOf": [
|
|
143
|
+
{"type": "string"},
|
|
144
|
+
{
|
|
145
|
+
"type": "object",
|
|
146
|
+
"required": ["authors", "year", "source"],
|
|
147
|
+
"properties": {
|
|
148
|
+
"authors": {
|
|
149
|
+
"type": "array",
|
|
150
|
+
"minItems": 1,
|
|
151
|
+
"items": {"type": "string"}
|
|
152
|
+
},
|
|
153
|
+
"authors_truncated": {"type": "boolean"},
|
|
154
|
+
"year": {"type": "integer"},
|
|
155
|
+
"title": {"type": "string"},
|
|
156
|
+
"source": {"type": "string"},
|
|
157
|
+
"volume": {"type": "string"},
|
|
158
|
+
"locator": {"type": "string"},
|
|
159
|
+
"details": {"type": "string"},
|
|
160
|
+
"doi": {"type": "string"}
|
|
161
|
+
},
|
|
162
|
+
"additionalProperties": true
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
"equation": {
|
|
167
|
+
"type": "object",
|
|
168
|
+
"required": ["type", "model", "parameters"],
|
|
169
|
+
"properties": {
|
|
170
|
+
"type": {
|
|
171
|
+
"enum": [
|
|
172
|
+
"BM2",
|
|
173
|
+
"BM3",
|
|
174
|
+
"BM4",
|
|
175
|
+
"Holzapfel",
|
|
176
|
+
"ModifiedTait",
|
|
177
|
+
"Murnaghan",
|
|
178
|
+
"NaturalStrain2",
|
|
179
|
+
"NaturalStrain3",
|
|
180
|
+
"NaturalStrain4",
|
|
181
|
+
"Vinet"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"model": {
|
|
185
|
+
"enum": [
|
|
186
|
+
"birch_murnaghan_2",
|
|
187
|
+
"birch_murnaghan_3",
|
|
188
|
+
"birch_murnaghan_4",
|
|
189
|
+
"holzapfel",
|
|
190
|
+
"modified_tait",
|
|
191
|
+
"murnaghan",
|
|
192
|
+
"natural_strain_2",
|
|
193
|
+
"natural_strain_3",
|
|
194
|
+
"natural_strain_4",
|
|
195
|
+
"vinet"
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
"parameters": {
|
|
199
|
+
"type": "object",
|
|
200
|
+
"required": ["V0"],
|
|
201
|
+
"additionalProperties": {"type": "number"}
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"additionalProperties": true,
|
|
205
|
+
"allOf": [
|
|
206
|
+
{
|
|
207
|
+
"oneOf": [
|
|
208
|
+
{"properties": {"type": {"const": "BM2"}, "model": {"const": "birch_murnaghan_2"}}},
|
|
209
|
+
{"properties": {"type": {"const": "BM3"}, "model": {"const": "birch_murnaghan_3"}}},
|
|
210
|
+
{"properties": {"type": {"const": "BM4"}, "model": {"const": "birch_murnaghan_4"}}},
|
|
211
|
+
{"properties": {"type": {"const": "Holzapfel"}, "model": {"const": "holzapfel"}}},
|
|
212
|
+
{"properties": {"type": {"const": "ModifiedTait"}, "model": {"const": "modified_tait"}}},
|
|
213
|
+
{"properties": {"type": {"const": "Murnaghan"}, "model": {"const": "murnaghan"}}},
|
|
214
|
+
{"properties": {"type": {"const": "NaturalStrain2"}, "model": {"const": "natural_strain_2"}}},
|
|
215
|
+
{"properties": {"type": {"const": "NaturalStrain3"}, "model": {"const": "natural_strain_3"}}},
|
|
216
|
+
{"properties": {"type": {"const": "NaturalStrain4"}, "model": {"const": "natural_strain_4"}}},
|
|
217
|
+
{"properties": {"type": {"const": "Vinet"}, "model": {"const": "vinet"}}}
|
|
218
|
+
]
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
},
|
|
222
|
+
"thermal": {
|
|
223
|
+
"type": "object",
|
|
224
|
+
"required": ["type", "model", "parameters"],
|
|
225
|
+
"properties": {
|
|
226
|
+
"type": {
|
|
227
|
+
"enum": [
|
|
228
|
+
"AlphaKT",
|
|
229
|
+
"AsymptoticPowerLawMieGruneisenDebye",
|
|
230
|
+
"DoubleDebyeHelmholtz",
|
|
231
|
+
"LinearThermalPressure",
|
|
232
|
+
"LogVolumeThermalPressure",
|
|
233
|
+
"MieGruneisenDebye",
|
|
234
|
+
"MieGruneisenEinstein",
|
|
235
|
+
"MultiOscillatorGruneisen",
|
|
236
|
+
"Sokolova2016",
|
|
237
|
+
"ThermalModifiedTait"
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
"model": {
|
|
241
|
+
"enum": [
|
|
242
|
+
"thermal_reference_state",
|
|
243
|
+
"asymptotic_power_law_mie_gruneisen_debye",
|
|
244
|
+
"double_debye_helmholtz",
|
|
245
|
+
"linear_thermal_pressure",
|
|
246
|
+
"log_volume_thermal_pressure",
|
|
247
|
+
"mie_gruneisen_debye",
|
|
248
|
+
"mie_gruneisen_einstein",
|
|
249
|
+
"multi_oscillator_gruneisen_thermal_pressure",
|
|
250
|
+
"thermal_modified_tait"
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
"debye_temperature_law": {
|
|
254
|
+
"enum": ["integrated_gruneisen", "variable_exponent"],
|
|
255
|
+
"default": "integrated_gruneisen",
|
|
256
|
+
"description": "Characteristic-temperature relation for MieGruneisenDebye. Omission means integrated_gruneisen; JSON Schema defaults are annotations and do not insert the field."
|
|
257
|
+
},
|
|
258
|
+
"thermal_expansion_law": {
|
|
259
|
+
"enum": ["constant", "linear_temperature"],
|
|
260
|
+
"default": "constant",
|
|
261
|
+
"description": "Volumetric expansion law integrated by thermal_reference_state. Omission means constant; linear_temperature requires alpha1."
|
|
262
|
+
},
|
|
263
|
+
"reference_volume_law": {
|
|
264
|
+
"enum": ["integrated_expansivity", "linear_temperature"],
|
|
265
|
+
"default": "integrated_expansivity",
|
|
266
|
+
"description": "Reference-volume construction for thermal_reference_state. Omission integrates the selected expansivity; linear_temperature applies V0(T)=V0(Tr)*(1+alpha0*(T-Tr))."
|
|
267
|
+
},
|
|
268
|
+
"parameters": {
|
|
269
|
+
"type": "object",
|
|
270
|
+
"additionalProperties": {"type": "number"}
|
|
271
|
+
},
|
|
272
|
+
"parameter_errors": {
|
|
273
|
+
"$ref": "#/$defs/parameter_errors"
|
|
274
|
+
},
|
|
275
|
+
"fixed_parameters": {
|
|
276
|
+
"type": "array",
|
|
277
|
+
"items": {"type": "string"}
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"additionalProperties": true,
|
|
281
|
+
"allOf": [
|
|
282
|
+
{
|
|
283
|
+
"oneOf": [
|
|
284
|
+
{"properties": {"type": {"const": "AlphaKT"}, "model": {"const": "thermal_reference_state"}}},
|
|
285
|
+
{"properties": {"type": {"const": "AsymptoticPowerLawMieGruneisenDebye"}, "model": {"const": "asymptotic_power_law_mie_gruneisen_debye"}}},
|
|
286
|
+
{"properties": {"type": {"const": "DoubleDebyeHelmholtz"}, "model": {"const": "double_debye_helmholtz"}}},
|
|
287
|
+
{"properties": {"type": {"const": "LinearThermalPressure"}, "model": {"const": "linear_thermal_pressure"}}},
|
|
288
|
+
{"properties": {"type": {"const": "LogVolumeThermalPressure"}, "model": {"const": "log_volume_thermal_pressure"}}},
|
|
289
|
+
{"properties": {"type": {"const": "MieGruneisenDebye"}, "model": {"const": "mie_gruneisen_debye"}}},
|
|
290
|
+
{"properties": {"type": {"const": "MieGruneisenEinstein"}, "model": {"const": "mie_gruneisen_einstein"}}},
|
|
291
|
+
{"properties": {"type": {"const": "MultiOscillatorGruneisen"}, "model": {"const": "multi_oscillator_gruneisen_thermal_pressure"}}},
|
|
292
|
+
{"properties": {"type": {"const": "Sokolova2016"}, "model": {"const": "multi_oscillator_gruneisen_thermal_pressure"}}},
|
|
293
|
+
{"properties": {"type": {"const": "ThermalModifiedTait"}, "model": {"const": "thermal_modified_tait"}}}
|
|
294
|
+
]
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"if": {"required": ["debye_temperature_law"]},
|
|
298
|
+
"then": {"properties": {"type": {"const": "MieGruneisenDebye"}}}
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"if": {"required": ["thermal_expansion_law"]},
|
|
302
|
+
"then": {"properties": {"type": {"const": "AlphaKT"}}}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"if": {"required": ["reference_volume_law"]},
|
|
306
|
+
"then": {"properties": {"type": {"const": "AlphaKT"}}}
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"if": {"properties": {"thermal_expansion_law": {"const": "linear_temperature"}}, "required": ["thermal_expansion_law"]},
|
|
310
|
+
"then": {"properties": {"parameters": {"required": ["alpha1"]}}}
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"if": {
|
|
314
|
+
"anyOf": [
|
|
315
|
+
{"not": {"required": ["thermal_expansion_law"]}},
|
|
316
|
+
{"properties": {"thermal_expansion_law": {"const": "constant"}}, "required": ["thermal_expansion_law"]}
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
"then": {"properties": {"parameters": {"properties": {"alpha1": {"const": 0}}}}}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"if": {
|
|
323
|
+
"properties": {"reference_volume_law": {"const": "linear_temperature"}},
|
|
324
|
+
"required": ["reference_volume_law"]
|
|
325
|
+
},
|
|
326
|
+
"then": {
|
|
327
|
+
"properties": {
|
|
328
|
+
"thermal_expansion_law": {"const": "constant"},
|
|
329
|
+
"parameters": {"properties": {"alpha1": {"const": 0}}}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
]
|
|
334
|
+
},
|
|
335
|
+
"parameter_errors": {
|
|
336
|
+
"type": "object",
|
|
337
|
+
"additionalProperties": {"$ref": "#/$defs/nullable_number"}
|
|
338
|
+
},
|
|
339
|
+
"range": {
|
|
340
|
+
"type": "array",
|
|
341
|
+
"prefixItems": [{"type": "number"}, {"type": "number"}],
|
|
342
|
+
"minItems": 2,
|
|
343
|
+
"maxItems": 2
|
|
344
|
+
},
|
|
345
|
+
"validity": {
|
|
346
|
+
"type": "object",
|
|
347
|
+
"properties": {
|
|
348
|
+
"pressure_gpa": {"$ref": "#/$defs/range"},
|
|
349
|
+
"temperature_k": {"$ref": "#/$defs/range"},
|
|
350
|
+
"volume_ratio": {"$ref": "#/$defs/range"},
|
|
351
|
+
"notes": {"type": "array", "items": {"type": "string"}}
|
|
352
|
+
},
|
|
353
|
+
"additionalProperties": false
|
|
354
|
+
},
|
|
355
|
+
"volume_metadata": {
|
|
356
|
+
"type": "object",
|
|
357
|
+
"properties": {
|
|
358
|
+
"reference_value": {"type": "number", "exclusiveMinimum": 0},
|
|
359
|
+
"public_to_model_scale": {"type": "number", "exclusiveMinimum": 0},
|
|
360
|
+
"model_unit": {"type": "string"}
|
|
361
|
+
},
|
|
362
|
+
"additionalProperties": false
|
|
363
|
+
},
|
|
364
|
+
"parameter_covariance": {
|
|
365
|
+
"oneOf": [
|
|
366
|
+
{"type": "null"},
|
|
367
|
+
{
|
|
368
|
+
"type": "object",
|
|
369
|
+
"required": ["matrix", "parameter_order"],
|
|
370
|
+
"properties": {
|
|
371
|
+
"matrix": {
|
|
372
|
+
"type": "array",
|
|
373
|
+
"minItems": 1,
|
|
374
|
+
"items": {
|
|
375
|
+
"type": "array",
|
|
376
|
+
"minItems": 1,
|
|
377
|
+
"items": {"type": "number"}
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
"parameter_order": {
|
|
381
|
+
"type": "array",
|
|
382
|
+
"minItems": 1,
|
|
383
|
+
"items": {"type": "string", "minLength": 1}
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
"additionalProperties": false
|
|
387
|
+
}
|
|
388
|
+
]
|
|
389
|
+
},
|
|
390
|
+
"scientific_validation": {
|
|
391
|
+
"type": "object",
|
|
392
|
+
"required": ["status"],
|
|
393
|
+
"properties": {
|
|
394
|
+
"status": {
|
|
395
|
+
"enum": ["primary_source_validated", "pending_primary_source_check", "deferred"]
|
|
396
|
+
},
|
|
397
|
+
"note": {"type": "string"},
|
|
398
|
+
"migration_source": {"type": "object"}
|
|
399
|
+
},
|
|
400
|
+
"additionalProperties": true
|
|
401
|
+
},
|
|
402
|
+
"eos_record": {
|
|
403
|
+
"type": "object",
|
|
404
|
+
"required": [
|
|
405
|
+
"label",
|
|
406
|
+
"identifier",
|
|
407
|
+
"reference",
|
|
408
|
+
"eos",
|
|
409
|
+
"parameter_errors",
|
|
410
|
+
"fixed_parameters",
|
|
411
|
+
"scientific_validation"
|
|
412
|
+
],
|
|
413
|
+
"properties": {
|
|
414
|
+
"identifier": {"$ref": "#/$defs/identifier"},
|
|
415
|
+
"label": {"type": "string"},
|
|
416
|
+
"reference": {"$ref": "#/$defs/reference"},
|
|
417
|
+
"default": {"type": "boolean"},
|
|
418
|
+
"eos": {"$ref": "#/$defs/equation"},
|
|
419
|
+
"parameter_errors": {"$ref": "#/$defs/parameter_errors"},
|
|
420
|
+
"parameter_error_confidence": {
|
|
421
|
+
"type": ["number", "null"],
|
|
422
|
+
"exclusiveMinimum": 0,
|
|
423
|
+
"exclusiveMaximum": 1,
|
|
424
|
+
"description": "Two-sided confidence level of reported parameter-error half-widths. Null means the values are standard errors or the source convention is otherwise recorded in notes."
|
|
425
|
+
},
|
|
426
|
+
"fixed_parameters": {
|
|
427
|
+
"type": "array",
|
|
428
|
+
"items": {"type": "string"}
|
|
429
|
+
},
|
|
430
|
+
"experimental_pressure_range_gpa": {"$ref": "#/$defs/range"},
|
|
431
|
+
"pressure_range_status": {
|
|
432
|
+
"enum": ["reported_exactly", "reported_qualitatively", "theoretical", "reference_parameterization"]
|
|
433
|
+
},
|
|
434
|
+
"experimental_temperature_range_k": {"$ref": "#/$defs/range"},
|
|
435
|
+
"thermal": {"$ref": "#/$defs/thermal"},
|
|
436
|
+
"temperature_ref": {"type": "number"},
|
|
437
|
+
"volume": {"$ref": "#/$defs/volume_metadata"},
|
|
438
|
+
"validity": {"$ref": "#/$defs/validity"},
|
|
439
|
+
"parameter_provenance": {"type": "object"},
|
|
440
|
+
"source_lineage": {
|
|
441
|
+
"type": "array",
|
|
442
|
+
"description": "Ordered scientific-fit, parameter-table, implementation, correction, and experimental-context sources contributing to a composite record.",
|
|
443
|
+
"items": {
|
|
444
|
+
"type": "object",
|
|
445
|
+
"required": ["role", "citation"],
|
|
446
|
+
"properties": {
|
|
447
|
+
"role": {"type": "string"},
|
|
448
|
+
"citation": {"type": "string"},
|
|
449
|
+
"doi": {"type": "string"}
|
|
450
|
+
},
|
|
451
|
+
"additionalProperties": true
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"parameter_covariance": {"$ref": "#/$defs/parameter_covariance"},
|
|
455
|
+
"scientific_validation": {"$ref": "#/$defs/scientific_validation"},
|
|
456
|
+
"notes": {"type": "string"}
|
|
457
|
+
},
|
|
458
|
+
"additionalProperties": true
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014-2019 GSECARS, University of Chicago, USA
|
|
4
|
+
Copyright (c) 2015-2018 Institute for Geology and Mineralogy, University of Cologne, Germany
|
|
5
|
+
Copyright (c) 2019-2020 DESY, Hamburg, Germany
|
|
6
|
+
Copyright (c) 2021-2026 Clemens Prescher
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
in the Software without restriction, including without limitation the rights
|
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in all
|
|
16
|
+
copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
SOFTWARE.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Bundled material library
|
|
2
|
+
|
|
3
|
+
This directory contains 115 curated materials with EOS records from the
|
|
4
|
+
120-material, 147-EOS-record Dioptas 0.10.0 database, tag commit
|
|
5
|
+
`5a8bfd81d10bfab3499039603380aae34576d60a`. Dioptas is distributed under the
|
|
6
|
+
MIT License. Its project source is <https://github.com/Dioptas/Dioptas>.
|
|
7
|
+
|
|
8
|
+
The migration preserves supported Dioptas crystallographic and EOS data and adds
|
|
9
|
+
stable identifiers plus explicit migration provenance. It does **not** make
|
|
10
|
+
Dioptas the scientific authority for an EOS record. The primary-source audit
|
|
11
|
+
dated 2026-09-01 classifies all 147 bundled records as
|
|
12
|
+
`primary_source_validated`. No bundled record remains pending or deferred. The complete
|
|
13
|
+
machine-readable ledger is `../primary-source-audit.json`.
|
|
14
|
+
|
|
15
|
+
The three additional records are native to Peritheos and therefore have no
|
|
16
|
+
invented Dioptas migration provenance: the primary-sourced staged aragonite BM2
|
|
17
|
+
P-V-T parameterization from Martinez et al. (1996), the Dewaele et al. (2012)
|
|
18
|
+
B2-KCl P-V-T pressure calibration, and the complete Benedict et al. (2014)
|
|
19
|
+
diamond double-Debye Helmholtz model. The KCl record is the preferred
|
|
20
|
+
`kcl.eosmat` record and
|
|
21
|
+
keeps its measured 298 K range distinct from its molecular-dynamics thermal
|
|
22
|
+
extension. The Martinez staged result uses its exact Equation (3) direct-linear
|
|
23
|
+
reference-volume law. The paper's separate global thermal BM3 entry is excluded
|
|
24
|
+
because its fitted reference volume is omitted and the remaining coefficients
|
|
25
|
+
do not reproduce the printed dataset under the documented equations.
|
|
26
|
+
|
|
27
|
+
The final full-text audit resolved the earlier CsCl, magnetite, Li, majorite,
|
|
28
|
+
MW60, NiS, phase-D, cubic-SnO2, and SrO blockers. Phase D is intentionally two
|
|
29
|
+
EOS records because the primary paper reports distinct AntA and AntB ambient
|
|
30
|
+
volumes. The lithium fit is explicitly labeled as one empirical Vinet curve
|
|
31
|
+
spanning bcc and fcc observations. The cubic SnO2 records expose only the
|
|
32
|
+
published 300 K reference isotherm; a separate single-pressure expansivity is
|
|
33
|
+
not silently promoted to a complete thermal EOS.
|
|
34
|
+
|
|
35
|
+
Primary review also consolidated duplicate majorite cards and removed two
|
|
36
|
+
records whose cited sources do not define the migrated EOS: the Fei-labeled
|
|
37
|
+
FeO static BM3 and the Hixson--Fritz tungsten BM3 reduction. The corrected
|
|
38
|
+
InN entry follows Muñoz and Kunc's theoretical Murnaghan fit. The Campbell
|
|
39
|
+
B2-KCl entry is explicitly labeled as a Campbell-ratio/Dewaele-B1-volume
|
|
40
|
+
composite, including the limited uncertainty propagation that combination
|
|
41
|
+
permits.
|
|
42
|
+
|
|
43
|
+
All eleven Sokolova marker records distinguish scientific-fit provenance from
|
|
44
|
+
software lineage. Sokolova et al. (2013), Tables 1 and 4, supply the reference
|
|
45
|
+
inputs and final cross-calibrated coefficients. Dorogokupets et al. (2012) is
|
|
46
|
+
the preceding fit source for diamond and the nine metals; Dorogokupets (2010)
|
|
47
|
+
is the earlier MgO source. Sokolova et al. (2016) supplies the Excel/VBA
|
|
48
|
+
implementation, conventions, corrected equations, and the implemented MgO
|
|
49
|
+
anharmonic-coefficient correction. Each `.eosmat` record stores these roles in
|
|
50
|
+
`source_lineage`. Its identifier uses `_sokolova_2013` for the scientific fit
|
|
51
|
+
year; the former workbook-year `_sokolova_2016` identifier is not retained.
|
|
52
|
+
|
|
53
|
+
Only validated records are executable by default. Deferred records remain in
|
|
54
|
+
the files so Dioptas and other consumers can preserve the catalog without
|
|
55
|
+
silently converting inherited values into Peritheos-endorsed pressure scales.
|
|
56
|
+
|
|
57
|
+
The Fei et al. (2007) Au and Ne Debye-temperature laws are a documented
|
|
58
|
+
exception to byte-for-byte preservation. They are corrected from generic
|
|
59
|
+
implicit integrated behavior to `MieGruneisenDebye` with
|
|
60
|
+
`debye_temperature_law: variable_exponent`, based on equation 3 and the
|
|
61
|
+
definition immediately following it. Each affected record retains the source
|
|
62
|
+
value and primary-source location under `migration_corrections`. The audit also
|
|
63
|
+
restores the published `V0 = 35.12(2) angstrom^3` uncertainty for the Hanfland
|
|
64
|
+
graphite record and records, without hiding, the conflicting BM2/BM3 wording
|
|
65
|
+
in the Somayazulu B4C article. The Hazen--Finger zircon record is corrected
|
|
66
|
+
from BM2 to its published BM3 parameters with fixed `K0' = 6.5`. It also
|
|
67
|
+
restores model-required `n`/`Z` values
|
|
68
|
+
for Sokolova records, `n` for the Sun silica Debye records, and `Tr` for the
|
|
69
|
+
Bezacier ice records, each with field-level `audit_corrections` provenance.
|
|
70
|
+
The ten Shen--Smith (2026) Cu-anchored 300 K Vinet fits are validated directly
|
|
71
|
+
against Equation (4), Tables I--II, and the phase-specific range discussion in
|
|
72
|
+
the supplied version of record. Their printed `K0` and `K0'` errors are stored,
|
|
73
|
+
but no confidence level or covariance is inferred because the paper states
|
|
74
|
+
neither.
|
|
75
|
+
|
|
76
|
+
The Dioptas-facing thermal type `AlphaKT` is preserved for interchange, while
|
|
77
|
+
its canonical mechanism identifier is `thermal_reference_state`. Peritheos
|
|
78
|
+
evaluates validated instances with `ThermalReferenceStateEOS` rather than
|
|
79
|
+
making the source/application label part of the public equation name.
|
|
80
|
+
The corrected Anderson Au record instead uses the format-3 extension
|
|
81
|
+
`LogVolumeThermalPressure` / `log_volume_thermal_pressure`. Older consumers
|
|
82
|
+
must preserve this unknown component rather than evaluating it as `AlphaKT`;
|
|
83
|
+
the latter is a different equation.
|
|
84
|
+
|
|
85
|
+
Four Dioptas structure-only entries (`fe_fcc`, `fes_iii`, `nitrogen_epsilon`,
|
|
86
|
+
and `o8`) are intentionally not bundled because they contain no EOS record.
|
|
87
|
+
The `.eosmat` schema still permits an empty `eos_records` array for
|
|
88
|
+
application-created structure-only documents.
|
|
89
|
+
|
|
90
|
+
The `.eosmat` documents use the Peritheos-owned format version 3. Their
|
|
91
|
+
material, structure, and record layout is an additive evolution of the Dioptas
|
|
92
|
+
0.10.0 format-2 layout, so Dioptas 0.10.0 can read and preserve them. A future
|
|
93
|
+
Dioptas writer must preserve the version-3 top-level fields for a lossless
|
|
94
|
+
round trip and honor the variable-exponent law before numerically
|
|
95
|
+
evaluating the corrected Fei records. In the shared schema, an omitted
|
|
96
|
+
`debye_temperature_law` means `integrated_gruneisen`.
|
|
97
|
+
An omitted `thermal_expansion_law` means `constant`; the explicit
|
|
98
|
+
`linear_temperature` value requires `alpha1` and integrates
|
|
99
|
+
`alpha(T)=alpha0+alpha1*T`. An omitted `reference_volume_law` means
|
|
100
|
+
`integrated_expansivity`; `linear_temperature` instead applies the direct
|
|
101
|
+
relation `V0(T)=V0(Tr)*[1+alpha0*(T-Tr)]` used by the staged aragonite record.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Bundled `.eosmat` material library."""
|