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.
Files changed (151) hide show
  1. peritheos/__init__.py +50 -0
  2. peritheos/_rust.cp313-win_amd64.pyd +0 -0
  3. peritheos/constants.py +22 -0
  4. peritheos/data/__init__.py +1 -0
  5. peritheos/data/eosmat-v3.schema.json +461 -0
  6. peritheos/data/materials/DIOPTAS_LICENSE.txt +24 -0
  7. peritheos/data/materials/README.md +101 -0
  8. peritheos/data/materials/__init__.py +1 -0
  9. peritheos/data/materials/akimotoite.eosmat +125 -0
  10. peritheos/data/materials/almandine.eosmat +133 -0
  11. peritheos/data/materials/alpha_quartz.eosmat +116 -0
  12. peritheos/data/materials/alumina.eosmat +165 -0
  13. peritheos/data/materials/aluminum.eosmat +275 -0
  14. peritheos/data/materials/aragonite.eosmat +155 -0
  15. peritheos/data/materials/argon_hcp.eosmat +102 -0
  16. peritheos/data/materials/b4c.eosmat +151 -0
  17. peritheos/data/materials/boron_nitride.eosmat +114 -0
  18. peritheos/data/materials/boron_nitride_hexagonal.eosmat +118 -0
  19. peritheos/data/materials/boron_phosphide.eosmat +123 -0
  20. peritheos/data/materials/bridgmanite.eosmat +303 -0
  21. peritheos/data/materials/ca_perovskite.eosmat +213 -0
  22. peritheos/data/materials/calcite.eosmat +119 -0
  23. peritheos/data/materials/calcium_carbonate_post_aragonite.eosmat +236 -0
  24. peritheos/data/materials/cao.eosmat +127 -0
  25. peritheos/data/materials/cao_b2.eosmat +131 -0
  26. peritheos/data/materials/cementite.eosmat +132 -0
  27. peritheos/data/materials/cerium_dioxide.eosmat +119 -0
  28. peritheos/data/materials/chromium.eosmat +106 -0
  29. peritheos/data/materials/cobalt_hcp.eosmat +105 -0
  30. peritheos/data/materials/coesite.eosmat +150 -0
  31. peritheos/data/materials/coo.eosmat +165 -0
  32. peritheos/data/materials/copper.eosmat +272 -0
  33. peritheos/data/materials/cscl.eosmat +122 -0
  34. peritheos/data/materials/diamond.eosmat +500 -0
  35. peritheos/data/materials/e_feooh.eosmat +124 -0
  36. peritheos/data/materials/fayalite.eosmat +151 -0
  37. peritheos/data/materials/fe.eosmat +112 -0
  38. peritheos/data/materials/fe2o3.eosmat +116 -0
  39. peritheos/data/materials/fe3o4.eosmat +134 -0
  40. peritheos/data/materials/fe3s.eosmat +221 -0
  41. peritheos/data/materials/feh2.eosmat +168 -0
  42. peritheos/data/materials/feh3.eosmat +116 -0
  43. peritheos/data/materials/feo.eosmat +121 -0
  44. peritheos/data/materials/feo_b8_2.eosmat +121 -0
  45. peritheos/data/materials/fes.eosmat +114 -0
  46. peritheos/data/materials/forsterite.eosmat +149 -0
  47. peritheos/data/materials/geo2_rutile.eosmat +142 -0
  48. peritheos/data/materials/goethite.eosmat +126 -0
  49. peritheos/data/materials/gold.eosmat +578 -0
  50. peritheos/data/materials/graphite.eosmat +124 -0
  51. peritheos/data/materials/ice_vi.eosmat +180 -0
  52. peritheos/data/materials/ice_vii.eosmat +220 -0
  53. peritheos/data/materials/iceviii.eosmat +348 -0
  54. peritheos/data/materials/indium_nitride.eosmat +138 -0
  55. peritheos/data/materials/iridium.eosmat +111 -0
  56. peritheos/data/materials/iron.eosmat +175 -0
  57. peritheos/data/materials/iron_carbide_fe7c3.eosmat +197 -0
  58. peritheos/data/materials/kbr_b1.eosmat +121 -0
  59. peritheos/data/materials/kbr_b2.eosmat +121 -0
  60. peritheos/data/materials/kcl.eosmat +418 -0
  61. peritheos/data/materials/kcl_b1.eosmat +121 -0
  62. peritheos/data/materials/lead_fcc.eosmat +109 -0
  63. peritheos/data/materials/li_bcc.eosmat +140 -0
  64. peritheos/data/materials/lif_b1.eosmat +115 -0
  65. peritheos/data/materials/magnesite.eosmat +141 -0
  66. peritheos/data/materials/magnesium_bcc.eosmat +114 -0
  67. peritheos/data/materials/magnesium_hcp.eosmat +114 -0
  68. peritheos/data/materials/majorite.eosmat +834 -0
  69. peritheos/data/materials/manganese_alpha.eosmat +136 -0
  70. peritheos/data/materials/manifest.json +21 -0
  71. peritheos/data/materials/mg7si2o8.eosmat +336 -0
  72. peritheos/data/materials/mgfe60o.eosmat +180 -0
  73. peritheos/data/materials/mgo.eosmat +427 -0
  74. peritheos/data/materials/mgsio3_post_perovskite.eosmat +209 -0
  75. peritheos/data/materials/molybdenum.eosmat +273 -0
  76. peritheos/data/materials/molybenum_carbide_mo2c.eosmat +152 -0
  77. peritheos/data/materials/naalsi2o6.eosmat +184 -0
  78. peritheos/data/materials/naalsio4_calcium_ferrite.eosmat +168 -0
  79. peritheos/data/materials/nacl_b1.eosmat +116 -0
  80. peritheos/data/materials/nacl_b2.eosmat +179 -0
  81. peritheos/data/materials/neon_fcc.eosmat +201 -0
  82. peritheos/data/materials/nickel.eosmat +105 -0
  83. peritheos/data/materials/nickel_oxide.eosmat +124 -0
  84. peritheos/data/materials/niobium.eosmat +299 -0
  85. peritheos/data/materials/nis.eosmat +122 -0
  86. peritheos/data/materials/orthoenstatite.eosmat +180 -0
  87. peritheos/data/materials/osmium.eosmat +106 -0
  88. peritheos/data/materials/palladium.eosmat +106 -0
  89. peritheos/data/materials/pbs_b1.eosmat +147 -0
  90. peritheos/data/materials/perovskite_orthorhombic.eosmat +1186 -0
  91. peritheos/data/materials/phase_d.eosmat +630 -0
  92. peritheos/data/materials/platinum.eosmat +422 -0
  93. peritheos/data/materials/praseodymium_dioxide.eosmat +119 -0
  94. peritheos/data/materials/pyrope.eosmat +133 -0
  95. peritheos/data/materials/rhenium.eosmat +107 -0
  96. peritheos/data/materials/rhodium.eosmat +110 -0
  97. peritheos/data/materials/ringwoodite.eosmat +136 -0
  98. peritheos/data/materials/ruthenium.eosmat +110 -0
  99. peritheos/data/materials/seifertite.eosmat +150 -0
  100. peritheos/data/materials/silica_cacl2.eosmat +150 -0
  101. peritheos/data/materials/silicon.eosmat +109 -0
  102. peritheos/data/materials/silicon_carbide_b1.eosmat +116 -0
  103. peritheos/data/materials/silicon_carbide_b3.eosmat +118 -0
  104. peritheos/data/materials/silicon_v.eosmat +108 -0
  105. peritheos/data/materials/silicon_vii.eosmat +108 -0
  106. peritheos/data/materials/silicon_x.eosmat +108 -0
  107. peritheos/data/materials/silver.eosmat +270 -0
  108. peritheos/data/materials/sio2_stv_andr.eosmat +111 -0
  109. peritheos/data/materials/sno2.eosmat +142 -0
  110. peritheos/data/materials/sno2_cubic_27gpa.eosmat +203 -0
  111. peritheos/data/materials/sno2_pa_3_at_48gpa.eosmat +203 -0
  112. peritheos/data/materials/sro.eosmat +129 -0
  113. peritheos/data/materials/sro_b2.eosmat +120 -0
  114. peritheos/data/materials/tantalum.eosmat +381 -0
  115. peritheos/data/materials/titanium_alpha.eosmat +114 -0
  116. peritheos/data/materials/titanium_omega.eosmat +120 -0
  117. peritheos/data/materials/tungsten.eosmat +342 -0
  118. peritheos/data/materials/wadsleyite.eosmat +260 -0
  119. peritheos/data/materials/zinc_oxide_rocksalt.eosmat +115 -0
  120. peritheos/data/materials/zinc_oxide_wurtzite.eosmat +119 -0
  121. peritheos/data/materials/zircon.eosmat +177 -0
  122. peritheos/data/materials/zirconium_alpha.eosmat +118 -0
  123. peritheos/data/materials/zirconium_beta.eosmat +117 -0
  124. peritheos/data/materials/zirconium_omega.eosmat +124 -0
  125. peritheos/data/primary-source-audit.json +2738 -0
  126. peritheos/eos/__init__.py +838 -0
  127. peritheos/eos/rt/__init__.py +23 -0
  128. peritheos/eos/rt/bm.py +256 -0
  129. peritheos/eos/rt/holzapfel.py +140 -0
  130. peritheos/eos/rt/murnaghan.py +56 -0
  131. peritheos/eos/rt/natural_strain.py +67 -0
  132. peritheos/eos/rt/tait.py +98 -0
  133. peritheos/eos/rt/vinet.py +83 -0
  134. peritheos/eos/thermal/__init__.py +32 -0
  135. peritheos/eos/thermal/double_debye_helmholtz.py +444 -0
  136. peritheos/eos/thermal/holland_powell.py +115 -0
  137. peritheos/eos/thermal/linear.py +280 -0
  138. peritheos/eos/thermal/mie_gruneisen.py +505 -0
  139. peritheos/eos/thermal/multi_oscillator.py +371 -0
  140. peritheos/eos/thermal/sokolova2016.py +16 -0
  141. peritheos/eosmat.py +458 -0
  142. peritheos/fitting.py +994 -0
  143. peritheos/materials.py +3095 -0
  144. peritheos/uncertainty.py +718 -0
  145. peritheos/units.py +101 -0
  146. peritheos/utils.py +119 -0
  147. peritheos-0.6.0.dist-info/METADATA +266 -0
  148. peritheos-0.6.0.dist-info/RECORD +151 -0
  149. peritheos-0.6.0.dist-info/WHEEL +4 -0
  150. peritheos-0.6.0.dist-info/licenses/LICENSE +21 -0
  151. 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."""