You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The rotated-BC free surface (uw.systems.FreeSurface, PR #435) is the only working
free-surface strategy, and nearly every target application is nonlinear — with
anisotropic nonlinearity (TI faults) required for the flagship cases, potentially WITH
the free surface (faults reaching the surface). This must not be a blocker, and it is
not: everything runs today. But one leg runs on a fallback whose deficiency we have
now measured precisely, so it needs to be first-class work, recorded here.
Current compatibility matrix
combination
status
rotated free-slip (u.n=0) + nonlinear
WORKS (SNES-integrated rotated path, honours consistent_jacobian)
rotated free-slip + anisotropic (TI)
works at constraint level (rotation is rheology-blind); solver-config caveats only (Schur/mass pmat choice for TI)
FreeSurface free + held solves + nonlinear
WORKS (held auto-dispatches nonlinear rotated; sigma_nn recovery is constitutive-agnostic)
GAP: linear-only. Nonlinear raises NotImplementedError with a clear message; fallback = consistent_constraint="penalty"
FMG hierarchy + nonlinear
works by construction (Galerkin RAP of whatever tangent is assembled; re-formed each Newton iteration; performance-only caveats for localised viscosity)
Why the penalty fallback is not acceptable long-term
The consistent solve exists to keep the surface a MATERIAL boundary. Measured on the
isoviscous annulus (PR #435): the penalty leaks ~4% net volume flux through the surface
and misses the prescribed rate by 6.4x more than the strong datum — the exact mechanism
that put semi-Lagrangian departure feet outside the domain and injected hot material
into the cold boundary layer. Nonlinear runs on the fallback inherit that class of
error at whatever amplitude their regime produces.
Anisotropic extras (small, config-level): a sensible scalar viscosity proxy for
the Schur mass pmat under TI in the rotated solves; never-ksponly guidance carried
over to the FreeSurface-derived solves.
Fault-at-the-surface interaction (open question, not solver work): the surface
ring filter and tangential transport act along a ring that a TI weak zone may
intersect; whether the filter should be fault-aware is a physics/design question to
revisit once 1 exists and a fault-to-surface model runs.
Acceptance
Power-law annulus free-surface convection with consistent_constraint="strong" running
through the SNES path: material-boundary error and net surface flux at the strong-datum
level (not the penalty level) at matched steps; a TI fault-bearing smoke test compiling
and converging with the FreeSurface manager.
Why this matters
The rotated-BC free surface (uw.systems.FreeSurface, PR #435) is the only working
free-surface strategy, and nearly every target application is nonlinear — with
anisotropic nonlinearity (TI faults) required for the flagship cases, potentially WITH
the free surface (faults reaching the surface). This must not be a blocker, and it is
not: everything runs today. But one leg runs on a fallback whose deficiency we have
now measured precisely, so it needs to be first-class work, recorded here.
Current compatibility matrix
Why the penalty fallback is not acceptable long-term
The consistent solve exists to keep the surface a MATERIAL boundary. Measured on the
isoviscous annulus (PR #435): the penalty leaks ~4% net volume flux through the surface
and misses the prescribed rate by 6.4x more than the strong datum — the exact mechanism
that put semi-Lagrangian departure feet outside the domain and injected hot material
into the cold boundary layer. Nonlinear runs on the fallback inherit that class of
error at whatever amplitude their regime produces.
Required work
linear path imposes the datum via zeroRowsColumns(x,b) with a solution-row restore;
the Newton loop needs the equivalent per iteration — set the rotated-normal DOF of
the iterate to the datum, zero the corresponding residual row, keep the tangent
transparent (the machinery the u.n=0 nonlinear path already has, generalised to a
non-zero, field-valued datum). Belongs with the pyx add_rotated_freeslip_bc datum
argument (Finish rotated free-slip prescribed-normal datum: wire FreeSurface consistent solve, pyx API, parallel, nonlinear #403 item 2) and, ideally, with the planned linear/nonlinear rotated-path
unification (the split itself is a design smell — flagged for the joint pyx session).
the Schur mass pmat under TI in the rotated solves; never-ksponly guidance carried
over to the FreeSurface-derived solves.
ring filter and tangential transport act along a ring that a TI weak zone may
intersect; whether the filter should be fault-aware is a physics/design question to
revisit once 1 exists and a fault-to-surface model runs.
Acceptance
Power-law annulus free-surface convection with consistent_constraint="strong" running
through the SNES path: material-boundary error and net surface flux at the strong-datum
level (not the penalty level) at matched steps; a TI fault-bearing smoke test compiling
and converging with the FreeSurface manager.
Related: #403 (items 2, 4), #435 (the 2D linear-complete toolkit), #423, #404 (3D).
Underworld development team with AI support from Claude Code