Skip to content

Rotated free-slip with every rheology and both momentum solvers: a test - #853

Open
lmoresi wants to merge 1 commit into
developmentfrom
feature/rotated-freeslip-all
Open

lmoresi wants to merge 1 commit into
developmentfrom
feature/rotated-freeslip-all

Conversation

@lmoresi

@lmoresi lmoresi commented Oct 18, 2026

Copy link
Copy Markdown
Member

Rotated strong free-slip is the free-slip condition we recommend, so it has to hold whatever the constitutive model. This adds the test that says it does.

A probe matrix over viscous, viscoplastic (constant and pressure-dependent yield), viscoelastic-plastic (BDF, ETD, with yield, the deformation step, the log-conformation history) and transversely isotropic VEP, in Stokes and the Eulerian NavierStokes, on a box and an annulus, converged at every step in serial and on 2 ranks — nothing needed fixing. tests/test_1018_rotated_freeslip_every_rheology.py (level_2, tier_b, 26 cases, ~2 min on 8 workers) records it:

  • box: rms(v·Γ)/rms(v) < 1e-12 for every rheology and both solvers (measured 3e-17);
  • annulus: the constraint holds at the nodes along their nodal normals, so v·Γ against the facet normal is the polygonal boundary's geometric error — first order in h (8.2e-2, 4.6e-2, 2.4e-2 at h = 1/4, 1/8, 1/16) and the same for every model. Each model is held to the viscous value on the same mesh (within 25 %).

Not covered here: preconditioner_flux="model" is refused on the rotated path (on feature/ve-stretch-split, which lands after #800); the adjoint of a rotated solve is #846.

Checklist (UW3 Style Charter — docs/developer/UW3_STYLE_CHARTER.md)

  • I have read the Style Charter and followed it over the surrounding code (S2)
  • No drive-by refactors, renames, or "while I was here" cleanups (S9)
  • Bug fixes ship the regression test, written first, with level_* and tier_* markers (S8)
  • No hedging names (maybe_ / try_ / do_) and no commented-out code (S3, S4)
  • Every exception swallow states its sanctioned failure mode in a comment (S4)
  • New data access uses .array / mesh.X.coords — no with ....access(...), no mesh.data (S7)
  • Parallel safety considered — np2/np4 checked where swarm/mesh/solver dispatch is touched (S11)
  • No pixi.toml / pixi.lock or other dependency changes riding in an unrelated PR
  • AI-assisted work carries the attribution line below

Underworld development team with AI support from Claude Code

Rotated strong free-slip is the recommended free-slip condition, so it must
hold whatever the constitutive model. Nothing was broken -- a probe matrix of
viscous, viscoplastic (constant and pressure-dependent yield),
viscoelastic-plastic (BDF, ETD, yield, deformation step, log-conformation)
and transversely isotropic VEP, in Stokes and Eulerian Navier-Stokes, on a
box and an annulus, converged at every step in serial and on 2 ranks -- so
this records the guarantee rather than a fix:

- box: rms(v . Gamma)/rms(v) below 1e-12 for every rheology and solver;
- annulus: the constraint holds at the nodes along their nodal normals, so
  v . Gamma against the facet normal is the polygonal boundary's geometric
  error (first order in h: 8.2e-2, 4.6e-2, 2.4e-2 at h = 1/4, 1/8, 1/16),
  the same for every model; each is held to the viscous value on the same
  mesh (within 25 %).

26 cases, about 2 minutes on 8 workers.

Underworld development team with AI support from Claude Code
Copilot AI balanced review requested due to automatic review settings October 18, 2026 04:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants