Skip to content

ARAGOG entropy solver stalls when crossing the first liquidus phase boundary #840

Description

@timlichtenberg

Symptom

test_zalmoxis_aragog_calliope_two_timesteps fails within its 2-timestep / 1e3 yr budget because the interior cannot cross the first liquidus phase boundary. In three full validation runs, the CVODE ΔΦ_global cap rootfn fires immediately at t=8.607e2 yr (Phi_global(start)=0.9878), after 54 rootfn evaluations, with the accepted step covering 0.00% of the 45 yr interval requested.

Mechanism

The CVODE rootfn _PhiCapRootFunction.evaluate() (aragog/src/aragog/solver/entropy_solver.py:547-577) returns g[0] as the minimum of up to three margins: the melt-fraction cap, the temperature cap, and the entropy cap. CVODE stops the solve as soon as any one margin reaches zero.

Near a phase boundary a cell's melt fraction reaches phi=1 and its derivative saturates, so the melt-fraction cap goes blind (comment at entropy_solver.py:524-530). When that happens, the temperature or entropy cap becomes the active margin instead, and the melt-fraction cap has no further effect on when the solve stops.

Diagnostic evidence

Three real validation runs grew only the melt-fraction cap, from its nominal value up to 8x (0.1 to 0.8), while the temperature and entropy caps stayed fixed. The stall time, evaluation count, and starting Phi_global were identical across all three runs (t=8.607e2 yr, 54 evals, Phi_global(start)=0.9878). Under a min() combination, an 8x change in one term with zero effect on the result means that term is not the active margin: the temperature or entropy cap is binding, not the melt-fraction cap.

Where a fix would act

Step acceptance in AragogRunner._solve_with_retry (src/proteus/interior_energetics/aragog.py:2268) accepts any terminal-event stop with dt_actual > 0, with no lower bound. A cell that advances by a near-zero fraction of the requested interval is accepted as a completed step rather than retried with a different strategy. A fix needs to act on this acceptance path, or grow the temperature and entropy caps jointly with the melt-fraction cap, not the melt-fraction cap alone.

Scope

This is pre-existing and predates #789; #789 does not introduce it and does not fix it. test_zalmoxis_aragog_calliope_two_timesteps is marked xfail(strict=False) pending this fix.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    InterraIssue has been imported to the Interra Board projectimport

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions