peritheos 0.5.0__tar.gz → 0.6.0__tar.gz

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 (252) hide show
  1. peritheos-0.6.0/Cargo.lock +452 -0
  2. peritheos-0.6.0/Cargo.toml +20 -0
  3. {peritheos-0.5.0 → peritheos-0.6.0}/PKG-INFO +81 -29
  4. peritheos-0.5.0/peritheos.egg-info/PKG-INFO → peritheos-0.6.0/README.md +67 -44
  5. peritheos-0.6.0/crates/peritheos-core/Cargo.toml +19 -0
  6. peritheos-0.6.0/crates/peritheos-core/README.md +39 -0
  7. peritheos-0.6.0/crates/peritheos-core/src/batch.rs +249 -0
  8. peritheos-0.6.0/crates/peritheos-core/src/eosmat.rs +1020 -0
  9. peritheos-0.6.0/crates/peritheos-core/src/error.rs +51 -0
  10. peritheos-0.6.0/crates/peritheos-core/src/isothermal.rs +642 -0
  11. peritheos-0.6.0/crates/peritheos-core/src/lib.rs +324 -0
  12. peritheos-0.6.0/crates/peritheos-core/src/quadrature.rs +135 -0
  13. peritheos-0.6.0/crates/peritheos-core/src/root.rs +230 -0
  14. peritheos-0.6.0/crates/peritheos-core/src/thermal.rs +1723 -0
  15. peritheos-0.6.0/crates/peritheos-core/src/validation.rs +53 -0
  16. peritheos-0.6.0/crates/peritheos-core/tests/batch.rs +107 -0
  17. peritheos-0.6.0/crates/peritheos-core/tests/data/isothermal_compatibility_cases.json +82 -0
  18. {peritheos-0.5.0 → peritheos-0.6.0/crates/peritheos-core}/tests/data/literature_reference_cases.json +1 -1
  19. peritheos-0.6.0/crates/peritheos-core/tests/data/thermal_compatibility_cases.json +57 -0
  20. peritheos-0.6.0/crates/peritheos-core/tests/eosmat.rs +155 -0
  21. peritheos-0.6.0/crates/peritheos-core/tests/isothermal.rs +210 -0
  22. peritheos-0.6.0/crates/peritheos-core/tests/thermal.rs +584 -0
  23. peritheos-0.6.0/crates/peritheos-fit/Cargo.toml +19 -0
  24. peritheos-0.6.0/crates/peritheos-fit/README.md +54 -0
  25. peritheos-0.6.0/crates/peritheos-fit/src/eos.rs +691 -0
  26. peritheos-0.6.0/crates/peritheos-fit/src/lib.rs +2216 -0
  27. peritheos-0.6.0/crates/peritheos-python/Cargo.toml +25 -0
  28. peritheos-0.6.0/crates/peritheos-python/README.md +5 -0
  29. peritheos-0.6.0/crates/peritheos-python/src/lib.rs +1287 -0
  30. peritheos-0.6.0/crates/peritheos-python/src/native_fit.rs +637 -0
  31. {peritheos-0.5.0 → peritheos-0.6.0}/docs/api-stability.md +20 -0
  32. peritheos-0.6.0/docs/api.md +305 -0
  33. {peritheos-0.5.0 → peritheos-0.6.0}/docs/dac-thermal-pressure.md +22 -11
  34. peritheos-0.6.0/docs/development.md +135 -0
  35. peritheos-0.6.0/docs/dioptas-integration.md +189 -0
  36. peritheos-0.6.0/docs/eosmat-schema.md +350 -0
  37. peritheos-0.6.0/docs/equation-reference.md +721 -0
  38. {peritheos-0.5.0 → peritheos-0.6.0}/docs/fitting.md +41 -4
  39. {peritheos-0.5.0 → peritheos-0.6.0}/docs/index.md +27 -1
  40. peritheos-0.6.0/docs/javascripts/mathjax.js +12 -0
  41. {peritheos-0.5.0 → peritheos-0.6.0}/docs/models.md +36 -12
  42. peritheos-0.6.0/docs/notebooks/aragonite-eos-fitting.ipynb +661 -0
  43. peritheos-0.6.0/docs/notebooks/compare-gold-pressure-scales.ipynb +322 -0
  44. peritheos-0.6.0/docs/notebooks/compare-room-temperature-eos.ipynb +374 -0
  45. peritheos-0.6.0/docs/notebooks/dac-temperature-sensitivity.ipynb +399 -0
  46. peritheos-0.6.0/docs/notebooks/data/martinez-1996-aragonite-table3.csv +65 -0
  47. peritheos-0.6.0/docs/notebooks/eosmat-roundtrip.ipynb +326 -0
  48. peritheos-0.6.0/docs/notebooks/exploring-material-library.ipynb +368 -0
  49. peritheos-0.6.0/docs/notebooks/fit-to-prediction-uncertainty.ipynb +364 -0
  50. peritheos-0.6.0/docs/notebooks/pressure-calibration-quickstart.ipynb +346 -0
  51. peritheos-0.6.0/docs/notebooks/thermal-eos-state-surfaces.ipynb +323 -0
  52. peritheos-0.6.0/docs/pressure-standards.md +457 -0
  53. peritheos-0.6.0/docs/references.md +310 -0
  54. {peritheos-0.5.0 → peritheos-0.6.0}/docs/requirements.txt +2 -0
  55. peritheos-0.6.0/docs/rust-completion-plan.md +48 -0
  56. peritheos-0.6.0/docs/rust-migration.md +285 -0
  57. peritheos-0.6.0/docs/scirs2-feasibility.md +193 -0
  58. {peritheos-0.5.0 → peritheos-0.6.0}/docs/thermoelastic-properties.md +1 -1
  59. {peritheos-0.5.0 → peritheos-0.6.0}/docs/uncertainty.md +3 -2
  60. {peritheos-0.5.0 → peritheos-0.6.0}/docs/units.md +19 -0
  61. peritheos-0.6.0/docs/validation.md +334 -0
  62. {peritheos-0.5.0 → peritheos-0.6.0}/mkdocs.yml +19 -0
  63. peritheos-0.6.0/peritheos/__init__.py +50 -0
  64. peritheos-0.6.0/peritheos/data/__init__.py +1 -0
  65. peritheos-0.6.0/peritheos/data/eosmat-v3.schema.json +461 -0
  66. peritheos-0.6.0/peritheos/data/materials/DIOPTAS_LICENSE.txt +24 -0
  67. peritheos-0.6.0/peritheos/data/materials/README.md +101 -0
  68. peritheos-0.6.0/peritheos/data/materials/__init__.py +1 -0
  69. peritheos-0.6.0/peritheos/data/materials/akimotoite.eosmat +125 -0
  70. peritheos-0.6.0/peritheos/data/materials/almandine.eosmat +133 -0
  71. peritheos-0.6.0/peritheos/data/materials/alpha_quartz.eosmat +116 -0
  72. peritheos-0.6.0/peritheos/data/materials/alumina.eosmat +165 -0
  73. peritheos-0.6.0/peritheos/data/materials/aluminum.eosmat +275 -0
  74. peritheos-0.6.0/peritheos/data/materials/aragonite.eosmat +155 -0
  75. peritheos-0.6.0/peritheos/data/materials/argon_hcp.eosmat +102 -0
  76. peritheos-0.6.0/peritheos/data/materials/b4c.eosmat +151 -0
  77. peritheos-0.6.0/peritheos/data/materials/boron_nitride.eosmat +114 -0
  78. peritheos-0.6.0/peritheos/data/materials/boron_nitride_hexagonal.eosmat +118 -0
  79. peritheos-0.6.0/peritheos/data/materials/boron_phosphide.eosmat +123 -0
  80. peritheos-0.6.0/peritheos/data/materials/bridgmanite.eosmat +303 -0
  81. peritheos-0.6.0/peritheos/data/materials/ca_perovskite.eosmat +213 -0
  82. peritheos-0.6.0/peritheos/data/materials/calcite.eosmat +119 -0
  83. peritheos-0.6.0/peritheos/data/materials/calcium_carbonate_post_aragonite.eosmat +236 -0
  84. peritheos-0.6.0/peritheos/data/materials/cao.eosmat +127 -0
  85. peritheos-0.6.0/peritheos/data/materials/cao_b2.eosmat +131 -0
  86. peritheos-0.6.0/peritheos/data/materials/cementite.eosmat +132 -0
  87. peritheos-0.6.0/peritheos/data/materials/cerium_dioxide.eosmat +119 -0
  88. peritheos-0.6.0/peritheos/data/materials/chromium.eosmat +106 -0
  89. peritheos-0.6.0/peritheos/data/materials/cobalt_hcp.eosmat +105 -0
  90. peritheos-0.6.0/peritheos/data/materials/coesite.eosmat +150 -0
  91. peritheos-0.6.0/peritheos/data/materials/coo.eosmat +165 -0
  92. peritheos-0.6.0/peritheos/data/materials/copper.eosmat +272 -0
  93. peritheos-0.6.0/peritheos/data/materials/cscl.eosmat +122 -0
  94. peritheos-0.6.0/peritheos/data/materials/diamond.eosmat +500 -0
  95. peritheos-0.6.0/peritheos/data/materials/e_feooh.eosmat +124 -0
  96. peritheos-0.6.0/peritheos/data/materials/fayalite.eosmat +151 -0
  97. peritheos-0.6.0/peritheos/data/materials/fe.eosmat +112 -0
  98. peritheos-0.6.0/peritheos/data/materials/fe2o3.eosmat +116 -0
  99. peritheos-0.6.0/peritheos/data/materials/fe3o4.eosmat +134 -0
  100. peritheos-0.6.0/peritheos/data/materials/fe3s.eosmat +221 -0
  101. peritheos-0.6.0/peritheos/data/materials/feh2.eosmat +168 -0
  102. peritheos-0.6.0/peritheos/data/materials/feh3.eosmat +116 -0
  103. peritheos-0.6.0/peritheos/data/materials/feo.eosmat +121 -0
  104. peritheos-0.6.0/peritheos/data/materials/feo_b8_2.eosmat +121 -0
  105. peritheos-0.6.0/peritheos/data/materials/fes.eosmat +114 -0
  106. peritheos-0.6.0/peritheos/data/materials/forsterite.eosmat +149 -0
  107. peritheos-0.6.0/peritheos/data/materials/geo2_rutile.eosmat +142 -0
  108. peritheos-0.6.0/peritheos/data/materials/goethite.eosmat +126 -0
  109. peritheos-0.6.0/peritheos/data/materials/gold.eosmat +578 -0
  110. peritheos-0.6.0/peritheos/data/materials/graphite.eosmat +124 -0
  111. peritheos-0.6.0/peritheos/data/materials/ice_vi.eosmat +180 -0
  112. peritheos-0.6.0/peritheos/data/materials/ice_vii.eosmat +220 -0
  113. peritheos-0.6.0/peritheos/data/materials/iceviii.eosmat +348 -0
  114. peritheos-0.6.0/peritheos/data/materials/indium_nitride.eosmat +138 -0
  115. peritheos-0.6.0/peritheos/data/materials/iridium.eosmat +111 -0
  116. peritheos-0.6.0/peritheos/data/materials/iron.eosmat +175 -0
  117. peritheos-0.6.0/peritheos/data/materials/iron_carbide_fe7c3.eosmat +197 -0
  118. peritheos-0.6.0/peritheos/data/materials/kbr_b1.eosmat +121 -0
  119. peritheos-0.6.0/peritheos/data/materials/kbr_b2.eosmat +121 -0
  120. peritheos-0.6.0/peritheos/data/materials/kcl.eosmat +418 -0
  121. peritheos-0.6.0/peritheos/data/materials/kcl_b1.eosmat +121 -0
  122. peritheos-0.6.0/peritheos/data/materials/lead_fcc.eosmat +109 -0
  123. peritheos-0.6.0/peritheos/data/materials/li_bcc.eosmat +140 -0
  124. peritheos-0.6.0/peritheos/data/materials/lif_b1.eosmat +115 -0
  125. peritheos-0.6.0/peritheos/data/materials/magnesite.eosmat +141 -0
  126. peritheos-0.6.0/peritheos/data/materials/magnesium_bcc.eosmat +114 -0
  127. peritheos-0.6.0/peritheos/data/materials/magnesium_hcp.eosmat +114 -0
  128. peritheos-0.6.0/peritheos/data/materials/majorite.eosmat +834 -0
  129. peritheos-0.6.0/peritheos/data/materials/manganese_alpha.eosmat +136 -0
  130. peritheos-0.6.0/peritheos/data/materials/manifest.json +21 -0
  131. peritheos-0.6.0/peritheos/data/materials/mg7si2o8.eosmat +336 -0
  132. peritheos-0.6.0/peritheos/data/materials/mgfe60o.eosmat +180 -0
  133. peritheos-0.6.0/peritheos/data/materials/mgo.eosmat +427 -0
  134. peritheos-0.6.0/peritheos/data/materials/mgsio3_post_perovskite.eosmat +209 -0
  135. peritheos-0.6.0/peritheos/data/materials/molybdenum.eosmat +273 -0
  136. peritheos-0.6.0/peritheos/data/materials/molybenum_carbide_mo2c.eosmat +152 -0
  137. peritheos-0.6.0/peritheos/data/materials/naalsi2o6.eosmat +184 -0
  138. peritheos-0.6.0/peritheos/data/materials/naalsio4_calcium_ferrite.eosmat +168 -0
  139. peritheos-0.6.0/peritheos/data/materials/nacl_b1.eosmat +116 -0
  140. peritheos-0.6.0/peritheos/data/materials/nacl_b2.eosmat +179 -0
  141. peritheos-0.6.0/peritheos/data/materials/neon_fcc.eosmat +201 -0
  142. peritheos-0.6.0/peritheos/data/materials/nickel.eosmat +105 -0
  143. peritheos-0.6.0/peritheos/data/materials/nickel_oxide.eosmat +124 -0
  144. peritheos-0.6.0/peritheos/data/materials/niobium.eosmat +299 -0
  145. peritheos-0.6.0/peritheos/data/materials/nis.eosmat +122 -0
  146. peritheos-0.6.0/peritheos/data/materials/orthoenstatite.eosmat +180 -0
  147. peritheos-0.6.0/peritheos/data/materials/osmium.eosmat +106 -0
  148. peritheos-0.6.0/peritheos/data/materials/palladium.eosmat +106 -0
  149. peritheos-0.6.0/peritheos/data/materials/pbs_b1.eosmat +147 -0
  150. peritheos-0.6.0/peritheos/data/materials/perovskite_orthorhombic.eosmat +1186 -0
  151. peritheos-0.6.0/peritheos/data/materials/phase_d.eosmat +630 -0
  152. peritheos-0.6.0/peritheos/data/materials/platinum.eosmat +422 -0
  153. peritheos-0.6.0/peritheos/data/materials/praseodymium_dioxide.eosmat +119 -0
  154. peritheos-0.6.0/peritheos/data/materials/pyrope.eosmat +133 -0
  155. peritheos-0.6.0/peritheos/data/materials/rhenium.eosmat +107 -0
  156. peritheos-0.6.0/peritheos/data/materials/rhodium.eosmat +110 -0
  157. peritheos-0.6.0/peritheos/data/materials/ringwoodite.eosmat +136 -0
  158. peritheos-0.6.0/peritheos/data/materials/ruthenium.eosmat +110 -0
  159. peritheos-0.6.0/peritheos/data/materials/seifertite.eosmat +150 -0
  160. peritheos-0.6.0/peritheos/data/materials/silica_cacl2.eosmat +150 -0
  161. peritheos-0.6.0/peritheos/data/materials/silicon.eosmat +109 -0
  162. peritheos-0.6.0/peritheos/data/materials/silicon_carbide_b1.eosmat +116 -0
  163. peritheos-0.6.0/peritheos/data/materials/silicon_carbide_b3.eosmat +118 -0
  164. peritheos-0.6.0/peritheos/data/materials/silicon_v.eosmat +108 -0
  165. peritheos-0.6.0/peritheos/data/materials/silicon_vii.eosmat +108 -0
  166. peritheos-0.6.0/peritheos/data/materials/silicon_x.eosmat +108 -0
  167. peritheos-0.6.0/peritheos/data/materials/silver.eosmat +270 -0
  168. peritheos-0.6.0/peritheos/data/materials/sio2_stv_andr.eosmat +111 -0
  169. peritheos-0.6.0/peritheos/data/materials/sno2.eosmat +142 -0
  170. peritheos-0.6.0/peritheos/data/materials/sno2_cubic_27gpa.eosmat +203 -0
  171. peritheos-0.6.0/peritheos/data/materials/sno2_pa_3_at_48gpa.eosmat +203 -0
  172. peritheos-0.6.0/peritheos/data/materials/sro.eosmat +129 -0
  173. peritheos-0.6.0/peritheos/data/materials/sro_b2.eosmat +120 -0
  174. peritheos-0.6.0/peritheos/data/materials/tantalum.eosmat +381 -0
  175. peritheos-0.6.0/peritheos/data/materials/titanium_alpha.eosmat +114 -0
  176. peritheos-0.6.0/peritheos/data/materials/titanium_omega.eosmat +120 -0
  177. peritheos-0.6.0/peritheos/data/materials/tungsten.eosmat +342 -0
  178. peritheos-0.6.0/peritheos/data/materials/wadsleyite.eosmat +260 -0
  179. peritheos-0.6.0/peritheos/data/materials/zinc_oxide_rocksalt.eosmat +115 -0
  180. peritheos-0.6.0/peritheos/data/materials/zinc_oxide_wurtzite.eosmat +119 -0
  181. peritheos-0.6.0/peritheos/data/materials/zircon.eosmat +177 -0
  182. peritheos-0.6.0/peritheos/data/materials/zirconium_alpha.eosmat +118 -0
  183. peritheos-0.6.0/peritheos/data/materials/zirconium_beta.eosmat +117 -0
  184. peritheos-0.6.0/peritheos/data/materials/zirconium_omega.eosmat +124 -0
  185. peritheos-0.6.0/peritheos/data/primary-source-audit.json +2738 -0
  186. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/__init__.py +174 -2
  187. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/bm.py +13 -42
  188. peritheos-0.6.0/peritheos/eos/rt/holzapfel.py +140 -0
  189. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/murnaghan.py +5 -9
  190. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/natural_strain.py +11 -31
  191. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/tait.py +7 -4
  192. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/vinet.py +5 -9
  193. peritheos-0.6.0/peritheos/eos/thermal/__init__.py +32 -0
  194. peritheos-0.6.0/peritheos/eos/thermal/double_debye_helmholtz.py +444 -0
  195. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/thermal/holland_powell.py +29 -0
  196. peritheos-0.6.0/peritheos/eos/thermal/linear.py +280 -0
  197. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/thermal/mie_gruneisen.py +231 -3
  198. peritheos-0.5.0/peritheos/eos/thermal/sokolova2016.py → peritheos-0.6.0/peritheos/eos/thermal/multi_oscillator.py +76 -11
  199. peritheos-0.6.0/peritheos/eos/thermal/sokolova2016.py +16 -0
  200. peritheos-0.6.0/peritheos/eosmat.py +458 -0
  201. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/fitting.py +180 -18
  202. peritheos-0.6.0/peritheos/materials.py +3095 -0
  203. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/uncertainty.py +39 -15
  204. {peritheos-0.5.0 → peritheos-0.6.0}/pyproject.toml +17 -8
  205. peritheos-0.6.0/scripts/apply_primary_source_audit.py +2884 -0
  206. peritheos-0.6.0/scripts/compare_external_black_boxes.py +123 -0
  207. peritheos-0.6.0/scripts/import_dioptas_eos_database.py +200 -0
  208. peritheos-0.6.0/scripts/verify-rust-packages.sh +32 -0
  209. peritheos-0.5.0/CHANGELOG.md +0 -149
  210. peritheos-0.5.0/CITATION.cff +0 -20
  211. peritheos-0.5.0/CODE_OF_CONDUCT.md +0 -19
  212. peritheos-0.5.0/CONTRIBUTING.md +0 -46
  213. peritheos-0.5.0/MANIFEST.in +0 -9
  214. peritheos-0.5.0/README.md +0 -184
  215. peritheos-0.5.0/SECURITY.md +0 -25
  216. peritheos-0.5.0/SUPPORT.md +0 -14
  217. peritheos-0.5.0/docs/api.md +0 -150
  218. peritheos-0.5.0/docs/development.md +0 -46
  219. peritheos-0.5.0/docs/equation-reference.md +0 -432
  220. peritheos-0.5.0/docs/references.md +0 -55
  221. peritheos-0.5.0/docs/validation.md +0 -79
  222. peritheos-0.5.0/peritheos/__init__.py +0 -16
  223. peritheos-0.5.0/peritheos/eos/rt/holzapfel.py +0 -197
  224. peritheos-0.5.0/peritheos/eos/thermal/__init__.py +0 -15
  225. peritheos-0.5.0/peritheos.egg-info/SOURCES.txt +0 -67
  226. peritheos-0.5.0/peritheos.egg-info/dependency_links.txt +0 -1
  227. peritheos-0.5.0/peritheos.egg-info/requires.txt +0 -2
  228. peritheos-0.5.0/peritheos.egg-info/top_level.txt +0 -1
  229. peritheos-0.5.0/setup.cfg +0 -4
  230. peritheos-0.5.0/tests/test_bm.py +0 -195
  231. peritheos-0.5.0/tests/test_eos_api.py +0 -102
  232. peritheos-0.5.0/tests/test_fitting.py +0 -479
  233. peritheos-0.5.0/tests/test_holzapfel.py +0 -157
  234. peritheos-0.5.0/tests/test_literature_reference_cases.py +0 -63
  235. peritheos-0.5.0/tests/test_murnaghan.py +0 -58
  236. peritheos-0.5.0/tests/test_natural_strain.py +0 -61
  237. peritheos-0.5.0/tests/test_numerical_stress.py +0 -271
  238. peritheos-0.5.0/tests/test_package_metadata.py +0 -17
  239. peritheos-0.5.0/tests/test_tait.py +0 -73
  240. peritheos-0.5.0/tests/test_thermal_mie_gruneisen.py +0 -145
  241. peritheos-0.5.0/tests/test_thermal_sokolova.py +0 -392
  242. peritheos-0.5.0/tests/test_thermoelastic_api.py +0 -134
  243. peritheos-0.5.0/tests/test_uncertainty.py +0 -546
  244. peritheos-0.5.0/tests/test_units.py +0 -43
  245. peritheos-0.5.0/tests/test_vinet.py +0 -97
  246. {peritheos-0.5.0 → peritheos-0.6.0}/LICENSE +0 -0
  247. {peritheos-0.5.0 → peritheos-0.6.0}/docs/getting-started.md +0 -0
  248. {peritheos-0.5.0 → peritheos-0.6.0}/docs/project-policies.md +0 -0
  249. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/constants.py +0 -0
  250. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/eos/rt/__init__.py +0 -0
  251. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/units.py +0 -0
  252. {peritheos-0.5.0 → peritheos-0.6.0}/peritheos/utils.py +0 -0
