Skip to content

proteus.config._struct

The attrs-based schema for the [interior_struct] and [interior_struct.zalmoxis] TOML blocks. All knobs documented in the Zalmoxis coupling how-to map back to fields on the classes below.

Struct

Planetary structure (mass, radius).

Attributes:

Name Type Description
core_frac float

Core fraction of the planet, by mass or by radius (see core_frac_mode). With module = 'zalmoxis' the core mass is this fraction of the planet mass without the volatile inventories that the outgassing takes as inputs (H, C, N, S, noble gases; O when it is an input), or without their atmosphere part with zalmoxis.dry_mantle = false. It is set when the init stage ends and then kept.

module str

Module for solving the planet's interior structure. Choices: 'dummy', 'spider', 'zalmoxis'.

zalmoxis Zalmoxis or None

Zalmoxis parameters if module is 'zalmoxis'.

core_frac_mode str

How core_frac is interpreted. 'radius': fraction of planet radius. 'mass': mass fraction, of planet.mass_tot with module = 'dummy' and of the mass that core_frac names with module = 'zalmoxis'. Only 'radius' is supported when module = 'spider'. The zalmoxis module always interprets core_frac as a mass fraction and ignores this flag (a warning is emitted at runtime if 'radius' is set with module = 'zalmoxis').

core_density float or str

Density of the planet's core [kg m-3]. Set to 'self' for self-consistent calculation by Zalmoxis (requires module = 'zalmoxis').

core_heatcap float or str

Specific heat capacity of the planet's core [J kg-1 K-1]. Set to 'self' for self-consistent calculation by Zalmoxis (requires module = 'zalmoxis').

melting_dir str

Melting curve name in FWL_DATA. Required for the SPIDER structure module and for any run without a PALEOS table set; not read with module = 'zalmoxis' and a single PALEOS mantle EOS. With module = 'dummy' and a PALEOS mantle EOS, Aragog requires it but the solve uses the PALEOS set.

eos_dir str

EOS folder name in FWL_DATA, for the SPIDER structure module.

Zalmoxis

Parameters for Zalmoxis module.

Attributes:

Name Type Description
core_eos str

EOS for the core layer. Format: ":". Tabulated: "PALEOS:iron" (default), "Seager2007:iron". Analytic: "Analytic:iron", "Analytic:MgFeSiO3", etc.

mantle_eos str

EOS for the mantle layer. Format: ":". Tabulated: "PALEOS:MgSiO3" (default), "PALEOS-2phase:MgSiO3", "Seager2007:MgSiO3", "WolfBower2018:MgSiO3". Analytic: "Analytic:MgSiO3", "Analytic:MgFeSiO3", etc.

ice_layer_eos str or None

EOS for the ice/water layer (3-layer model). 'none' for 2-layer model (core + mantle only). Tabulated: "PALEOS:H2O", "Seager2007:H2O". Analytic: "Analytic:H2O".

mushy_zone_factor float

Cryoscopic depression factor controlling the width of the mushy zone (partially molten region) in the PALEOS EOS family. Defines the solidus as T_sol = T_liq * mushy_zone_factor. 1.0 = sharp phase boundary (no mushy zone). 0.8 = solidus at 80% of the liquidus temperature, the constant solidus-to-liquidus ratio of Stixrude+2014 for MgSiO3, applied here to the PALEOS liquidus. Must be in [0.7, 1.0]. Applies to the PALEOS EOS family (PALEOS, PALEOS-2phase, PALEOS-API, PALEOS-API-2phase); ignored for WolfBower2018 and RTPress100TPa (which use explicit melting curve files) and for Seager2007/Analytic (no derived solidus).

lowt_extension bool

