PALEOS: Thermodynamic Equation of State Tables for Fe, MgSiO₃, and H₂O at Planetary Interior Conditions
Authors/Creators
Description
PALEOS: Thermodynamic Equation of State Tables for Fe, MgSiO₃, and H₂O at Planetary Interior Conditions
Precomputed thermodynamic property tables for three key planetary materials—iron (Fe), magnesium silicate (MgSiO₃), and water (H₂O)—generated with the open-source Python package PALEOS (Planetary Assemblage Layers: Equations Of State). These tables are designed for direct use in planetary interior structure and thermal evolution models, spanning the pressure–temperature conditions encountered from terrestrial to giant planets.
Scope and motivation
Interior modelling of rocky and water-rich exoplanets requires thermodynamic properties of core, mantle, and volatile-layer materials over many orders of magnitude in pressure and temperature. PALEOS provides a centralized, validated equation-of-state toolkit that consolidates published EoS for each material, implements full phase diagrams with automatic phase selection, and derives all seven thermodynamic quantities analytically from the underlying P(V,T) relations via Maxwell relations and fundamental thermodynamic identities. The tables released here are the primary data product of PALEOS: they encode the analytically computed properties on regular grids that can be loaded and interpolated with minimal effort.
Tables included
| File | Material | P range | T range | Resolution |
|---|---|---|---|---|
paleos_iron_tables_pt.dat |
Fe | 1 bar – 100 TPa | 300 – 10⁵ K | 150 ppd |
paleos_iron_tables_pt_highres.dat |
Fe | 1 bar – 100 TPa | 300 – 10⁵ K | 600 ppd |
paleos_mgsio3_tables_pt.dat |
MgSiO₃ | 1 bar – 100 TPa | 300 – 10⁵ K | 150 ppd |
paleos_mgsio3_tables_pt_highres.dat |
MgSiO₃ | 1 bar – 100 TPa | 300 – 10⁵ K | 600 ppd |
paleos_water_tables_pt.dat |
H₂O | 1 μbar – 100 TPa | 100 – 10⁵ K | 150 ppd |
All grids are log-uniform in both P and T. The standard 150 points-per-decade (ppd) variants are chosen so that bilinear interpolation in (log₁₀P, log₁₀T) space achieves a relative density error below 10⁻⁴ at the 99th percentile, and are the intended default for most interior-structure and mass–radius workflows. The high-resolution 600 ppd variants for Fe and MgSiO₃ are provided for applications where thermodynamic derivatives (α, C_P, ∇_ad) need tighter accuracy than bilinear interpolation of the 150 ppd grid can deliver. The Jupyter notebooks used to generate these tables are available in the tables/ directory of the PALEOS repository.
Columns
Each table contains the same ten columns:
- P — Pressure [Pa]
- T — Temperature [K]
- rho — Density [kg/m³]
- u — Specific internal energy [J/kg]
- s — Specific entropy [J/(kg·K)]
- cp — Isobaric heat capacity [J/(kg·K)]
- cv — Isochoric heat capacity [J/(kg·K)]
- alpha — Thermal expansion coefficient [K⁻¹]
- nabla_ad — Adiabatic gradient (d ln T / d ln P)_S [dimensionless]
- phase — Stable phase identifier (string)
Fe
The iron table covers the complete planetary core phase diagram with five phases: α-bcc, δ-bcc, γ-fcc (Dorogokupets et al. 2017), ε-hcp (Miozzi et al. 2020 blended with Hakim et al. 2018 via a smoothstep transition for pressures above ~310 GPa), and liquid (Luo et al. 2024). Solid–solid phase boundaries follow Dorogokupets et al. (2017) and the melting curve follows Anzellini et al. (2013). Internal energy and entropy are referenced to the fcc–hcp–liquid triple point (98.5 GPa, 3712 K), pinning the anchor on the three phases that dominate planetary cores. Per-phase constants (U₀, S₀) are set by decoupling: S₀ is fixed on thermodynamic grounds—ensuring ΔS > 0 across every heating-accessible solid–solid boundary and ΔS_fusion > 0 on every branch of the Anzellini et al. (2013) melting curve—and U₀ is then fixed per phase by enforcing Gibbs-energy continuity at the triple point.
MgSiO₃
The MgSiO₃ table covers the complete planetary mantle phase diagram with six phases: three pyroxene polymorphs—low-pressure clinoenstatite, orthoenstatite, and high-pressure clinoenstatite from Sokolova et al. (2022)—bridgmanite (Wolf et al. 2015, pure Mg end-member), postperovskite (Sakai et al. 2016), and liquid (Wolf & Bower 2018 with parameters from Luo & Deng 2025). The pyroxene boundaries follow Sokolova et al. (2022), the bridgmanite–postperovskite boundary follows Ono & Oganov (2005), and the melting curve combines Belonoshko et al. (2005) below ~2.55 GPa with Fei et al. (2021) above. Internal energy and entropy are referenced to the brg–ppv–liquid triple point (155.7 GPa, 6168 K), computed numerically as the intersection of the Ono & Oganov brg↔ppv boundary with the Fei et al. (2021) melting branch. Per-phase constants (U₀, S₀) are set by decoupling: S₀ is fixed on thermodynamic grounds—ensuring ΔS > 0 across every heating-accessible solid–solid boundary and matching the Stebbins et al. (1984) calorimetric anchor ΔS_fusion(1 bar, 1831 K) = 41.99 J/(mol·K) exactly—and U₀ is then fixed per phase by enforcing Gibbs-energy continuity at the triple point. Grid points where the EoS failed to converge (primarily in the low-P, high-T liquid regime, reflecting vapor/supercritical phase uncaptured by PALEOS) are omitted; users should reconstruct the full rectangular grid with NaN fill before interpolation (see usage example below).
H₂O
The water table is regridded from the AQUA equation of state (Haldemann et al. 2020), a composite description assembled from seven underlying EoS covering ice polymorphs (Ih through X), liquid, vapor, and supercritical/superionic water. Two corrections are applied to the entropy and internal energy to fix bugs in the Mazevet et al. (2019) Helmholtz free-energy parametrization used in AQUA's Region 7 (supercritical/superionic): a sign error on the first two terms of F_T, and a revision of the reference entropy from S₀ = 4.9 k_B n_at to 9.8 k_B n_at. Both corrections are gated analytically to the Region 7 blend bands AQUA uses to stitch Mazevet et al. (2019) with its neighbors, so ice polymorphs, liquid, Brown (2018) supercritical fluid, and the CEA ideal gas are unaffected. Heat capacities and thermal expansion are derived from the tabulated AQUA quantities using standard thermodynamic relations.
Usage
Tables are plain-text, whitespace-delimited files with comment headers (lines starting with #). Grid points where the EoS did not converge are omitted, so a table may contain fewer rows than the full rectangular grid (in this current implementation, only the MgSiO₃ table has an irregular structure). The following Python snippet reconstructs the full grid with NaN fill and builds an interpolator:
import numpy as np
from scipy.interpolate import RegularGridInterpolator
# Grid parameters (adjust per table; see file headers)
n_P, n_T = 1351, 380
P_min, P_max = 1e5, 1e14 # Pa
T_min, T_max = 300.0, 1e5 # K
# Load data
cols = ['P','T','rho','u','s','cp','cv','alpha','nabla_ad','phase']
data = np.genfromtxt('paleos_iron_tables_pt.dat',
names=cols, dtype=None, encoding='utf-8')
# Reconstruct full regular grid
log_P = np.linspace(np.log10(P_min), np.log10(P_max), n_P)
log_T = np.linspace(np.log10(T_min), np.log10(T_max), n_T)
rho = np.full((n_P, n_T), np.nan)
for row in data:
i = np.searchsorted(log_P, np.log10(row['P']))
j = np.searchsorted(log_T, np.log10(row['T']))
if i < n_P and j < n_T:
rho[i, j] = row['rho']
# Interpolate (NaN propagates near missing points)
interp = RegularGridInterpolator((log_P, log_T), rho)
rho_query = interp([[np.log10(100e9), np.log10(4000)]])[0]
Alternatively, PALEOS can be used directly as a Python package for on-the-fly EoS evaluation with automatic phase selection:
from paleos import iron_eos as fe
eos, phase = fe.get_iron_eos_for_PT(P=100e9, T=4000)
rho = eos.density(100e9, 4000)
Thermodynamic consistency
All EoS implementations have been validated against the Maxwell-relation consistency parameter Δ ≡ 1 − ρ²(∂S/∂P)_T / (∂ρ/∂T)_P, which vanishes for a perfectly self-consistent equation of state. Across the iron phase diagram, 98.2% of the P–T domain satisfies |Δ| < 0.01 (median |Δ| ≈ 1.4 × 10⁻⁷). Across the MgSiO₃ phase diagram, 100% of the valid domain satisfies |Δ| < 0.01 (median |Δ| ≈ 3.5 × 10⁻⁸). See the PALEOS documentation and benchmark notebooks for detailed consistency reports.
License and citation
These tables are released under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. If you use these tables, please cite the forthcoming PALEOS paper (Attia et al., in prep.).
* * *
Version log (1.2.0): implemented consistent U₀/S₀ per-phase shifts to ensure dS/dT > 0 everywhere and Gibbs-energy continuity at triple points, and generated high-resolution (600 ppd) tables.
Files
Files
(2.2 GB)
Additional details
Software
- Repository URL
- https://github.com/maraattia/PALEOS
- Programming language
- Python , Jupyter Notebook
- Development Status
- Active