|
DNDSR 0.2.1
Distributed Numeric Data Structure for CFV
|
Tests for the mesh geometry infrastructure in src/Geom/. All C++ tests use doctest. MPI-aware tests are registered with CTest at multiple process counts.
| CMake target | CTest name | Source file | Timeout |
|---|---|---|---|
geom_test_elements | geom_elements | test_Elements.cpp | 120 s |
geom_test_quadrature | geom_quadrature | test_Quadrature.cpp | 120 s |
geom_test_mesh_index_conversion | geom_mesh_index_conversion_np{1,2,4} | test_MeshIndexConversion.cpp | 120 s |
geom_test_mesh_pipeline | geom_mesh_pipeline_np{1,2,4} | test_MeshPipeline.cpp | 120 s |
geom_test_mesh_distributed_read | geom_mesh_distributed_read_np{1,2,4} | test_MeshDistributedRead.cpp | 120 s |
geom_test_mesh_connectivity | geom_mesh_connectivity_np{1,2,4} | test_MeshConnectivity.cpp | 120 s |
geom_test_mesh_connectivity_ghost | geom_mesh_connectivity_ghost_np{1,2,4} | test_MeshConnectivity_Ghost.cpp | 120 s |
geom_test_mesh_connectivity_interpolate | geom_mesh_connectivity_interpolate_np{1,2,4} | test_MeshConnectivity_Interpolate.cpp | 120 s |
geom_test_mesh_reorder | geom_mesh_reorder_np{1,2,4} | test_MeshReorder.cpp | 120 s |
Serial-only tests for element geometry definitions, node counts, and shape function evaluation.
Serial-only tests for Gaussian quadrature points and weights on standard elements (triangles, quads, tetrahedra, hexahedra, prisms, pyramids).
MPI-parallel tests verifying local-to-global and global-to-local index conversions on partitioned meshes.
MPI-parallel end-to-end tests for the mesh construction pipeline: reading, partitioning, ghost creation, and boundary extraction.
MPI-parallel tests for reading CGNS mesh files in parallel and redistributing across different partition counts.
MPI-parallel tests for the MeshConnectivity standalone DSL operations: Inverse, Compose, ComposeFiltered, Interpolate, and adjacency registry management. Validates cone/support inversion, compose with predicates, and entity-kind registration.
MPI-parallel tests for evaluateGhostTree, GhostSpec, CompiledGhostTree, and multi-layer ghost cell support. Tests include single-layer and multi-layer ghost chains, scratch-pull between BFS levels, and 2D tiled synthetic grids with analytical ghost formulas.
MPI-parallel tests for InterpolateGlobal — distributed sub-entity extraction with global deduplication and periodic-aware matching.
MPI-parallel tests for the distributed entity reordering framework: ReorderPlan, ReorderRegistry, ReorderInput, and UnstructuredMesh::ReorderEntities. See Distributed Reorder Design for the architecture, and PermutationTransfer Tests for the underlying MPI primitive.
classifyAdj basic classification** — exhaustively covers all five AdjAction outcomes (SKIP, RELOCATE, REMAP, RELOCATE_REMAP, SELF) across cell-only, node-only, both-reordered, and intra-level adjacency scenarios.ReorderRegistry register and query** — registerAdj, registerCompanion, registerGlobalMapping, and getGlobalMapping with both hits and misses. Verifies callback storage and retrieval.ReorderPlan::apply cell-only local permutation** — synthetic cell/node arrays with identity cell partition; validates that the registered RELOCATE callback is invoked and data is preserved.ReorderPlan::apply node-only remap** — node reorder with cells unchanged; validates REMAP path and companion relocate for the node-parallel coords analog.ReorderPlan::apply RELOCATE_REMAP (both source and target reordered)** — explicitly exercises the fourth AdjAction case: cell2node with both Cell and Node in the reorder set. Asserts classifyAdj returns RELOCATE_REMAP and confirms data integrity after both phases.UniformSquare_10.cgns — identity partition, full rebuild pipeline (RecoverNode2Cell → BuildGhost → Global2Local); verifies counts and entry validity.destroyKinds={EntityKind::Face}, then rebuilds from scratch via InterpolateFace.i % nRanks); Node and Bnd automatically follow Cell via the default follow policy. Validates global count preservation, entry validity, and post-reorder mesh rebuild.fromLocalPermutation with a non-identity permutation and verifies that each old global maps to the exact expected new global via lookup.resolve(). Also verifies that row data moves to the permuted slot.ReorderEntities with external companion array (solver-like)** — creates an external ArrayAdjacencyPair<3> tagged with per-cell DOF patterns (column pattern (g*10+0, g*10+1, g*10+2)), registers it as a companion via registerCompanion on the registry returned by buildReorderRegistry, applies the plan, and verifies that all three columns of each row travel together (DOF layout preserved across distribution). Demonstrates the pattern for solver arrays that must participate in mesh reordering.buildReorderRegistry populates pullSets** — validates that pull-set entries are off-rank, within [0, globalSize), sorted, and unique. Confirms all expected adjacency and companion entries are registered by UnstructuredMesh::buildReorderRegistry.