@@ -0,0 +1,452 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.5.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
10
+
11
+ [[package]]
12
+ name = "cfg-if"
13
+ version = "1.0.4"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
16
+
17
+ [[package]]
18
+ name = "crossbeam-deque"
19
+ version = "0.8.7"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
22
+ dependencies = [
23
+ "crossbeam-epoch",
24
+ "crossbeam-utils",
25
+ ]
26
+
27
+ [[package]]
28
+ name = "crossbeam-epoch"
29
+ version = "0.9.20"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
32
+ dependencies = [
33
+ "crossbeam-utils",
34
+ ]
35
+
36
+ [[package]]
37
+ name = "crossbeam-utils"
38
+ version = "0.8.22"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
41
+
42
+ [[package]]
43
+ name = "either"
44
+ version = "1.18.0"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
47
+
48
+ [[package]]
49
+ name = "getrandom"
50
+ version = "0.2.17"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
53
+ dependencies = [
54
+ "cfg-if",
55
+ "libc",
56
+ "wasi",
57
+ ]
58
+
59
+ [[package]]
60
+ name = "heck"
61
+ version = "0.5.0"
62
+ source = "registry+https://github.com/rust-lang/crates.io-index"
63
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
64
+
65
+ [[package]]
66
+ name = "itoa"
67
+ version = "1.0.18"
68
+ source = "registry+https://github.com/rust-lang/crates.io-index"
69
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
70
+
71
+ [[package]]
72
+ name = "libc"
73
+ version = "0.2.189"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
76
+
77
+ [[package]]
78
+ name = "matrixmultiply"
79
+ version = "0.3.11"
80
+ source = "registry+https://github.com/rust-lang/crates.io-index"
81
+ checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
82
+ dependencies = [
83
+ "autocfg",
84
+ "rawpointer",
85
+ ]
86
+
87
+ [[package]]
88
+ name = "memchr"
89
+ version = "2.8.3"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
92
+
93
+ [[package]]
94
+ name = "ndarray"
95
+ version = "0.17.2"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
98
+ dependencies = [
99
+ "matrixmultiply",
100
+ "num-complex",
101
+ "num-integer",
102
+ "num-traits",
103
+ "portable-atomic",
104
+ "portable-atomic-util",
105
+ "rawpointer",
106
+ ]
107
+
108
+ [[package]]
109
+ name = "num-complex"
110
+ version = "0.4.6"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
113
+ dependencies = [
114
+ "num-traits",
115
+ ]
116
+
117
+ [[package]]
118
+ name = "num-integer"
119
+ version = "0.1.47"
120
+ source = "registry+https://github.com/rust-lang/crates.io-index"
121
+ checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
122
+ dependencies = [
123
+ "num-traits",
124
+ ]
125
+
126
+ [[package]]
127
+ name = "num-traits"
128
+ version = "0.2.19"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
131
+ dependencies = [
132
+ "autocfg",
133
+ ]
134
+
135
+ [[package]]
136
+ name = "numpy"
137
+ version = "0.29.0"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "6a5b15d63a5ff39e378daed0e1340d3a5964703ea9712eb09a0dc66fade996f4"
140
+ dependencies = [
141
+ "libc",
142
+ "ndarray",
143
+ "num-complex",
144
+ "num-integer",
145
+ "num-traits",
146
+ "pyo3",
147
+ "pyo3-build-config",
148
+ "rustc-hash",
149
+ ]
150
+
151
+ [[package]]
152
+ name = "once_cell"
153
+ version = "1.21.4"
154
+ source = "registry+https://github.com/rust-lang/crates.io-index"
155
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
156
+
157
+ [[package]]
158
+ name = "peritheos-core"
159
+ version = "0.6.0"
160
+ dependencies = [
161
+ "serde",
162
+ "serde_json",
163
+ ]
164
+
165
+ [[package]]
166
+ name = "peritheos-fit"
167
+ version = "0.6.0"
168
+ dependencies = [
169
+ "peritheos-core",
170
+ "rand",
171
+ ]
172
+
173
+ [[package]]
174
+ name = "peritheos-python"
175
+ version = "0.6.0"
176
+ dependencies = [
177
+ "numpy",
178
+ "peritheos-core",
179
+ "peritheos-fit",
180
+ "pyo3",
181
+ "rayon",
182
+ ]
183
+
184
+ [[package]]
185
+ name = "portable-atomic"
186
+ version = "1.15.0"
187
+ source = "registry+https://github.com/rust-lang/crates.io-index"
188
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
189
+
190
+ [[package]]
191
+ name = "portable-atomic-util"
192
+ version = "0.2.7"
193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
194
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
195
+ dependencies = [
196
+ "portable-atomic",
197
+ ]
198
+
199
+ [[package]]
200
+ name = "ppv-lite86"
201
+ version = "0.2.21"
202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
203
+ checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
204
+ dependencies = [
205
+ "zerocopy",
206
+ ]
207
+
208
+ [[package]]
209
+ name = "proc-macro2"
210
+ version = "1.0.107"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
213
+ dependencies = [
214
+ "unicode-ident",
215
+ ]
216
+
217
+ [[package]]
218
+ name = "pyo3"
219
+ version = "0.29.2"
220
+ source = "registry+https://github.com/rust-lang/crates.io-index"
221
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
222
+ dependencies = [
223
+ "libc",
224
+ "once_cell",
225
+ "portable-atomic",
226
+ "pyo3-build-config",
227
+ "pyo3-ffi",
228
+ "pyo3-macros",
229
+ ]
230
+
231
+ [[package]]
232
+ name = "pyo3-build-config"
233
+ version = "0.29.2"
234
+ source = "registry+https://github.com/rust-lang/crates.io-index"
235
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
236
+ dependencies = [
237
+ "target-lexicon",
238
+ ]
239
+
240
+ [[package]]
241
+ name = "pyo3-ffi"
242
+ version = "0.29.2"
243
+ source = "registry+https://github.com/rust-lang/crates.io-index"
244
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
245
+ dependencies = [
246
+ "libc",
247
+ "pyo3-build-config",
248
+ ]
249
+
250
+ [[package]]
251
+ name = "pyo3-macros"
252
+ version = "0.29.2"
253
+ source = "registry+https://github.com/rust-lang/crates.io-index"
254
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
255
+ dependencies = [
256
+ "proc-macro2",
257
+ "pyo3-macros-backend",
258
+ "quote",
259
+ "syn 2.0.119",
260
+ ]
261
+
262
+ [[package]]
263
+ name = "pyo3-macros-backend"
264
+ version = "0.29.2"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
267
+ dependencies = [
268
+ "heck",
269
+ "proc-macro2",
270
+ "quote",
271
+ "syn 2.0.119",
272
+ ]
273
+
274
+ [[package]]
275
+ name = "quote"
276
+ version = "1.0.47"
277
+ source = "registry+https://github.com/rust-lang/crates.io-index"
278
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
279
+ dependencies = [
280
+ "proc-macro2",
281
+ ]
282
+
283
+ [[package]]
284
+ name = "rand"
285
+ version = "0.8.8"
286
+ source = "registry+https://github.com/rust-lang/crates.io-index"
287
+ checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c"
288
+ dependencies = [
289
+ "libc",
290
+ "rand_chacha",
291
+ "rand_core",
292
+ ]
293
+
294
+ [[package]]
295
+ name = "rand_chacha"
296
+ version = "0.3.1"
297
+ source = "registry+https://github.com/rust-lang/crates.io-index"
298
+ checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
299
+ dependencies = [
300
+ "ppv-lite86",
301
+ "rand_core",
302
+ ]
303
+
304
+ [[package]]
305
+ name = "rand_core"
306
+ version = "0.6.4"
307
+ source = "registry+https://github.com/rust-lang/crates.io-index"
308
+ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
309
+ dependencies = [
310
+ "getrandom",
311
+ ]
312
+
313
+ [[package]]
314
+ name = "rawpointer"
315
+ version = "0.2.1"
316
+ source = "registry+https://github.com/rust-lang/crates.io-index"
317
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
318
+
319
+ [[package]]
320
+ name = "rayon"
321
+ version = "1.12.0"
322
+ source = "registry+https://github.com/rust-lang/crates.io-index"
323
+ checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
324
+ dependencies = [
325
+ "either",
326
+ "rayon-core",
327
+ ]
328
+
329
+ [[package]]
330
+ name = "rayon-core"
331
+ version = "1.13.0"
332
+ source = "registry+https://github.com/rust-lang/crates.io-index"
333
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
334
+ dependencies = [
335
+ "crossbeam-deque",
336
+ "crossbeam-utils",
337
+ ]
338
+
339
+ [[package]]
340
+ name = "rustc-hash"
341
+ version = "2.1.3"
342
+ source = "registry+https://github.com/rust-lang/crates.io-index"
343
+ checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
344
+
345
+ [[package]]
346
+ name = "serde"
347
+ version = "1.0.229"
348
+ source = "registry+https://github.com/rust-lang/crates.io-index"
349
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
350
+ dependencies = [
351
+ "serde_core",
352
+ "serde_derive",
353
+ ]
354
+
355
+ [[package]]
356
+ name = "serde_core"
357
+ version = "1.0.229"
358
+ source = "registry+https://github.com/rust-lang/crates.io-index"
359
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
360
+ dependencies = [
361
+ "serde_derive",
362
+ ]
363
+
364
+ [[package]]
365
+ name = "serde_derive"
366
+ version = "1.0.229"
367
+ source = "registry+https://github.com/rust-lang/crates.io-index"
368
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
369
+ dependencies = [
370
+ "proc-macro2",
371
+ "quote",
372
+ "syn 3.0.4",
373
+ ]
374
+
375
+ [[package]]
376
+ name = "serde_json"
377
+ version = "1.0.151"
378
+ source = "registry+https://github.com/rust-lang/crates.io-index"
379
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
380
+ dependencies = [
381
+ "itoa",
382
+ "memchr",
383
+ "serde",
384
+ "serde_core",
385
+ "zmij",
386
+ ]
387
+
388
+ [[package]]
389
+ name = "syn"
390
+ version = "2.0.119"
391
+ source = "registry+https://github.com/rust-lang/crates.io-index"
392
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
393
+ dependencies = [
394
+ "proc-macro2",
395
+ "quote",
396
+ "unicode-ident",
397
+ ]
398
+
399
+ [[package]]
400
+ name = "syn"
401
+ version = "3.0.4"
402
+ source = "registry+https://github.com/rust-lang/crates.io-index"
403
+ checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
404
+ dependencies = [
405
+ "proc-macro2",
406
+ "quote",
407
+ "unicode-ident",
408
+ ]
409
+
410
+ [[package]]
411
+ name = "target-lexicon"
412
+ version = "0.13.5"
413
+ source = "registry+https://github.com/rust-lang/crates.io-index"
414
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
415
+
416
+ [[package]]
417
+ name = "unicode-ident"
418
+ version = "1.0.24"
419
+ source = "registry+https://github.com/rust-lang/crates.io-index"
420
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
421
+
422
+ [[package]]
423
+ name = "wasi"
424
+ version = "0.11.1+wasi-snapshot-preview1"
425
+ source = "registry+https://github.com/rust-lang/crates.io-index"
426
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
427
+
428
+ [[package]]
429
+ name = "zerocopy"
430
+ version = "0.8.56"
431
+ source = "registry+https://github.com/rust-lang/crates.io-index"
432
+ checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
433
+ dependencies = [
434
+ "zerocopy-derive",
435
+ ]
436
+
437
+ [[package]]
438
+ name = "zerocopy-derive"
439
+ version = "0.8.56"
440
+ source = "registry+https://github.com/rust-lang/crates.io-index"
441
+ checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
442
+ dependencies = [
443
+ "proc-macro2",
444
+ "quote",
445
+ "syn 2.0.119",
446
+ ]
447
+
448
+ [[package]]
449
+ name = "zmij"
450
+ version = "1.0.23"
451
+ source = "registry+https://github.com/rust-lang/crates.io-index"
452
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
@@ -0,0 +1,20 @@
1
+ [workspace]
2
+ members = ["crates/peritheos-core", "crates/peritheos-fit", "crates/peritheos-python"]
3
+ resolver = "2"
4
+
5
+ [workspace.package]
6
+ version = "0.6.0"
7
+ edition = "2021"
8
+ rust-version = "1.83"
9
+ authors = ["Clemens Prescher <clemens.prescher@gmail.com>"]
10
+ license = "MIT"
11
+ repository = "https://github.com/CPrescher/peritheos"
12
+ keywords = ["equation-of-state", "high-pressure", "thermodynamics"]
13
+ categories = ["science"]
14
+
15
+ [workspace.lints.rust]
16
+ unsafe_code = "forbid"
17
+
18
+ [workspace.lints.clippy]
19
+ all = "warn"
20
+ pedantic = "warn"
@@ -1,15 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: peritheos
3
- Version: 0.5.0
4
- Summary: A library for thermodynamic equations of state calculations
5
- Author-email: Clemens Prescher <clemens.prescher@gmail.com>
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/cprescher/peritheos
8
- Project-URL: Documentation, https://peritheos.readthedocs.io/
9
- Project-URL: Source, https://github.com/cprescher/peritheos
10
- Project-URL: Bug Tracker, https://github.com/cprescher/peritheos/issues
11
- Project-URL: Changelog, https://github.com/cprescher/peritheos/blob/main/CHANGELOG.md
12
- Keywords: equation-of-state,high-pressure,thermodynamics
3
+ Version: 0.6.0
13
4
  Classifier: Development Status :: 4 - Beta
