Multi-physics simulations assign more than one type of work to each mesh vertex. For example, a vertex might carry both a memory footprint (from field storage) and a compute cost (from the numerical scheme). Balancing only one of these while ignoring the other can overload processes in unexpected ways. ParMETIS supports multi-constraint partitioning — settingDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/KarypisLab/ParMETIS/llms.txt
Use this file to discover all available pages before exploring further.
ncon > 1 — so that each constraint is balanced independently across all partitions. The same PartKway, PartGeomKway, and AdaptiveRepart functions accept multi-constraint input; only the layout of the weight arrays changes.
What multi-constraint means
Withncon constraints, each vertex has ncon weights rather than one. The partitioner finds a k-way partition such that, for every constraint j, the total weight of constraint j assigned to each partition is close to the target fraction tpwgts[i*ncon+j].
Vertex weight layout
vwgt is laid out in row-major (interleaved) order: all constraints for vertex 0 first, then all constraints for vertex 1, and so on.
ncon = 2 and 3 local vertices:
Target weight layout (tpwgts)
tpwgts has nparts * ncon entries. tpwgts[i*ncon+j] is the target fraction of total constraint-j weight that should end up in partition i. For each constraint, the values across all partitions must sum to 1.0.
Imbalance tolerance per constraint (ubvec)
ubvec has ncon entries. Each entry is the maximum allowed imbalance ratio for the corresponding constraint.