Peritheos 0.7.0
Added
-
Added a 200-record experimental-metal EOS tranche, the Baonza pseudospinodal
EOS with native evaluation and fitting support, and the phase-specific hcp-Pb
material card. The expanded catalog now contains 286 materials and 813
primary-source-validated EOS records. -
Added seven primary-source-validated LitCurate EOS records from four papers:
two Kubo et al. (2000) Mg0.9Al0.2Si0.9O3 bridgmanite BM3 fits, two Kubo et
al. (2006) MgGeO3 post-perovskite sensitivity fits, two Matsui et al. (2012)
high-spin ferropericlase BM3-MGD models, and the Koemets et al. (2023) FA50
Pnma bridgmanite BM2. Complete source tables, phase-specific fit masks,
deterministic reproductions, pressure-scale provenance, and explicit
accept/hold/reject decisions for every same-paper LitCurate row are bundled. -
Added a generated paper-level investigation ledger covering every audited
primary source, including coefficient discrepancies, unavailable direct
refits, and papers withheld or deferred without a production EOS record. -
Added a primary-source-validated absolute-zero Vinet-MGD EOS for cubic boron
nitride from Datchi et al. (2007). The explicit absolute thermal-pressure
baseline reproduces all 66 Table IV states at 0.584 GPa RMSE and the paper's
independent 300 K zero-pressure volume. -
Added Suzuki's (2016) epsilon-FeOOH BM3 thermal EOS with an explicit
reference-temperature linear-expansivity convention, all 33 Table 1 P-V-T
observations, and a refit recovering every free coefficient within 0.40
published standard deviations. -
Added Noguchi et al.'s (2013) non-default 700 K BM2-MGD CaSiO3 perovskite
EOS, preserving its cubic-phase domain, Fei et al. Pt calibration, and
staged-refit parity without redistributing the subscription-only table. -
Audited Katsura et al.'s (2004) 127-row ringwoodite dataset and documented
why its thermal EOS remains excluded: the published coefficients cannot be
reproduced with the chemically required seven-atom normalization. -
Added Fu et al. (2024) BM2 and BM3 records for Fe-Al-bearing bridgmanite,
with the complete 22-row primary compression dataset, Au pressure-scale
provenance, independent reproduction, and record-specific tests. -
Added phase-restricted principal Hugoniots for B1 MgO and B1 NiO. The MgO
relation preserves the published coefficients and uncertainties; the NiO
relation is a documented OLS derivation from all eight published final-state
observations with the elastic precursor excluded. -
Added primary-source-validated Sun et al. (2016, 2022) CaSiO3-perovskite
records: a 300 K tetragonal I4/mcm BM3 isotherm with the published Z=1
volume converted to the conventional Z=4 cell, and a high-temperature cubic
Pm-3m BM3-Mie-Gruneisen-Debye EOS with explicit metastable-reference-state,
phase-validity, and Fei et al. Pt pressure-scale metadata. -
Added the Luo et al. (2023) B1-MgO pressure scale as a 0 K Vinet curve plus
the published absolute second-order thermal-pressure polynomial, with all
five new shock states and the complete 576-value Tables II--III P-V-T grid. -
Added the primary-source-audited Dewaele et al. (2000) B1-MgO BM3-MGD EOS
and all 61 P-V-T observations from its Table 2. The record preserves the
Jamieson platinum pressure basis, distinguishes adopted, fitted, and fixed
quantities, reproduces the paper's 145 GPa BM3 benchmark atV/V0=0.667,
and recoversqwithin combined two-sigma uncertainty from the 41 new heated
rows withgamma0fixed as in the source's staged procedure. The paper's
Murnaghan, Vinet, logarithmic, and alternate
BM3 rows are documented as comparison fits rather than duplicate EOS records. -
Added a primary-source-validated Vinet--Mie--Gruneisen--Debye EOS for cubic
CaSiO3 perovskite from Kawai and Tsuchiya (2014), together with all 60
published Table 1 isochor benchmarks, explicit computational provenance,
source inconsistencies, and a documented raw-data/refit limitation. -
Added the Wang et al. (2012) stishovite Vinet-Mie--Gruneisen--Debye EOS and
all 56 Table 1 P-V-T observations with simultaneous Au calibrant volumes and
printed uncertainties. The source's equally successful BM3 alternative,
300 K thermal reference correction, Tsuchiya (2003) Au calibration lineage,
numerical Table 3 checks, and an errors-in-variables parity refit are fully
documented. -
Added the two distinct Reynard et al. (1996) MgSiO3-akimotoite BM3 fits on
the ruby-fluorescence and preferred ice-VII pressure assignments, together
with all 16 Table 1 unit-cell observations, paired ice-VII calibrant volumes,
pressure-scale provenance, independent high-pressure reproductions, and
parity-checked refits with the published 212 GPa bulk modulus held fixed. -
Added the Schulze et al. (2018) Phase Egg single-crystal BM3 EOS and all 16
printed compression rows, with the excluded ambient observation flagged and
the 15-row fit independently reproduced. The record distinguishes the
analyzedAl0.98Si0.92H1.39O4composition from the idealAlSiO3OH
structural model, traces the hydrogen coordinate to Schmidt et al. (1998),
and explains why the paper's Vanpeteghem-data refit is not a second EOS for
the 2018 specimen. The Dewaele et al. (2008) ruby calibration used by the
experiment is now executable and linked explicitly. -
Added one primary-sourced static 0 K Phase Egg LP BM3 record from Mookherjee
et al. (2019), including the official 11-row supplementary P-V grid,
diffraction-ready Schmidt et al. (1998) structure, published-value
reproduction, and diagnostic coefficient-parity refit. The canonical final
DOI is10.2138/am-2019-6694; the 2018 accepted-manuscript DOI is retained
only as source lineage to prevent a duplicate publication record. -
Added the selected Shi et al. (2022) Rh2O3(II)-type Al2O3 BM3-MGD thermal
EOS as a distinctPbcnphase, with all 75 official supplementary P-T-V
observations, published uncertainties, Pt pressure-scale provenance,
source-state reproduction, and an independent errors-in-variables refit.
The audit documents all eight corundum/Rh2O3(II) sensitivity fits and avoids
treating LitCurate's flattened BM3 rows as independent isothermal records. -
Added the Campbell and Heinz (1994) RbCl-B2 BM3 material, including all 24
Table 1 observations and a parity-checked refit. Corrected the CsCl resource,
which had mistakenly contained an incomplete subset of the RbCl table, and
added all nine Yagi (1978) CsCl compression ratios needed for the complete
22-point parity reproduction. -
Added Birch-Murnaghan Eulerian finite-strain/normalized-stress diagnostics,
including first-order P-V error propagation and fitted-model curves. The
numerical API is plotting-library independent; an executable notebook shows
how to produce the conventional F-f plot with Matplotlib. -
Added phase-specific linear
Us-upshock Hugoniot EOSs in Python and Rust,
including Rankine--Hugoniot pressure-volume inversion, velocity, density,
energy, tangent-modulus, uncertainty propagation, OLS/WLS/errors-in-variables
fitting, JSON-serializable fit results, and typed precursor, mass-basis, and
branch-domain APIs. Hugoniots remain inMaterial.eos_records, with filtered
hugoniot_recordsandequilibrium_recordsviews and category-scoped
defaults. Loading history and transformed-branch identity are independent;
record evaluation enforces the declared branch domain, whileV0,rho0,
formula units, and molar mass are cross-validated. Structured derivation
metadata covers coefficients obtained from SESAME or published tables. -
Added a bundled executable pressure-calibration library for the Mao (1978),
Mao--Xu--Bell (1986), Dewaele (2004, 2008), Holzapfel (2005), and
Dorogokupets--Oganov (2007), and IPPS-Ruby2020 ruby R1 scales in Python and
Rust, together with the Akahama--Kawamura (2006) and Eremets et al. (2023)
diamond-anvil Raman-edge scales. All 34
identified ruby-calibrated material records now link to an exact calibration
identifier. Public APIs convert ruby scales through the R1 wavelength ratio,
diamond scales through the Raman wavenumber ratio, transform XRD pressure
scales through virtual same-standard volumes, and recursively normalize a
material EOS through its recorded calibration graph. An explicit edge
registry preserves the sources and transformations for simultaneous and
jointly optimized cross-calibrations. New records add the Fratanduono (2021)
Au anchor and the Tateno (2019) and Chidester (2021) B2-KCl thermal EOSs; the
complete 155-row Chidester KCl/Pt-derived-pressure table is bundled. The
complete Dorogokupets--Oganov (2007) Pt four-oscillator thermal EOS is now
implemented in Python and Rust and makes the Chidester KCl-to-Pt edge
executable, including the published KCl-effective-to-Pt-surface temperature
transformation.
Observation-level re-reduction from paired measured calibrant volumes remains
available as a separate operation. A dedicated pressure-scale normalization
guide documents valid same-standard, ruby, and cross-material paths, the
qualifying literature, validity and uncertainty rules, and current library
coverage. A set-level route helper now finds and ranks XRD-standard targets
reachable from every supplied EOS, with an executable notebook covering
direct, optical, recursive, and temperature-transforming routes. -
Added the complete 51-row Somayazulu et al. (2023) B4C P-V-T table as a
provenance-bearing.eosmatdataset, linked it to new MGD and Berman thermal
records, and added a reproducible comparison of published, effective-
variance, and latent-coordinate fits. The open-source EosFit engine audit
also adds an explicit truncated-quadraticbermanreference-volume law in
Python, Rust, and the interchange schema. An opt-in
b4c_somayazulu_2023_berman_refitrecord carries the EosFit7c public-data
refit alongside, without replacing, the published parameterization; generic
refit lineage and fit-provenance fields make that distinction machine-readable. -
Added typed
search_materials()andsearch_eos_records()discovery across
identity and aliases, formula and phase, equation family, DOI and reference,
thermal/caloric capability, uncertainty, scientific-validation status, and
closed calibration ranges with explicitcontainsoroverlapssemantics. -
Failed material, record, and raw-document identifier lookups now suggest
close stable identifiers. -
Calibration discovery treats missing bounds as unknown rather than unbounded,
and material searches require all record-level criteria to match one record. -
Added forward DAC-confinement prediction through
volume_with_dac_confinement(P_cold, T, f_dac=...), together with an explicit
reference-relativethermal_pressure_increment()for displaying the full
thermal increment, retained confinement pressure, and total hot pressure.
Python material records and the Rust scalar, batch, and.eosmatAPIs expose
the same workflow in their public volume conventions. -
Added
DoubleDebyeLogMomentHelmholtzin Python and Rust together with the
primary-source-validated Correa et al. (2008) diamond record. The complete
Helmholtz model implements the Vinet cold curve, logarithmic-moment
double-Debye weights, zero-point motion, and the published$T^2$
anharmonic contribution, with pressure, volume, energy, entropy, and heat
capacity evaluation. -
Added optional reference-isotherm anchoring to both double-Debye Helmholtz
models. A numericTrsubtracts the simulated ionic and anharmonic
contribution at that temperature before adding it tort_eos;Tr=nullin
.eosmatpreserves the literal 0 K cold-curve formulation. The catalog now
includes Correa- and Benedict-thermal diamond variants anchored to the
experimental Dewaele 298 K Vinet isotherm. -
Added a shared Python/Rust error contract with domain-specific Python
exceptions, stable machine-readable codes and context, Rust error-kind
accessors, preserved fitting source chains, and native-extension parity. -
Added interpreted Rust
EosFitResultparameters, latent states, profiled
covariance, standard errors, correlation, and fit statistics. -
Added public Rust
.eosmatvalidation, serialization, and save APIs with
extension-preserving canonical and legacy round trips. -
Added PEP 561 typing metadata and a repository-wide
mypyCI gate. -
Added array-aware pressure and temperature conversions to
peritheos.units,
plus conventional-cell to formula-molar-volume conversion in both directions. -
Added separate complete-Python and native Rust coverage gates and
property-oriented native-versus-compatibility tests. -
Added workflow-oriented Rust API documentation, six executable core and
fitting examples, docs.rs metadata, and warning-free rustdoc/doctest CI.
Changed
- Corrected the B2-KCl refit reproductions for Walker (2002), Tateno et al.
(2019), and Chidester et al. (2021). Walker now follows the source's staged,
unweighted preferred
fit. Tateno now uses the final publishedgamma0=2.3,q=0.8, integrated-
Gruneisen Debye law, and the correctly aligned official Supplemental Table S1
workbook rather than the split accepted-manuscript table. Chidester now uses
the source's full simultaneous fit scope—123 Dewaele room-temperature rows
plus 155 new high-temperature rows—and the integrated-Gruneisen Debye law,
eliminating the falseq=0boundary and recovering all five coefficients. - Unified the normal Python material API with the bundled
.eosmatlibrary.
list_materials()andlist_eos_records()now return all bundled materials
and directly executable records in deterministic identifier order. Historical
pressure-scale identifiers and constants remain numerically stable
compatibility lookups after a record-by-record audit, while
get_material_document()remains the advanced raw-document API. - Canonical identifiers now take precedence over historical convenience names.
In particular,get_material("diamond")returns the complete seven-record
document-built material instead of the former five-record convenience
grouping; all historical diamond records remain available by their record
identifiers and compatibility constants. - EOS records now evaluate extrapolated states by default. Published ranges are
treated as calibration/data coverage, with opt-in enforcement through
check_validity=True;within_calibration_range()is the preferred coverage
query andwithin_validity()remains a compatibility alias. - Documented the factor-of-two normalization conflict between the Correa (2008)
and Benedict (2014) diamond anharmonic terms while preserving each published
equation and coefficient literally. For the published diamond parameters the
coefficient is volume independent, so this discrepancy affects caloric
quantities but not direct$P(V,T)$ or$V(P,T)$ evaluation. - Expanded Python fallback, Rust batch, error-category, thermal-domain, and
.eosmatvalidation tests; raised the branch-aware Python coverage floor to
90% and the Rust line-coverage floor to 85%. - Consolidated the public
peritheos-coreandperitheos-fitRust crates into
oneperitheoscrate. Fitting and uncertainty APIs now live under
peritheos::fit; the Python API is unchanged. - Deprecated the old
peritheos.utilspressure and temperature conversion
imports in favor of the consolidatedperitheos.unitsAPI. - Reworked the getting-started documentation around validated material records,
clarified source-build requirements, and grouped contributor-only design
documents outside the main user navigation.