Add cylindrical annulus geoid postprocessing - #648
Conversation
Implement the Simons cylindrical sheet Green's function for positive Fourier modes and assemble two-boundary potential, geoid, and self-gravity responses. Add a rotated-free-slip Stokes adapter that projects wall reactions on rank zero and broadcasts deterministic coefficients. Cover kernel branches, Poisson jumps, mode validation, superposition, feedback solves, public exports, and partitioned MPI sampling. The coefficient API remains independent of the mantle-convection benchmark drivers and physical-space Poisson meshes.
Expose the postprocessing API in the documentation index and describe the Fourier convention, sheet kernel, density and sign conventions, self-gravity matrix, unit contract, n=0 limitation, and MPI adapter workflow. Keep the Kramer-Simons convergence and physical-space Poisson comparisons in the mantle-convection benchmark repository.
|
Reviewed. The physics and the validation are solid; my concern is architectural, and it is cheap to address now and expensive later. What is goodThe Kramer–Simons convergence campaign is real evidence, not a smoke test: 0.224% outer and 0.0072% inner at h=1/32, with clean second-order behaviour on the Poisson side under each halving. The input validation in The concern: this adds a second bespoke projection path
Three consequences worth weighing:
The alternative is already in your own #646
Routing this projection through one of those is a change to one function, not a rewrite. Doing it before merge avoids maintaining two bespoke paths and then migrating both. Practical collisions if both land
VerdictNot blocking on correctness — CI is green and the validation stands. But I would rather see the projection go through #646's integral (or Underworld development team with AI support from Claude Code |
Summary
The coefficient API is independent of the physical-space Poisson meshes and convergence drivers.
Kramer-Simons annulus validation
The fixed nondimensional case uses Fourier mode n=2, radii ri=1.22, rload=2.0, ro=2.22, G=1, unit boundary density contrasts, unit internal sheet coefficient, and unit reference gravities. Consequently geoid N and potential Phi have the same numerical coefficient. Errors below use abs(numerical-reference)/abs(reference).
Spectral response with varying Stokes h
Here h is the target annulus Stokes element size. Each row recovers dynamic topography from that Stokes solve and applies the cylindrical spectral operator. The reference is the fully analytical Kramer traction plus Simons gravity response.
The coarse 1/4 and 1/8 errors are dominated by recovered Stokes traction/topography. Because boundary topography and the internal load substantially cancel, the under-resolved 1/4 topography also changes the total-geoid sign. The converged 1/32 result has 0.224% outer and 0.0072% inner error.
Physical Poisson response with varying gravity h
This comparison isolates the Poisson discretization: every row uses the same numerical topography coefficients from the 1/32 Stokes solution, while only the P2 gravity mesh spacing h changes. The scalable gravity domain has one radial buffer layer on each side of the mantle: rmin = ri - h and rmax = ro + h. Exact regular/decaying single-mode Robin continuation is imposed at rmin and rmax. The spectral columns use exactly the same topography and source coefficients as the corresponding Poisson solve.
The inner-interface error is approximately second order under each halving of h. At h=1/32 the one-layer domain uses 27,772 cells, only 18.73% of the 148,288-cell full-disc reference, while giving smaller errors at both interfaces.
Poisson buffer-width and exterior-radius study
At fixed h=1/32, the gravity-domain padding was varied independently. The first three rows extend the physical annulus by h, 2h, or 3h on both radial sides; the last row is the legacy full disc from the origin to exterior radius 4.44. Every row uses the same P2 discretization, 1/32 Stokes topography, and spectral targets: outer Phi=-0.662116990 and inner Phi=-0.502457968.
One h of padding is sufficient: increasing to 2h or 3h changes the interface coefficients only slightly, while the h mesh is also more accurate than the full 0-4.44 disc. At h=1/32 it uses 18.73% of the full-disc cells.
Validation
Scope and limitations