14
5
  Classifier: Intended Audience :: Science/Research
15
6
  Classifier: Programming Language :: Python :: 3
@@ -19,19 +10,30 @@ Classifier: Programming Language :: Python :: 3.11
19
10
  Classifier: Programming Language :: Python :: 3.12
20
11
  Classifier: Programming Language :: Python :: 3.13
21
12
  Classifier: Programming Language :: Python :: 3.14
22
- Classifier: Operating System :: OS Independent
23
13
  Classifier: Topic :: Scientific/Engineering :: Physics
24
- Requires-Python: >=3.9
25
- Description-Content-Type: text/markdown
26
- License-File: LICENSE
27
14
  Requires-Dist: numpy>=1.21.0
28
15
  Requires-Dist: scipy>=1.9.3
29
- Dynamic: license-file
16
+ License-File: LICENSE
17
+ Summary: A library for thermodynamic equations of state calculations
18
+ Keywords: equation-of-state,high-pressure,thermodynamics
19
+ Author-email: Clemens Prescher <clemens.prescher@gmail.com>
20
+ License-Expression: MIT
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
23
+ Project-URL: Bug Tracker, https://github.com/cprescher/peritheos/issues
24
+ Project-URL: Changelog, https://github.com/cprescher/peritheos/blob/main/CHANGELOG.md
25
+ Project-URL: Documentation, https://peritheos.readthedocs.io/
26
+ Project-URL: Homepage, https://github.com/cprescher/peritheos
27
+ Project-URL: Source, https://github.com/cprescher/peritheos
30
28
 
