Repository navigation
Conversation
Reduce source values and multiplicities through the parent field DM before owner synchronisation. This preserves spatial injection without global coordinate gathering, including add mode and untouched exterior values. A parent owner may retain no extracted-region cells even when another rank has the corresponding source node. Add independent P1/P2 vector replace/add regressions. Reproducer: annulus 2h buffers at h=1/32 on 16 ranks lose four inner-wall source values despite correct saved submesh topography. Static compilation and diff checks pass; matching versioned int32 installation, serial/MPI regression gates and affected scientific reruns remain pending on Gadi.
Avoid implicit child redistribution when a filtered region or surface occupies only one MPI rank. Preserve the parent-derived point/DOF mappings and retain the existing parent-owner reduction. Make surface emptiness validation collective so ranks outside a valid surface do not fail before PETSc extraction. Add deterministic P1/P2 replace/add coverage with the region concentrated on one parent rank, plus empty-rank re-extraction/cell-size and surface-label tests. The four new transfer cases fail on the original PR with errors 5.0/4.0 before this change. Validation on an isolated rebuilt Mac PETSc 3.25 int32/Open MPI runtime: 20 serial passed, one existing expected failure; 23 passed on each of two ranks; 10 passed on each of four ranks. Python parsing, Black test formatting, deprecated-pattern gate, CI test reachability and diff checks pass. Shared runtime and benchmark results unchanged. Next: verify the fresh Linux/MPICH CI run. Underworld development team with AI support from Claude Code
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Submesh injection can lose shared-node values when a parent DOF owner retains no extracted-region cells. Local copies reach another rank's parent ghosts, then owner synchronization overwrites them with untouched values. In the annulus workflow this zeroed four inner-wall topography values before gravity assembly.
Reduce matched values and their multiplicities through the parent field DM before synchronizing owners. Averaging shared contributions preserves replace/add semantics and leaves unmatched parent values unchanged. Production transfer uses distributed PETSc vectors without gathering global coordinates.
The original CI failure exposed a second cause: if an extracted region initially occupies one MPI rank, the filtered DM reports
isDistributed() == False. The Mesh constructor then redistributed the child, invalidating rank-local parent matches. Preserve the parent-derived partition when constructing region and surface submeshes; ordinary mesh distribution is unchanged. Surface extraction now checks for a globally empty face stratum, allowing legitimate empty ranks while still rejecting missing/empty surfaces. Independent child repartitioning remains outside coordinate-coincidence injection.Validation of the updated branch on an isolated Mac PETSc 3.25.0 int32/Open MPI 5.0.10 build:
Earlier Gadi validation applies to the unchanged owner-reduction implementation in feature commit
86cb3cf1, before the partition-preservation follow-up:Underworld development team with AI support from Claude Code