peritheos 0.4.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 (258) hide show
  1. peritheos-0.6.0/Cargo.lock +452 -0
  2. peritheos-0.6.0/Cargo.toml +20 -0
  3. {peritheos-0.4.0/peritheos.egg-info → peritheos-0.6.0}/PKG-INFO +101 -29
  4. peritheos-0.4.0/PKG-INFO → peritheos-0.6.0/README.md +86 -43
  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.4.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.4.0 → peritheos-0.6.0}/docs/api-stability.md +24 -0
  32. peritheos-0.6.0/docs/api.md +305 -0
  33. peritheos-0.6.0/docs/dac-thermal-pressure.md +145 -0
  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.4.0 → peritheos-0.6.0}/docs/fitting.md +108 -8
  39. peritheos-0.6.0/docs/getting-started.md +109 -0
  40. peritheos-0.6.0/docs/index.md +77 -0
  41. peritheos-0.6.0/docs/javascripts/mathjax.js +12 -0
  42. peritheos-0.6.0/docs/models.md +101 -0
  43. peritheos-0.6.0/docs/notebooks/aragonite-eos-fitting.ipynb +661 -0
  44. peritheos-0.6.0/docs/notebooks/compare-gold-pressure-scales.ipynb +322 -0
  45. peritheos-0.6.0/docs/notebooks/compare-room-temperature-eos.ipynb +374 -0
  46. peritheos-0.6.0/docs/notebooks/dac-temperature-sensitivity.ipynb +399 -0
  47. peritheos-0.6.0/docs/notebooks/data/martinez-1996-aragonite-table3.csv +65 -0
  48. peritheos-0.6.0/docs/notebooks/eosmat-roundtrip.ipynb +326 -0
  49. peritheos-0.6.0/docs/notebooks/exploring-material-library.ipynb +368 -0
  50. peritheos-0.6.0/docs/notebooks/fit-to-prediction-uncertainty.ipynb +364 -0
  51. peritheos-0.6.0/docs/notebooks/pressure-calibration-quickstart.ipynb +346 -0
  52. peritheos-0.6.0/docs/notebooks/thermal-eos-state-surfaces.ipynb +323 -0
  53. peritheos-0.6.0/docs/pressure-standards.md +457 -0
  54. peritheos-0.6.0/docs/references.md +310 -0
  55. peritheos-0.6.0/docs/requirements.txt +5 -0
  56. peritheos-0.6.0/docs/rust-completion-plan.md +48 -0
  57. peritheos-0.6.0/docs/rust-migration.md +285 -0
  58. peritheos-0.6.0/docs/scirs2-feasibility.md +193 -0
  59. {peritheos-0.4.0 → peritheos-0.6.0}/docs/thermoelastic-properties.md +31 -3
  60. {peritheos-0.4.0 → peritheos-0.6.0}/docs/uncertainty.md +63 -3
  61. peritheos-0.6.0/docs/units.md +84 -0
  62. peritheos-0.6.0/docs/validation.md +334 -0
  63. peritheos-0.6.0/mkdocs.yml +74 -0
  64. peritheos-0.6.0/peritheos/__init__.py +50 -0
  65. peritheos-0.6.0/peritheos/data/__init__.py +1 -0
  66. peritheos-0.6.0/peritheos/data/eosmat-v3.schema.json +461 -0
  67. peritheos-0.6.0/peritheos/data/materials/DIOPTAS_LICENSE.txt +24 -0
  68. peritheos-0.6.0/peritheos/data/materials/README.md +101 -0
  69. peritheos-0.6.0/peritheos/data/materials/__init__.py +1 -0
  70. peritheos-0.6.0/peritheos/data/materials/akimotoite.eosmat +125 -0
  71. peritheos-0.6.0/peritheos/data/materials/almandine.eosmat +133 -0
  72. peritheos-0.6.0/peritheos/data/materials/alpha_quartz.eosmat +116 -0
  73. peritheos-0.6.0/peritheos/data/materials/alumina.eosmat +165 -0
  74. peritheos-0.6.0/peritheos/data/materials/aluminum.eosmat +275 -0
  75. peritheos-0.6.0/peritheos/data/materials/aragonite.eosmat +155 -0
  76. peritheos-0.6.0/peritheos/data/materials/argon_hcp.eosmat +102 -0
  77. peritheos-0.6.0/peritheos/data/materials/b4c.eosmat +151 -0
  78. peritheos-0.6.0/peritheos/data/materials/boron_nitride.eosmat +114 -0
  79. peritheos-0.6.0/peritheos/data/materials/boron_nitride_hexagonal.eosmat +118 -0
  80. peritheos-0.6.0/peritheos/data/materials/boron_phosphide.eosmat +123 -0
  81. peritheos-0.6.0/peritheos/data/materials/bridgmanite.eosmat +303 -0
  82. peritheos-0.6.0/peritheos/data/materials/ca_perovskite.eosmat +213 -0
  83. peritheos-0.6.0/peritheos/data/materials/calcite.eosmat +119 -0
  84. peritheos-0.6.0/peritheos/data/materials/calcium_carbonate_post_aragonite.eosmat +236 -0
  85. peritheos-0.6.0/peritheos/data/materials/cao.eosmat +127 -0
  86. peritheos-0.6.0/peritheos/data/materials/cao_b2.eosmat +131 -0
  87. peritheos-0.6.0/peritheos/data/materials/cementite.eosmat +132 -0
  88. peritheos-0.6.0/peritheos/data/materials/cerium_dioxide.eosmat +119 -0
  89. peritheos-0.6.0/peritheos/data/materials/chromium.eosmat +106 -0
  90. peritheos-0.6.0/peritheos/data/materials/cobalt_hcp.eosmat +105 -0
  91. peritheos-0.6.0/peritheos/data/materials/coesite.eosmat +150 -0
  92. peritheos-0.6.0/peritheos/data/materials/coo.eosmat +165 -0
  93. peritheos-0.6.0/peritheos/data/materials/copper.eosmat +272 -0
  94. peritheos-0.6.0/peritheos/data/materials/cscl.eosmat +122 -0
  95. peritheos-0.6.0/peritheos/data/materials/diamond.eosmat +500 -0
  96. peritheos-0.6.0/peritheos/data/materials/e_feooh.eosmat +124 -0
  97. peritheos-0.6.0/peritheos/data/materials/fayalite.eosmat +151 -0
  98. peritheos-0.6.0/peritheos/data/materials/fe.eosmat +112 -0
  99. peritheos-0.6.0/peritheos/data/materials/fe2o3.eosmat +116 -0
  100. peritheos-0.6.0/peritheos/data/materials/fe3o4.eosmat +134 -0
  101. peritheos-0.6.0/peritheos/data/materials/fe3s.eosmat +221 -0
  102. peritheos-0.6.0/peritheos/data/materials/feh2.eosmat +168 -0
  103. peritheos-0.6.0/peritheos/data/materials/feh3.eosmat +116 -0
  104. peritheos-0.6.0/peritheos/data/materials/feo.eosmat +121 -0
  105. peritheos-0.6.0/peritheos/data/materials/feo_b8_2.eosmat +121 -0
  106. peritheos-0.6.0/peritheos/data/materials/fes.eosmat +114 -0
  107. peritheos-0.6.0/peritheos/data/materials/forsterite.eosmat +149 -0
  108. peritheos-0.6.0/peritheos/data/materials/geo2_rutile.eosmat +142 -0
  109. peritheos-0.6.0/peritheos/data/materials/goethite.eosmat +126 -0
  110. peritheos-0.6.0/peritheos/data/materials/gold.eosmat +578 -0
  111. peritheos-0.6.0/peritheos/data/materials/graphite.eosmat +124 -0
  112. peritheos-0.6.0/peritheos/data/materials/ice_vi.eosmat +180 -0
  113. peritheos-0.6.0/peritheos/data/materials/ice_vii.eosmat +220 -0
  114. peritheos-0.6.0/peritheos/data/materials/iceviii.eosmat +348 -0
  115. peritheos-0.6.0/peritheos/data/materials/indium_nitride.eosmat +138 -0
  116. peritheos-0.6.0/peritheos/data/materials/iridium.eosmat +111 -0
  117. peritheos-0.6.0/peritheos/data/materials/iron.eosmat +175 -0
  118. peritheos-0.6.0/peritheos/data/materials/iron_carbide_fe7c3.eosmat +197 -0
  119. peritheos-0.6.0/peritheos/data/materials/kbr_b1.eosmat +121 -0
  120. peritheos-0.6.0/peritheos/data/materials/kbr_b2.eosmat +121 -0
  121. peritheos-0.6.0/peritheos/data/materials/kcl.eosmat +418 -0
  122. peritheos-0.6.0/peritheos/data/materials/kcl_b1.eosmat +121 -0
  123. peritheos-0.6.0/peritheos/data/materials/lead_fcc.eosmat +109 -0
  124. peritheos-0.6.0/peritheos/data/materials/li_bcc.eosmat +140 -0
  125. peritheos-0.6.0/peritheos/data/materials/lif_b1.eosmat +115 -0
  126. peritheos-0.6.0/peritheos/data/materials/magnesite.eosmat +141 -0
  127. peritheos-0.6.0/peritheos/data/materials/magnesium_bcc.eosmat +114 -0
  128. peritheos-0.6.0/peritheos/data/materials/magnesium_hcp.eosmat +114 -0
  129. peritheos-0.6.0/peritheos/data/materials/majorite.eosmat +834 -0
  130. peritheos-0.6.0/peritheos/data/materials/manganese_alpha.eosmat +136 -0
  131. peritheos-0.6.0/peritheos/data/materials/manifest.json +21 -0
  132. peritheos-0.6.0/peritheos/data/materials/mg7si2o8.eosmat +336 -0
  133. peritheos-0.6.0/peritheos/data/materials/mgfe60o.eosmat +180 -0
  134. peritheos-0.6.0/peritheos/data/materials/mgo.eosmat +427 -0
  135. peritheos-0.6.0/peritheos/data/materials/mgsio3_post_perovskite.eosmat +209 -0
  136. peritheos-0.6.0/peritheos/data/materials/molybdenum.eosmat +273 -0
  137. peritheos-0.6.0/peritheos/data/materials/molybenum_carbide_mo2c.eosmat +152 -0
  138. peritheos-0.6.0/peritheos/data/materials/naalsi2o6.eosmat +184 -0
  139. peritheos-0.6.0/peritheos/data/materials/naalsio4_calcium_ferrite.eosmat +168 -0
  140. peritheos-0.6.0/peritheos/data/materials/nacl_b1.eosmat +116 -0
  141. peritheos-0.6.0/peritheos/data/materials/nacl_b2.eosmat +179 -0
  142. peritheos-0.6.0/peritheos/data/materials/neon_fcc.eosmat +201 -0
  143. peritheos-0.6.0/peritheos/data/materials/nickel.eosmat +105 -0
  144. peritheos-0.6.0/peritheos/data/materials/nickel_oxide.eosmat +124 -0
  145. peritheos-0.6.0/peritheos/data/materials/niobium.eosmat +299 -0
  146. peritheos-0.6.0/peritheos/data/materials/nis.eosmat +122 -0
  147. peritheos-0.6.0/peritheos/data/materials/orthoenstatite.eosmat +180 -0
  148. peritheos-0.6.0/peritheos/data/materials/osmium.eosmat +106 -0
  149. peritheos-0.6.0/peritheos/data/materials/palladium.eosmat +106 -0
  150. peritheos-0.6.0/peritheos/data/materials/pbs_b1.eosmat +147 -0
  151. peritheos-0.6.0/peritheos/data/materials/perovskite_orthorhombic.eosmat +1186 -0
  152. peritheos-0.6.0/peritheos/data/materials/phase_d.eosmat +630 -0
  153. peritheos-0.6.0/peritheos/data/materials/platinum.eosmat +422 -0
  154. peritheos-0.6.0/peritheos/data/materials/praseodymium_dioxide.eosmat +119 -0
  155. peritheos-0.6.0/peritheos/data/materials/pyrope.eosmat +133 -0
  156. peritheos-0.6.0/peritheos/data/materials/rhenium.eosmat +107 -0
  157. peritheos-0.6.0/peritheos/data/materials/rhodium.eosmat +110 -0
  158. peritheos-0.6.0/peritheos/data/materials/ringwoodite.eosmat +136 -0
  159. peritheos-0.6.0/peritheos/data/materials/ruthenium.eosmat +110 -0
  160. peritheos-0.6.0/peritheos/data/materials/seifertite.eosmat +150 -0
  161. peritheos-0.6.0/peritheos/data/materials/silica_cacl2.eosmat +150 -0
  162. peritheos-0.6.0/peritheos/data/materials/silicon.eosmat +109 -0
  163. peritheos-0.6.0/peritheos/data/materials/silicon_carbide_b1.eosmat +116 -0
  164. peritheos-0.6.0/peritheos/data/materials/silicon_carbide_b3.eosmat +118 -0
  165. peritheos-0.6.0/peritheos/data/materials/silicon_v.eosmat +108 -0
  166. peritheos-0.6.0/peritheos/data/materials/silicon_vii.eosmat +108 -0
  167. peritheos-0.6.0/peritheos/data/materials/silicon_x.eosmat +108 -0
  168. peritheos-0.6.0/peritheos/data/materials/silver.eosmat +270 -0
  169. peritheos-0.6.0/peritheos/data/materials/sio2_stv_andr.eosmat +111 -0
  170. peritheos-0.6.0/peritheos/data/materials/sno2.eosmat +142 -0
  171. peritheos-0.6.0/peritheos/data/materials/sno2_cubic_27gpa.eosmat +203 -0
  172. peritheos-0.6.0/peritheos/data/materials/sno2_pa_3_at_48gpa.eosmat +203 -0
  173. peritheos-0.6.0/peritheos/data/materials/sro.eosmat +129 -0
  174. peritheos-0.6.0/peritheos/data/materials/sro_b2.eosmat +120 -0
  175. peritheos-0.6.0/peritheos/data/materials/tantalum.eosmat +381 -0
  176. peritheos-0.6.0/peritheos/data/materials/titanium_alpha.eosmat +114 -0
  177. peritheos-0.6.0/peritheos/data/materials/titanium_omega.eosmat +120 -0
  178. peritheos-0.6.0/peritheos/data/materials/tungsten.eosmat +342 -0
  179. peritheos-0.6.0/peritheos/data/materials/wadsleyite.eosmat +260 -0
  180. peritheos-0.6.0/peritheos/data/materials/zinc_oxide_rocksalt.eosmat +115 -0
  181. peritheos-0.6.0/peritheos/data/materials/zinc_oxide_wurtzite.eosmat +119 -0
  182. peritheos-0.6.0/peritheos/data/materials/zircon.eosmat +177 -0
  183. peritheos-0.6.0/peritheos/data/materials/zirconium_alpha.eosmat +118 -0
  184. peritheos-0.6.0/peritheos/data/materials/zirconium_beta.eosmat +117 -0
  185. peritheos-0.6.0/peritheos/data/materials/zirconium_omega.eosmat +124 -0
  186. peritheos-0.6.0/peritheos/data/primary-source-audit.json +2738 -0
  187. peritheos-0.6.0/peritheos/eos/__init__.py +838 -0
  188. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/bm.py +13 -42
  189. peritheos-0.6.0/peritheos/eos/rt/holzapfel.py +140 -0
  190. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/murnaghan.py +5 -9
  191. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/natural_strain.py +11 -31
  192. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/tait.py +7 -4
  193. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/vinet.py +5 -9
  194. peritheos-0.6.0/peritheos/eos/thermal/__init__.py +32 -0
  195. peritheos-0.6.0/peritheos/eos/thermal/double_debye_helmholtz.py +444 -0
  196. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/thermal/holland_powell.py +29 -0
  197. peritheos-0.6.0/peritheos/eos/thermal/linear.py +280 -0
  198. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/thermal/mie_gruneisen.py +231 -3
  199. peritheos-0.4.0/peritheos/eos/thermal/sokolova2016.py → peritheos-0.6.0/peritheos/eos/thermal/multi_oscillator.py +154 -78
  200. peritheos-0.6.0/peritheos/eos/thermal/sokolova2016.py +16 -0
  201. peritheos-0.6.0/peritheos/eosmat.py +458 -0
  202. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/fitting.py +180 -18
  203. peritheos-0.6.0/peritheos/materials.py +3095 -0
  204. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/uncertainty.py +39 -15
  205. {peritheos-0.4.0 → peritheos-0.6.0}/pyproject.toml +20 -9
  206. peritheos-0.6.0/scripts/apply_primary_source_audit.py +2884 -0
  207. peritheos-0.6.0/scripts/compare_external_black_boxes.py +123 -0
  208. peritheos-0.6.0/scripts/import_dioptas_eos_database.py +200 -0
  209. peritheos-0.6.0/scripts/verify-rust-packages.sh +32 -0
  210. peritheos-0.4.0/CHANGELOG.md +0 -108
  211. peritheos-0.4.0/CITATION.cff +0 -20
  212. peritheos-0.4.0/CODE_OF_CONDUCT.md +0 -19
  213. peritheos-0.4.0/CONTRIBUTING.md +0 -46
  214. peritheos-0.4.0/MANIFEST.in +0 -9
  215. peritheos-0.4.0/README.md +0 -164
  216. peritheos-0.4.0/SECURITY.md +0 -25
  217. peritheos-0.4.0/SUPPORT.md +0 -14
  218. peritheos-0.4.0/docs/api.md +0 -105
  219. peritheos-0.4.0/docs/development.md +0 -40
  220. peritheos-0.4.0/docs/getting-started.md +0 -68
  221. peritheos-0.4.0/docs/index.md +0 -47
  222. peritheos-0.4.0/docs/models.md +0 -82
  223. peritheos-0.4.0/docs/references.md +0 -35
  224. peritheos-0.4.0/docs/requirements.txt +0 -1
  225. peritheos-0.4.0/docs/units.md +0 -45
  226. peritheos-0.4.0/docs/validation.md +0 -60
  227. peritheos-0.4.0/mkdocs.yml +0 -25
  228. peritheos-0.4.0/peritheos/__init__.py +0 -16
  229. peritheos-0.4.0/peritheos/eos/__init__.py +0 -410
  230. peritheos-0.4.0/peritheos/eos/rt/holzapfel.py +0 -197
  231. peritheos-0.4.0/peritheos/eos/thermal/__init__.py +0 -15
  232. peritheos-0.4.0/peritheos.egg-info/SOURCES.txt +0 -65
  233. peritheos-0.4.0/peritheos.egg-info/dependency_links.txt +0 -1
  234. peritheos-0.4.0/peritheos.egg-info/requires.txt +0 -2
  235. peritheos-0.4.0/peritheos.egg-info/top_level.txt +0 -1
  236. peritheos-0.4.0/setup.cfg +0 -4
  237. peritheos-0.4.0/tests/test_bm.py +0 -195
  238. peritheos-0.4.0/tests/test_eos_api.py +0 -102
  239. peritheos-0.4.0/tests/test_fitting.py +0 -479
  240. peritheos-0.4.0/tests/test_holzapfel.py +0 -157
  241. peritheos-0.4.0/tests/test_literature_reference_cases.py +0 -63
  242. peritheos-0.4.0/tests/test_murnaghan.py +0 -58
  243. peritheos-0.4.0/tests/test_natural_strain.py +0 -61
  244. peritheos-0.4.0/tests/test_numerical_stress.py +0 -98
  245. peritheos-0.4.0/tests/test_package_metadata.py +0 -17
  246. peritheos-0.4.0/tests/test_tait.py +0 -73
  247. peritheos-0.4.0/tests/test_thermal_mie_gruneisen.py +0 -145
  248. peritheos-0.4.0/tests/test_thermal_sokolova.py +0 -372
  249. peritheos-0.4.0/tests/test_thermoelastic_api.py +0 -134
  250. peritheos-0.4.0/tests/test_uncertainty.py +0 -546
  251. peritheos-0.4.0/tests/test_units.py +0 -43
  252. peritheos-0.4.0/tests/test_vinet.py +0 -97
  253. {peritheos-0.4.0 → peritheos-0.6.0}/LICENSE +0 -0
  254. {peritheos-0.4.0 → peritheos-0.6.0}/docs/project-policies.md +0 -0
  255. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/constants.py +0 -0
  256. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/eos/rt/__init__.py +0 -0
  257. {peritheos-0.4.0 → peritheos-0.6.0}/peritheos/units.py +0 -0
  258. {peritheos-0.4.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.4.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
- Requires-Dist: scipy>=1.7.0
29
- Dynamic: license-file
15
+ Requires-Dist: scipy>=1.9.3
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:
@@ -124,13 +169,31 @@ eos = MieGruneisenDebye(
124
169
 
125
170
  pressure = eos.pressure(V=0.9, T=2000.0)
126
171
  volume = eos.volume(P=pressure, T=2000.0)
172
+ temperature = eos.temperature(P=pressure, V=0.9)
173
+
174
+ # Infer temperature from volumes measured before and during DAC heating.
175
+ ambient_volume = 0.80000
176
+ heated_volume = 0.80001
177
+ temperature_with_dac = eos.temperature_from_volumes(
178
+ V_ambient=ambient_volume,
179
+ V_heated=heated_volume,
180
+ f_dac=0.25,
181
+ )
182
+ ambient_pressure = eos.rt_eos.pressure(ambient_volume)
183
+ heated_pressure = ambient_pressure + 0.25 * eos.thermal_pressure(
184
+ heated_volume, temperature_with_dac
185
+ )
127
186
  ```
128
187
 
129
- Diamond thermal equation of state from sokolova et al. 2016
188
+ The two-volume method uses the empirical `f_dac * thermal_pressure` confinement
189
+ increment and requires `0 <= f_dac < 1`; report and sensitivity-test the assumed
190
+ fraction.
191
+
192
+ Multi-oscillator thermal EOS with a freely chosen reference isotherm
130
193
 
131
194
  ```python
132
195
  from peritheos.eos.rt.holzapfel import Holzapfel
133
- from peritheos.eos.thermal.sokolova2016 import Sokolova2016
196
+ from peritheos.eos.thermal import MultiOscillatorGruneisenThermalEOS
134
197
 
135
198
  # Diamond parameters from Sokolova et al. 2016.
136
199
  # The thermal model requires molar volume in J bar^-1 (= [cm^3/mol] / 10),
@@ -138,10 +201,10 @@ from peritheos.eos.thermal.sokolova2016 import Sokolova2016
138
201
  V0 = 0.3414
139
202
  K0 = 441.5
140
203
  K0_prime = 3.9 # pressure derivative of bulk modulus at reference volume
141
- QE1o = 684 # first Einstein characteristic temperature
142
- mE1 = 0.564 # first Einstein number
143
- QE2o = 1561 # second Einstein characteristic temperature
144
- 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
145
208
  delta = -0.506 # additive normalizing constant for the Gruneisen parameter
146
209
  t = 1.085 # generalized Gruneisen parameter
147
210
  a_0 = 0 # intrinsic anharmonicity parameter
@@ -156,8 +219,8 @@ Tr = 298.15 # in K - Reference temperature
156
219
  # Initialize the Holzapfel EOS
157
220
  holzapfel = Holzapfel(V0=V0, K0=K0, K0_prime=K0_prime, n=n, Z=z)
158
221
 
159
- # Initialize the Sokolova 2016 EOS
160
- sokolova = Sokolova2016(
222
+ # Compose the thermal correction with the source's Holzapfel isotherm.
223
+ eos = MultiOscillatorGruneisenThermalEOS(
161
224
  rt_eos=holzapfel,
162
225
  Tr=Tr,
163
226
  QE1o=QE1o,
@@ -170,25 +233,34 @@ sokolova = Sokolova2016(
170
233
  m=m,
171
234
  g=g,
172
235
  e_0=e_0,
236
+ n=n,
173
237
  )
174
238
 
175
239
  # Calculate the thermal pressure at a given volume and temperature
176
240
  V = V0 * 0.8
177
241
  T = 3000 # in K
178
- thermal_pressure = sokolova.thermal_pressure(V, T)
242
+ thermal_pressure = eos.thermal_pressure(V, T)
179
243
  rt_pressure = holzapfel.pressure(V)
180
- pressure = sokolova.pressure(V, T)
181
- recovered_volume = sokolova.volume(pressure, T)
244
+ pressure = eos.pressure(V, T)
245
+ recovered_volume = eos.volume(pressure, T)
246
+ recovered_temperature = eos.temperature(pressure, V)
182
247
 
183
248
  print(f"Thermal pressure: {thermal_pressure} GPa")
184
249
  print(f"RT pressure: {rt_pressure} GPa")
185
250
  print(f"Total pressure: {pressure} GPa")
186
251
  print(f"Recovered volume: {recovered_volume} J bar^-1")
252
+ print(f"Recovered temperature: {recovered_temperature} K")
187
253
  ```
188
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
+
189
260
  ## Citation and support
190
261
 
191
262
  Use the repository's `CITATION.cff` to cite Peritheos and cite the original
192
263
  publication for each EOS used. Reproducible bugs and numerical discrepancies
193
264
  can be reported through [GitHub Issues](https://github.com/CPrescher/peritheos/issues).
194
265
  See [SUPPORT.md](SUPPORT.md) for the information needed to investigate a result.
266
+