Extend the solid P-S entropy tables below the 300 K edge of the PALEOS solid table, with the PALEOS phase potentials evaluated down to about 50 K on the rows below 12 GPa (file paleos_mgsio3_tables_pt_proteus_solid_lowT.dat next to the solid table). PALEOS values are used wherever the solid table has them. Applies to the P-S tables of the PALEOS MgSiO3 mantle and needs interior_energetics.module = 'aragog' and interior_struct.module 'zalmoxis' or 'dummy'; a mantle whose MgSiO3 (energetics) EOS is PALEOS-API or -highres is refused when the config loads, and a mantle without PALEOS tables ignores the switch with a warning. A resumed run keeps the tables it started with, so the switch acts on a fresh table build. The standard data set does not hold the extension file: write it with Zalmoxis's tools/converters/paleos_lowt_extension.py (--paleos-src, --table, and --out with the file name above in the folder of the solid table; see the Zalmoxis coupling page). A missing extension file, or a Zalmoxis whose table generator has no solid_lowt_file, stops the run at start-up (with the dummy structure, at the first table build). The Zalmoxis coupling page gives the range of the extended tables, the accuracy of their lowest entropy interval per planet mass and the entropy zero of each PALEOS phase. Aragog's entropy solver reads its thermodynamic properties from the P-S tables only; the phase P-T tables written for it are not read, so they need no extension. With the switch on, Aragog logs its minimum heat capacity warning at each coupling iteration.

mantle_mass_fraction float

Fraction of the planet's interior mass corresponding to the mantle. Required for 3-layer models (with ice layer) and for T-dependent 2-layer models (WolfBower2018, RTPress100TPa) where it partitions mass between core and mantle layers.

num_levels int

Number of Zalmoxis radius layers.

solver_tol_outer float

Relative tolerance for mass convergence (outer loop).

solver_tol_inner float

Relative tolerance for density convergence (inner loop).

solver_max_iter_outer int

Max iterations for mass convergence (outer loop).

solver_max_iter_inner int

Max iterations for density convergence (inner loop).

lookup_nP int

Number of pressure points in SPIDER P-S tables generated from PALEOS.

lookup_nS int

Number of entropy points in SPIDER P-S tables generated from PALEOS.

outer_solver str

Outer mass-radius solver: 'newton' (recommended) or 'picard'.

use_jax bool

Use the JAX backend for the structure solver.

use_anderson bool

Anderson Type-II Picard acceleration on the density loop.

newton_max_iter int

Maximum Newton iterations (outer_solver = 'newton').

newton_tol float

Newton convergence tolerance (outer_solver = 'newton').

newton_relative_tolerance float

Integrator relative tolerance for the Newton path.

newton_absolute_tolerance float

Integrator absolute tolerance for the Newton path.

update_dphi_abs float

Re-solve the structure when the global melt fraction changes by this absolute amount since the last solve.

update_dtmagma_frac float

Re-solve the structure when T_magma changes by this fraction.

update_dw_comp_abs float

Re-solve when the relative dissolved-volatile (H2O or H2) mantle mass fraction changes by this amount.

update_interval float

Maximum time between structure updates [yr]; effectively disabled at the default.

update_min_interval float

Minimum time between structure updates [yr]; prevents thrashing.

update_stale_ceiling float

Time since the last successful re-solve after which a trigger refires [yr]; 0 disables.

mesh_max_shift float

Maximum fractional radius shift per structure update.

mesh_convergence_interval float

Convergence relaxation time after a mesh update [yr].

equilibrate_init bool

Equilibrate structure and composition before the main loop.

equilibrate_max_iter int

Maximum equilibration iterations.

equilibrate_tol float

Equilibration convergence tolerance.

dry_mantle bool

Structure EOS assumes a dry mantle. Set False for melt-fraction-aware dissolved-volatile mixing in the mantle density (per-shell volatile profile); the dissolved mass then stays inside the interior mass target and inside the mass that core_frac refers to.

global_miscibility bool

Enable the H2-silicate binodal-aware radial structure. True is rejected at config load: it requires the binodal handoff on the Zalmoxis side, which is not yet implemented.

miscibility_max_iter int

Maximum miscibility iterations.

miscibility_tol float

Miscibility convergence tolerance.