Skip to content

Conversation

@bd713
Copy link
Contributor

@bd713 bd713 commented Oct 5, 2025

Description

This PR introduces a complete refactoring of GEOS's mesh partitioning system with a new architecture that separates partitioning algorithms (engines) from domain decomposition strategies (partitioners).

In practice, a new DomainPartitioner abstract base class is introduced with two main specialized branches:

DomainPartitioner (Abstract Base)
├── GeometricPartitioner (Abstract)
│   ├── CartesianPartitioner (Concrete)
│   └── ParticleCartesianPartitioner (Concrete)
└── MeshPartitioner (Abstract)
    ├── CellGraphPartitioner (Concrete)
    └── LayeredMeshPartitioner (Concrete)

The mesh partitioners leverage low-level graph partitioner engines that are independent from MPI communication:

GraphPartitionEngine (Abstract Engine Interface)
├── ParMetisEngine (Concrete)
├── PTScotchEngine (Concrete)
└── NoOpEngine (Concrete)

A PartitionerManager is introduced for creating and managing partitioner instances.

XML Changes

Partitioning configuration moved from mesh-embedded to dedicated <Partitioner> section.

Before:

<Mesh>
   <VTKMesh
       file="mesh.vtu"
       partitionMethod="parmetis"
       partitionRefinement="2"  />
</Mesh>       

After:

<Partitioner>
  <CellGraphPartitioner engine="parmetis" numRefinements="1"/>
</Partitioner>
<Mesh>
  <VTKMesh file="mesh.vtu"/>
</Mesh>

Default behavior
If no partitioner is prescribed, an appropriate default is selected based on mesh type:

  • Internal meshes: CartesianPartitioner
  • External meshes: CellGraphPartitioner with ParMetis

To skip graph partition optimization, explicitly use engine="noop".

Testing & Rebaseline

Due to XML schema changes a rebaseline is required.
However no numerical impact is expected.

INFO: Total number of log files processed: 1047

INFO: No unfiltered differences were found.

All currently failing integrated tests are due to structural changes such as:

********************************************************************************
Error: /Problem
	Group has a child 'Partitioner' in the file to compare but not the baseline file.
********************************************************************************
********************************************************************************
Error: /Problem/domain
	Group has a child 'partitionManager' in the baseline file but not the file to compare.
********************************************************************************

DENEL Bertrand added 2 commits October 6, 2025 12:38
@bd713 bd713 added the flag: requires rebaseline Requires rebaseline branch in integratedTests label Oct 7, 2025
@bd713 bd713 removed the flag: requires rebaseline Requires rebaseline branch in integratedTests label Oct 12, 2025
@bd713 bd713 added the ci: run CUDA builds Allows to triggers (costly) CUDA jobs label Oct 13, 2025
DENEL Bertrand added 2 commits October 13, 2025 23:45
@bd713 bd713 removed the ci: run CUDA builds Allows to triggers (costly) CUDA jobs label Oct 15, 2025
@bd713 bd713 force-pushed the feature/bd713/enhancePartitioner branch from 45ad26f to 5ce56de Compare October 22, 2025 17:54
@bd713 bd713 added flag: ready for review flag: requires rebaseline Requires rebaseline branch in integratedTests and removed DO NOT MERGE ! labels Oct 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changes XML input ci: run integrated tests Allows to run the integrated tests in GEOS CI flag: ready for review flag: requires rebaseline Requires rebaseline branch in integratedTests type: cleanup / refactor Non-functional change (NFC)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants