-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Problem
SPIDER currently assigns a single equation of state (EOS) globally for the entire mantle. When reading an external mesh file, the file provides radius, pressure, density, and gravitational acceleration at each node — but does not carry information about which EOS table applies at each depth. SPIDER uses its global material assignment (SPIDER_MANTLE_MATERIAL_PARAMS and similar options) uniformly across all nodes.
This is a significant limitation for realistic planetary interiors, where different depths may have different compositions:
- Compositional layering: A bridgmanite-dominated lower mantle may have different thermodynamic properties than an olivine-rich upper mantle. Post-perovskite transitions at ultra-high pressures (>120 GPa) introduce yet another material phase.
- Core-mantle transition zone: The region near the core-mantle boundary may contain a mix of iron alloy and silicate, with different EOS from either pure endmember.
- Volatile-bearing layers: If the mantle contains significant water or carbon, the EOS of hydrous/carbonated phases differs from the dry silicate tables currently used.
- Ice layers (super-Earths): For planets with significant water mantles, high-pressure ice phases (ice VII, ice X) require entirely different EOS tables from silicate phases.
Current state
- The external mesh file format (
# nb nsheader, thenr P rho gper node) has no field for material type. parameters.chandles EOS selection globally through options like-SPIDER_MANTLE_MATERIAL_PARAMS.- The interpolation code in
interp.cuses a singleInterp2dstructure per material phase (solid, melt, mixed), indexed globally. - The mixing-length convection model in
matprop.cevaluates thermal expansion, heat capacity, and other properties from these global interpolation tables.
Proposed approach
-
Extend the external mesh file format to include an optional integer material index per node (backward-compatible: if absent, assume the current global assignment):
# nb ns [nmaterials] r P rho g [material_id] -
Per-material EOS tables: Allow loading multiple sets of EOS tables. Each
material_idmaps to a set of (solid, melt, mixed) interpolation tables. TheInterp2dstructures would become arrays indexed by material. -
Node-level EOS evaluation: In
matprop.c(and wherever EOS lookups happen), use the node'smaterial_idto select the correct interpolation table instead of the global one. -
Zalmoxis integration: Zalmoxis already supports per-layer material assignment (core vs mantle). Extending this to multiple mantle layers and passing the material index through PROTEUS's mesh interpolation would close the loop.
Complexity and priority
This is a significant refactor touching the core data structures (Ctx, Interp2d, EOS evaluation throughout matprop.c). It also requires extending the Zalmoxis output and PROTEUS mesh interpolation. Estimated effort: weeks of development plus validation.
This is a high priority for scientific realism — the single-material assumption is the largest remaining physical limitation of the SPIDER-Zalmoxis coupling. Without it, compositional stratification during magma ocean solidification (e.g., dense FeO-rich cumulates sinking, forming a basal magma ocean) cannot be captured.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status