Aragog is the interior energetics module of PROTEUS (/ΛproΚtiΙs/, PROH-tee-Ιs), a modular Python framework for the coupled evolution of the atmospheres and interiors of rocky planets and exoplanets. A schematic of PROTEUS components and corresponding modules can be found below. Click any module in the diagram to open its documentation, or navigate to it from the sidebar.
Schematic of PROTEUS components and corresponding modules.
Where Aragog sits in a coupled PROTEUS run
In a PROTEUS coupled run, four submodule families deliver the mantle-atmosphere physics in a fixed per-iteration order:
| Submodule | Role | State variables produced |
|---|---|---|
| Outgassing (CALLIOPE / Atmodeller) | Volatile partitioning between magma ocean and atmosphere | \(X_i^\mathrm{melt}\), \(X_i^\mathrm{atm}\) |
Interior structure (Zalmoxis, optionally SPIDER or dummy) |
Static structure: hydrostatic equilibrium, mass-radius, density, gravity, \(R_\mathrm{cmb}\), \(P_\mathrm{cmb}\) | \(\rho(r)\), \(g(r)\), \(P(r)\), mesh file |
Interior energetics (Aragog, SPIDER, or dummy) |
Thermal evolution: entropy ODE, \(T(r)\) trajectory, surface heat flux | \(S(r)\), \(T(r)\), \(\Phi\), \(F_\mathrm{atm}\), \(T_\mathrm{magma}\), \(T_\mathrm{core}\) |
| Atmosphere (AGNI / JANUS / dummy) | Radiative-balance surface temperature | \(T_\mathrm{surf}\), atmospheric column |
Aragog reads \(\rho(r)\), \(g(r)\), and \(P(r)\) from the mesh file written by the interior-structure step (data/zalmoxis_output.dat for Zalmoxis-coupled runs), reads the surface boundary condition from the atmosphere step, and writes the entropy profile and a small set of scalar diagnostics to hf_row for the next iteration.
Outgassing and the atmosphere step both consume T_magma and the surface flux that Aragog produces.
The per-iteration cadence and the conditions under which Zalmoxis re-solves (rather than reusing the previous mesh) are described in Coupling to PROTEUS (theory).
Quick links into the coupling docs
The two pages dedicated to the PROTEUS coupling on the Aragog side are:
-
How to couple Aragog to PROTEUS
Practical TOML recipe: minimal
[interior_energetics]block, the[interior_energetics.aragog]knobs in priority order, the JAX + CVODE production path, thephi_step_caprootfn for crossing the rheological transition, the retry ladder, and the common pitfalls. -
Theory of the coupling
Per-iteration call sequence, the
hf_rowkeys consumed and produced, theEntropySolverlifecycle (init, equilibrate, evolve, reset on Zalmoxis re-solve), the JAX CVODE factory registration, and the design rationale for keeping the coupling at the function-call level rather than via standalone TOML.
For the broader theoretical context that motivates Aragog inside PROTEUS, see also:
- Mixing-length theory: the local convective closure that Aragog uses, contrasted with the boundary-layer-theory closure used by the lump-magma-ocean lineage.
- Two-phase flow in Aragog: the solid + melt mixture treatment that activates gravitational separation, chemical mixing, and continuous lever-rule latent heat.
- Pressure EOS: the static pressure-and-density profile, with
mesh.eos_method = 2(Zalmoxis-driven, PALEOS-based) as the PROTEUS default. - Phase transitions: the thermodynamic \((P, S)\) tables that supply \(T\), \(\rho\), \(c_p\), \(\alpha\) at every radial node.
- Aragog vs SPIDER: what SPIDER does the same and where Aragog deliberately diverges.
For the PROTEUS-side documentation (config schema, orchestrator behaviour, atmosphere modules, outgassing modules), see proteus-framework.org/PROTEUS.
Standalone vs PROTEUS-coupled
Aragog is also a fully self-contained tool for standalone interior dynamics simulations and parameter studies. The two modes share the same numerical core but are configured at different layers:
| Mode | Entry point | Configuration |
|---|---|---|
| Standalone | EntropySolver(parameters) from a Python script, or aragog CLI |
TOML config files (abe_mixed.toml, abe_solid.toml, etc.) with [mesh], [energy], [boundary_conditions], [phase_solid], [phase_liquid], [phase_mixed], [radionuclides], [solver] sections. Documented under Standalone usage and Configuration. |
| PROTEUS-coupled | proteus start -c <run>.toml |
PROTEUS-side TOML sections [interior_energetics] and [interior_energetics.aragog], plus the relevant [interior_struct], [outgas], [atmos] blocks. The Aragog-side TOML sections above are not read; the wrapper builds Parameters directly. Documented in Coupling to PROTEUS. |
The Aragog API, the JAX path, and the SUNDIALS CVODE integrator are identical in the two modes; only the TOML scaffolding around them differs. For a side-by-side comparison see Standalone usage.
Where the wrapper code lives
Aragog is invoked from PROTEUS via:
proteus/interior_energetics/aragog.py: the wrapper that buildsParameters, instantiatesEntropySolver, registers the JAX CVODE factory, drives the per-iterationsolve()calls, manages the retry ladder for Zalmoxis-coupled re-solves, and translates the resultingSolverOutputintohf_rowkeys.proteus/config/_interior.py: the attrs-based schema for[interior_energetics]and[interior_energetics.aragog]. All knobs documented in the how-to map back to fields here.proteus/interior_energetics/wrapper.py: hostsequilibrate_initial_state(), the pre-main-loop CALLIOPE + Zalmoxis convergence loop that sets the surface temperature and volatile partitioning before Aragog's first thermal solve.
These files live in the PROTEUS repository, not in Aragog. Their per-symbol API documentation is rendered in the PROTEUS docs; this site documents the Aragog side of the contract.