31
29
  # Peritheos
32
30
 
33
31
  A Python library for thermodynamic equations of state calculations for solid materials.
34
32
 
33
+ Built-in EOS evaluation, inversion, bounded robust fitting, and uncertainty
34
+ statistics are implemented in Rust and exposed through the unchanged Python API.
35
+ NumPy broadcasting and user-defined `EosBase` subclasses remain supported.
36
+
35
37
  Full model, fitting, units, and development documentation is available at
36
38
  [peritheos.readthedocs.io](https://peritheos.readthedocs.io/).
37
39
  Release history is recorded in the [changelog](CHANGELOG.md).
@@ -48,14 +50,21 @@ Release history is recorded in the [changelog](CHANGELOG.md).
48
50
  - Thermal equations of state (EOS) implementations
49
51
  - Mie-Gruneisen-Debye
50
52
  - Mie-Gruneisen-Einstein
53
+ - Linear thermal pressure
51
54
  - Holland-Powell thermal modified Tait
52
- - Sokolova 2016, including its complete thermal-pressure parameter set
55
+ - Multi-oscillator Gruneisen thermal pressure
53
56
  - P-V and P-V-T parameter fitting with covariance and diagnostics
54
57
  - Joint reference-isotherm and thermal fitting with cross-covariance
55
58
  - Correlated observation errors and robust least-squares losses
56
59
  - Reproducible fit summaries and versioned JSON export
57
60
  - EOS prediction uncertainty from fitted covariance or published parameter errors
58
61
  - Thermoelastic derivatives, heat capacities, and vibrational potentials
62
+ - Versioned material and EOS-record catalog with explicit literature provenance,
63
+ validity envelopes, inversion, and measurement/parameter uncertainty
64
+ - A Peritheos-owned `.eosmat` schema and 115-material/146-record EOS library with optional
65
+ diffraction structure, stable identifiers, and Dioptas 0.10 storage-read
66
+ compatibility
67
+ - Native wheels for supported CPython releases on Linux, macOS, and Windows
59
68
 
60
69
  ## Unit conventions
61
70
 
@@ -63,8 +72,10 @@ Release history is recorded in the [changelog](CHANGELOG.md).
63
72
  - Temperatures are in K.
64
73
  - Birch-Murnaghan, Murnaghan, modified Tait, and Vinet accept any consistent
65
74
  volume unit.
66
- - Holzapfel and all thermal EOS implementations require molar volume in
75
+ - Holzapfel and energy-based thermal EOS implementations require molar volume in
67
76
  J bar^-1 mol^-1, which is equivalent to cm^3/mol divided by 10.
77
+ - The volume-independent linear thermal-pressure correction uses the same
78
+ volume convention as its reference isotherm.
68
79
 
69
80
  ## Installation
70
81
 
@@ -80,6 +91,40 @@ pip install git+https://github.com/CPrescher/peritheos.git
80
91
 
81
92
  ## Usage
82
93
 
94
+ ### Materials and EOS records
95
+
96
+ Materials group one or more literature-specific EOS records. The calculation
97
+ API uses GPa, K, and conventional unit-cell volumes in angstrom cubed. Each EOS
98
+ record carries its primary reference, parameter provenance, validity range, and
99
+ uncertainty assumptions.
100
+
101
+ ```python
102
+ from peritheos import get_material
103
+
104
+ mgo = get_material("mgo_b1")
105
+ tange = mgo.get_eos_record("mgo_b1_tange_2009_vinet")
106
+ pressure = tange.pressure(volume=60.0, temperature=2000.0)
107
+ recovered_volume = tange.volume(pressure, temperature=2000.0)
108
+
109
+ prediction = tange.pressure_with_uncertainty(
110
+ volume=60.0,
111
+ temperature=2000.0,
112
+ volume_sigma=0.02,
113
+ temperature_sigma=20.0,
114
+ )
115
+
116
+ # Sokolova markers use the same cell-volume API although their composed EOS
117
+ # works internally with molar volume.
118
+ gold = get_material("au_fcc").get_eos_record("au_fcc_sokolova_2013")
119
+ hot_pressure = gold.pressure(volume=55.0, temperature=2000.0)
120
+ ```
121
+
122
+ See [Pressure standards](docs/pressure-standards.md) for EOS records commonly
123
+ used in that application, and [Dioptas and `.eosmat`](docs/dioptas-integration.md)
124
+ for the shared material library. The [`.eosmat` schema reference](docs/eosmat-schema.md)
125
+ defines its fields, equation discriminators, defaults, units, and compatibility
126
+ rules.
127
+
83
128
  ### Room-temperature equations of state
84
129
 
85
130
  Third-order Birch-Murnaghan equation of state:
@@ -144,11 +189,11 @@ The two-volume method uses the empirical `f_dac * thermal_pressure` confinement
144
189
  increment and requires `0 <= f_dac < 1`; report and sensitivity-test the assumed
145
190
  fraction.
146
191
 
147
- Diamond thermal equation of state from sokolova et al. 2016
192
+ Multi-oscillator thermal EOS with a freely chosen reference isotherm
148
193
 
149
194
  ```python
150
195
  from peritheos.eos.rt.holzapfel import Holzapfel
151
- from peritheos.eos.thermal.sokolova2016 import Sokolova2016
196
+ from peritheos.eos.thermal import MultiOscillatorGruneisenThermalEOS
152
197
 
153
198
  # Diamond parameters from Sokolova et al. 2016.
154
199
  # The thermal model requires molar volume in J bar^-1 (= [cm^3/mol] / 10),
@@ -156,10 +201,10 @@ from peritheos.eos.thermal.sokolova2016 import Sokolova2016
156
201
  V0 = 0.3414
157
202
  K0 = 441.5
158
203
  K0_prime = 3.9 # pressure derivative of bulk modulus at reference volume
159
- QE1o = 684 # first Einstein characteristic temperature
160
- mE1 = 0.564 # first Einstein number
161
- QE2o = 1561 # second Einstein characteristic temperature
162
- mE2 = 2.436 # second Einstein number
204
+ QE1o = 1561 # first Einstein characteristic temperature
205
+ mE1 = 2.436 # first Einstein number
206
+ QE2o = 684 # second Einstein characteristic temperature
207
+ mE2 = 0.564 # second Einstein number
163
208
  delta = -0.506 # additive normalizing constant for the Gruneisen parameter
164
209
  t = 1.085 # generalized Gruneisen parameter
165
210
  a_0 = 0 # intrinsic anharmonicity parameter
@@ -174,8 +219,8 @@ Tr = 298.15 # in K - Reference temperature
174
219
  # Initialize the Holzapfel EOS
175
220
  holzapfel = Holzapfel(V0=V0, K0=K0, K0_prime=K0_prime, n=n, Z=z)
176
221
 
177
- # Initialize the Sokolova 2016 EOS
178
- sokolova = Sokolova2016(
222
+ # Compose the thermal correction with the source's Holzapfel isotherm.
223
+ eos = MultiOscillatorGruneisenThermalEOS(
179
224
  rt_eos=holzapfel,
180
225
  Tr=Tr,
181
226
  QE1o=QE1o,
@@ -188,16 +233,17 @@ sokolova = Sokolova2016(
188
233
  m=m,
189
234
  g=g,
190
235
  e_0=e_0,
236
+ n=n,
191
237
  )
192
238
 
193
239
  # Calculate the thermal pressure at a given volume and temperature
194
240
  V = V0 * 0.8
195
241
  T = 3000 # in K
196
- thermal_pressure = sokolova.thermal_pressure(V, T)
242
+ thermal_pressure = eos.thermal_pressure(V, T)
197
243
  rt_pressure = holzapfel.pressure(V)
198
- pressure = sokolova.pressure(V, T)
199
- recovered_volume = sokolova.volume(pressure, T)
200
- recovered_temperature = sokolova.temperature(pressure, V)
244
+ pressure = eos.pressure(V, T)
245
+ recovered_volume = eos.volume(pressure, T)
246
+ recovered_temperature = eos.temperature(pressure, V)
201
247
 
202
248
  print(f"Thermal pressure: {thermal_pressure} GPa")
203
249
  print(f"RT pressure: {rt_pressure} GPa")
@@ -206,9 +252,15 @@ print(f"Recovered volume: {recovered_volume} J bar^-1")
206
252
  print(f"Recovered temperature: {recovered_temperature} K")
207
253
  ```
208
254
 
255
+ The equation class is named for its mechanism, not a paper. The validated
256
+ Sokolova et al. parameterizations remain available through author/year catalog
257
+ identifiers such as `diamond_sokolova_2013`; replacing the reference isotherm
258
+ creates a new user-composed model and does not inherit that validation claim.
259
+
209
260
  ## Citation and support
210
261
 
211
262
  Use the repository's `CITATION.cff` to cite Peritheos and cite the original
212
263
  publication for each EOS used. Reproducible bugs and numerical discrepancies
213
264
  can be reported through [GitHub Issues](https://github.com/CPrescher/peritheos/issues).
214
265
  See [SUPPORT.md](SUPPORT.md) for the information needed to investigate a result.
266
+