Skip to content

Peritheos 0.7.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 12:56
· 160 commits to main since this release

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 at V/V0=0.667,
    and recovers q within combined two-sigma uncertainty from the 41 new heated
    rows with gamma0 fixed 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
    analyzed Al0.98Si0.92H1.39O4 composition from the ideal AlSiO3OH
    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 is 10.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 distinct Pbcn phase, 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-up shock 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 in Material.eos_records, with filtered
    hugoniot_records and equilibrium_records views and category-scoped
    defaults. Loading history and transformed-branch identity are independent;
    record evaluation enforces the declared branch domain, while V0, 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 .eosmat dataset, 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-quadratic berman reference-volume law in
    Python, Rust, and the interchange schema. An opt-in
    b4c_somayazulu_2023_berman_refit record 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() and search_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 explicit contains or overlaps semantics.

  • 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-relative thermal_pressure_increment() for displaying the full
    thermal increment, retained confinement pressure, and total hot pressure.
    Python material records and the Rust scalar, batch, and .eosmat APIs expose
    the same workflow in their public volume conventions.

  • Added DoubleDebyeLogMomentHelmholtz in 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 numeric Tr subtracts the simulated ionic and anharmonic
    contribution at that temperature before adding it to rt_eos; Tr=null in
    .eosmat preserves 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 EosFitResult parameters, latent states, profiled
    covariance, standard errors, correlation, and fit statistics.

  • Added public Rust .eosmat validation, serialization, and save APIs with
    extension-preserving canonical and legacy round trips.

  • Added PEP 561 typing metadata and a repository-wide mypy CI 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 published gamma0=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 false q=0 boundary and recovering all five coefficients.
  • Unified the normal Python material API with the bundled .eosmat library.
    list_materials() and list_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 and within_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
    .eosmat validation tests; raised the branch-aware Python coverage floor to
    90% and the Rust line-coverage floor to 85%.
  • Consolidated the public peritheos-core and peritheos-fit Rust crates into
    one peritheos crate. Fitting and uncertainty APIs now live under
    peritheos::fit; the Python API is unchanged.
  • Deprecated the old peritheos.utils pressure and temperature conversion
    imports in favor of the consolidated peritheos.units API.
  • Reworked the getting-started documentation around validated material records,
    clarified source-build requirements, and grouped contributor-only design
    documents outside the main user navigation.