Skip to content

Add opt-in cylindrical source, wall and reaction corrections - #857

Draft
gthyagi wants to merge 2 commits into
underworldcode:developmentfrom
gthyagi:feature/cylindrical-geometry-correction
Draft

gthyagi wants to merge 2 commits into
underworldcode:developmentfrom
gthyagi:feature/cylindrical-geometry-correction

Conversation

@gthyagi

@gthyagi gthyagi commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Straight-sided annulus meshes approximate circular density interfaces and walls. These opt-in Stokes methods provide circular pressure-jump extraction, numerical Taylor wall updates, and circular consistent-boundary-flux recovery so benchmark drivers can use one solver-owned implementation instead of duplicate numerical kernels.

Supported scope is a nondimensional, origin-centred 2-D isoviscous annulus with affine triangles, continuous P2 velocity/P1 regular pressure, rotated strong free slip, and pressure-nullspace projection enabled. Defaults and existing solver paths are unchanged. The guide and docstrings distinguish the published pressure-extraction, shifted-boundary and CBF principles from the radial lift, lagged wall updates and circular moment-transfer adaptations here; no inherited stability theorem or spherical/curved-element support is claimed.

Changes

  • Five Stokes methods lazily delegate to three private cylindrical utility modules.
  • Physical pressure is reconstructed as regular pressure plus a jump lift; the equivalent outer-chord natural datum accompanies the regular force.
  • Wall data use numerical velocity/stress traces with flux/torque compatibility projection. Raw assembled reactions remain available; circular spatial topography recovery precedes any harmonic fit.
  • Exact geometry/moment, polynomial trace, direct-stress, compatibility and empty-rank collective regressions are reachable from the existing CI test runner.

Dependency and validation

The FE-valued datum collective-ordering prerequisite also proposed in #855 is included in rotated_bc.py with its two regressions. It is needed to evaluate wall fields safely when some ranks own no points. The unrelated submesh-name fix used by the integration benchmark is excluded from this PR.

Gadi job 182128805.gadi-pbs built review commit bf81ed97122d6dea7626c12dfe223f8e168612d8 from a fresh checkout against the existing PETSc int32 image. Python/native origins, integer width and MPI runtime checks passed. All 12 tests passed in serial and on each of 16 MPI ranks. Subsequent commit 80243e81 changes only documentation and test selection markers; numerical/public-method executable ASTs and test bodies are identical. Coverage reports all 355 test files reachable; style and whitespace checks pass.

The separate feature/topography-geoid-consolidation integration branch at d2c05279 has completed 50 fresh Gadi models (case1/2, both primary gravity workflows, before/after, h=1/8–1/128, and prescribed-source gravity tests). Those workflow runs use the integration branch, not this narrow upstream base; independent saved-field audit 182128125.gadi-pbs passed all 50 runs, 20 matched mesh pairs and ten complete sequences. The consolidated report and evidence preserve every before/after result, including adverse Poisson gravity changes. They do not replace the narrow-branch installation/component evidence above.

Review scope

Boundary-only replication and a SciPy sparse line-mass solve remain bounded implementation limitations, documented explicitly; scalability beyond the tested annulus is not claimed. Four wall updates are a selected benchmark schedule, not a universal convergence guarantee. The API requires integer updates; float inputs are outside the documented parameter contract.

Adversarial review of 80243e81 found no blocking source issue within the documented scope. It checked empty-rank schedules, inner/outer signs, gauges, deterministic indexing, CI reach and executable equivalence. Missing unit-scope documentation and prerequisite test markers were corrected. The minor float-updates validation inconsistency remains; documented integer inputs are unaffected. The independent integration campaign audit has passed; review of the supported scope and remaining documented limitations is still required before merge.

Related issue verdicts: #320 (broader BC comparisons), #348 (LU pressure pin), #546 (workspace/FMG follow-ups), #608 (mixed boundary corners), #625 (pressure preconditioning cost), #408 (3-D recovery scaling), #647 (spherical projection), and #787/#766 (adjoint/sensitivity) remain live and outside this branch. None is claimed fixed or independently reproduced as already fixed. Existing issue labels are unchanged.

Underworld development team with AI support from Claude Code

Expose solver-owned pressure extraction, numerical Taylor wall updates, circular CBF topography recovery and modal trace integration for affine isoviscous P2/continuous-P1 annuli. Keep five public methods backed by private lazy helpers, explicit configuration and numerical failure histories. Document technical sources and the required projected pressure gauge.

Include the registered-boundary collective datum scheduling prerequisite from open PR underworldcode#855; no analytical, geoid, Poisson, spherical or child-submesh changes are included. Add independent mathematical regressions and one explicit CI entry.

Validation: executable kernel/method/test ASTs match d2c0527 tested on the integration branch (14 serial UW3, 189 annulus components and 14 tests on 16 MPI ranks). Four standalone h32 migrations reproduce calibrated fields and signed coefficients within 1e-14. Coverage and style checks pass. A matching upstream-base native installation and focused serial/MPI gates are next before opening the review PR.

Underworld development team with AI support from Claude Code
Constrain the public examples and helper docstrings to nondimensional inputs; mark prerequisite datum tests level_1/tier_b. No numerical implementation or test-body changes.

Validation: Gadi182128805 built bf81ed9 against the existing int32 image, verified native/Python origins and passed all 12 tests serially and on every one of 16 MPI ranks. Executable ASTs remain identical after these documentation/selection changes; coverage355, style and diff gates pass. No native/model reruns are affected. Next: narrow upstream review, retaining separate integration-campaign provenance.

Underworld development team with AI support from Claude Code

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.

1 participant