Skip to content

Import axisym - #8

Merged
MTCam merged 38 commits into
mainfrom
axisym
Aug 5, 2026
Merged

Import axisym#8
MTCam merged 38 commits into
mainfrom
axisym

Conversation

@MTCam

@MTCam MTCam commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Pull request overview

This PR imports and integrates axisymmetric (swirl-free cylindrical) capability into Theseus, including configuration/mesh validation, axisymmetric Euler/CNS source terms, checkpoint metadata semantics, expanded verification tests, and CI coverage for an axisymmetric build.

Changes:

  • Add axisymmetric geometry/config contracts and implement inviscid + viscous axisymmetric source terms in the DGSEM operators (including axis boundary validation and cylindrical measures for diagnostics/errors).
  • Strengthen checkpoint/restart compatibility via explicit metadata fields (format_version=2, state_representation, geometry) and expand restart integration to verify visualization output equivalence.
  • Add axisymmetric unit/integration tests, new axisymmetric test cases + documentation, and extend CI workflows to build/test an axisymmetric executable.

Imported from Theseus, branch project/01-axisymmetry.
Original development history:

  • Define axisymmetric configuration contract
  • Use conservative state for axisymmetric runs
  • Cache axisymmetric radius geometry
  • Add inviscid axisymmetric source away from axis
  • Handle inviscid source limit at axis
  • Activate and validate axis boundary condition
  • Use cylindrical measure for diagnostics
  • Cache radius on interior faces
  • Add off-axis axisymmetric viscous terms
  • Handle viscous terms at symmetry axis
  • Add axisymmetric uniform flow regression
  • Add axisymmetric entropy wave convergence test
  • Add axisymmetric viscous flow regression
  • Test axisymmetric restart and visualization
  • Prepare axisymmetric tests for device execution
  • Document axisymmetric formulation and qualification
  • Add axisymmetric flow over sphere test
  • Add viscous axisymmetric sphere case
Show a summary per file
File Description
tests/restart_integration_test.py Extends restart integration to verify ParaView output equivalence and supports axisymmetric case selection.
tests/CMakeLists.txt Adds axisymmetric unit/integration tests and AXISYMMETRIC-enabled restart argument wiring.
tests/checkpoint_config_tests.cpp Updates checkpoint metadata expectations and adds axisymmetric metadata validation tests.
tests/axisymmetry_config_tests.cpp New unit tests for axisymmetry configuration + mesh contract validation.
tests/axisymmetric_uniform_flow_integration_test.py New integration test for exact axisymmetric uniform flow (serial vs MPI).
tests/axisymmetric_flow_over_sphere_integration_test.py New smoke integration test for axisymmetric flow over a sphere (serial vs MPI).
tests/axisymmetric_entropy_wave_convergence_test.py New cylindrical-norm convergence integration test for an entropy wave.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/sphere_metrics.py New postprocessor to compute viscous sphere wake/drag/separation metrics from ParaView output.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/README.md Documents viscous sphere quantitative demonstration and postprocessing checks.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/config.json Adds a quantitative viscous-sphere axisymmetric CNS demonstration configuration.
TestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/README.md Documents axisymmetric viscous sphere smoke test case.
TestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/config.json Adds axisymmetric CNS viscous sphere smoke configuration.
TestCases/Axisymmetric/NavierStokes/UniformFlow/config.json Adds axisymmetric CNS uniform flow case config.
TestCases/Axisymmetric/Euler/UniformFlow/config.json Adds axisymmetric Euler uniform flow case config.
TestCases/Axisymmetric/Euler/FlowOverSphere/README.md Documents axisymmetric Euler sphere case and mesh regeneration.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_multiblock.py Adds a deterministic multiblock axisymmetric sphere mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_cgrid.py Adds an alternative axisymmetric sphere C-grid mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_mesh.py Adds a simple deterministic axisymmetric sphere mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/config.json Adds axisymmetric Euler flow-over-sphere case config.
TestCases/Axisymmetric/Euler/FlowOverCone/README.md Documents axisymmetric Euler flow-over-cone demonstration and metrics.
TestCases/Axisymmetric/Euler/FlowOverCone/generate_cone_multiblock.py Adds multiblock cone mesh generator with quality checks.
TestCases/Axisymmetric/Euler/FlowOverCone/config.json Adds axisymmetric Euler flow-over-cone demonstration config.
TestCases/Axisymmetric/Euler/FlowOverCone/cone_metrics.py Adds postprocessor to compare numerical cone flow to Taylor–Maccoll references.
TestCases/Axisymmetric/Euler/EntropyWave/config.json Adds axisymmetric entropy-wave case config for convergence testing.
src/Simulation.cpp Adds axisymmetry config/mesh validation, exact-solution error reporting, and updates checkpoint compatibility metadata.
README.md Updates top-level test summary and points to verification/CI matrix.
include/StateInit.hpp Adds axisymmetric entropy-wave IC/exact solution and viscous sphere freestream IC/BC registration.
include/Simulation.hpp Adds exact_solution storage and removes axisymmetric-only visualization state plumbing.
include/SimFactory.hpp Removes r_gf plumbing from RHS factory interface.
include/SimFactory_impl.hpp Removes r_gf propagation through operator construction.
include/RHSOperator.hpp Adds axisymmetric source include and removes stored r_gf.
include/RHSOperator_impl.hpp Applies cylindrical measures to diagnostics and validates axis boundary geometry.
include/NSOperator.hpp Removes r_gf parameter threading from NS operator construction.
include/NSOperator_impl.hpp Adds axisymmetric primitive-gradient projection and passes axisymmetric radius into viscous kernels/sources.
include/NavierStokesFlux.hpp Extends viscous flux kernels to account for axisymmetric divergence and azimuthal stress.
include/EulerOperator.hpp Removes r_gf parameter threading from Euler operator construction.
include/EulerOperator_impl.hpp Adds axisymmetric Euler element source contribution.
include/DGSEMIntegrator.hpp Threads face/element radius into viscous flux evaluation and adds axisymmetric viscous sources.
include/dgsem_cache.hpp Extends cache structures with axisymmetric flags and radius arrays.
include/dgsem_cache_utilities.hpp Builds/caches element+face radii, validates axis boundary radii, and threads axisymmetric flag into device cache.
include/CheckpointConfig.hpp Upgrades checkpoint metadata format and enforces geometry/state semantics compatibility checks.
include/bc_kernels.hpp Adds axis BC reflection behavior and threads axisymmetric radius into viscous BC fluxes.
include/AxisymmetryConfig.hpp New axisymmetry configuration + mesh validation contract.
include/AxisymmetricSource.hpp New axisymmetric inviscid + viscous source term implementations (incl. axis limits).
include/AxisymmetricGeometry.hpp New axisymmetric geometry contract utilities (radius validation, cylindrical measure multiplier).
generate_sphere_multiblock.py Adds a repo-level copy of the axisymmetric sphere multiblock generator.
docs/verification.md Adds maintained verification/CI matrix with assertions, tolerances, and reproduction commands.
docs/README.md Updates docs index to include axisymmetry + verification references.
docs/discretization.md Expands DGSEM discretization documentation and documents axisymmetric CNS considerations.
docs/checkpoints.md Updates checkpoint docs to reflect geometry/state-representation metadata and legacy behavior.
docs/axisymmetry.md Adds axisymmetry formulation/specification + testing coverage documentation.
.github/workflows/ci-quick.yml Adds axisymmetric build and dedicated integration-test steps + artifacts.
.github/workflows/ci-nightly.yml Adds axisymmetric build and dedicated integration-test steps + artifacts.
.github/workflows/ci-complete.yml Adds an opt-in “full-ci” workflow for broader sanitizer/examples coverage.

Michael Campbell and others added 30 commits July 7, 2026 20:33
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Imported from Theseus, branch project/01-axisymmetry.
Source range: f1205d80441fc7b6b222c99016cb3fd5d06bd861..22998f3

Original development history:

- Define axisymmetric configuration contract
- Use conservative state for axisymmetric runs
- Cache axisymmetric radius geometry
- Add inviscid axisymmetric source away from axis
- Handle inviscid source limit at axis
- Activate and validate axis boundary condition
- Use cylindrical measure for diagnostics
- Cache radius on interior faces
- Add off-axis axisymmetric viscous terms
- Handle viscous terms at symmetry axis
- Add axisymmetric uniform flow regression
- Add axisymmetric entropy wave convergence test
- Add axisymmetric viscous flow regression
- Test axisymmetric restart and visualization
- Prepare axisymmetric tests for device execution
- Document axisymmetric formulation and qualification
- Add axisymmetric flow over sphere test
- Add viscous axisymmetric sphere case
Imported from Theseus, branch project/01-axisymmetry.
Source range: 22998f38f1238f17c2e56ad10d63dea7d527a2fc..e4d28df

Original development history:

- Add axisymmetric integration tests to CI
Imported from Theseus, branch project/01-axisymmetry.
Source range: 9be0530e05139909414c6b162db54a2453b90849..35a4ae2

Original development history:

- Add viscous axisymmetric sphere verification case
@MTCam
MTCam changed the base branch from bucket-2 to main August 5, 2026 18:03
@MTCam
MTCam requested a lite review from Copilot August 5, 2026 19:03
@MTCam
MTCam marked this pull request as ready for review August 5, 2026 19:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR imports and integrates axisymmetric (swirl-free cylindrical) capability into Theseus, including configuration/mesh validation, axisymmetric Euler/CNS source terms, checkpoint metadata semantics, expanded verification tests, and CI coverage for an axisymmetric build.

Changes:

  • Add axisymmetric geometry/config contracts and implement inviscid + viscous axisymmetric source terms in the DGSEM operators (including axis boundary validation and cylindrical measures for diagnostics/errors).
  • Strengthen checkpoint/restart compatibility via explicit metadata fields (format_version=2, state_representation, geometry) and expand restart integration to verify visualization output equivalence.
  • Add axisymmetric unit/integration tests, new axisymmetric test cases + documentation, and extend CI workflows to build/test an axisymmetric executable.

Reviewed changes

Copilot reviewed 56 out of 59 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/restart_integration_test.py Extends restart integration to verify ParaView output equivalence and supports axisymmetric case selection.
tests/CMakeLists.txt Adds axisymmetric unit/integration tests and AXISYMMETRIC-enabled restart argument wiring.
tests/checkpoint_config_tests.cpp Updates checkpoint metadata expectations and adds axisymmetric metadata validation tests.
tests/axisymmetry_config_tests.cpp New unit tests for axisymmetry configuration + mesh contract validation.
tests/axisymmetric_uniform_flow_integration_test.py New integration test for exact axisymmetric uniform flow (serial vs MPI).
tests/axisymmetric_flow_over_sphere_integration_test.py New smoke integration test for axisymmetric flow over a sphere (serial vs MPI).
tests/axisymmetric_entropy_wave_convergence_test.py New cylindrical-norm convergence integration test for an entropy wave.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/sphere_metrics.py New postprocessor to compute viscous sphere wake/drag/separation metrics from ParaView output.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/README.md Documents viscous sphere quantitative demonstration and postprocessing checks.
TestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/config.json Adds a quantitative viscous-sphere axisymmetric CNS demonstration configuration.
TestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/README.md Documents axisymmetric viscous sphere smoke test case.
TestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/config.json Adds axisymmetric CNS viscous sphere smoke configuration.
TestCases/Axisymmetric/NavierStokes/UniformFlow/config.json Adds axisymmetric CNS uniform flow case config.
TestCases/Axisymmetric/Euler/UniformFlow/config.json Adds axisymmetric Euler uniform flow case config.
TestCases/Axisymmetric/Euler/FlowOverSphere/README.md Documents axisymmetric Euler sphere case and mesh regeneration.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_multiblock.py Adds a deterministic multiblock axisymmetric sphere mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_cgrid.py Adds an alternative axisymmetric sphere C-grid mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/generate_mesh.py Adds a simple deterministic axisymmetric sphere mesh generator.
TestCases/Axisymmetric/Euler/FlowOverSphere/config.json Adds axisymmetric Euler flow-over-sphere case config.
TestCases/Axisymmetric/Euler/FlowOverCone/README.md Documents axisymmetric Euler flow-over-cone demonstration and metrics.
TestCases/Axisymmetric/Euler/FlowOverCone/generate_cone_multiblock.py Adds multiblock cone mesh generator with quality checks.
TestCases/Axisymmetric/Euler/FlowOverCone/config.json Adds axisymmetric Euler flow-over-cone demonstration config.
TestCases/Axisymmetric/Euler/FlowOverCone/cone_metrics.py Adds postprocessor to compare numerical cone flow to Taylor–Maccoll references.
TestCases/Axisymmetric/Euler/EntropyWave/config.json Adds axisymmetric entropy-wave case config for convergence testing.
src/Simulation.cpp Adds axisymmetry config/mesh validation, exact-solution error reporting, and updates checkpoint compatibility metadata.
README.md Updates top-level test summary and points to verification/CI matrix.
include/StateInit.hpp Adds axisymmetric entropy-wave IC/exact solution and viscous sphere freestream IC/BC registration.
include/Simulation.hpp Adds exact_solution storage and removes axisymmetric-only visualization state plumbing.
include/SimFactory.hpp Removes r_gf plumbing from RHS factory interface.
include/SimFactory_impl.hpp Removes r_gf propagation through operator construction.
include/RHSOperator.hpp Adds axisymmetric source include and removes stored r_gf.
include/RHSOperator_impl.hpp Applies cylindrical measures to diagnostics and validates axis boundary geometry.
include/NSOperator.hpp Removes r_gf parameter threading from NS operator construction.
include/NSOperator_impl.hpp Adds axisymmetric primitive-gradient projection and passes axisymmetric radius into viscous kernels/sources.
include/NavierStokesFlux.hpp Extends viscous flux kernels to account for axisymmetric divergence and azimuthal stress.
include/EulerOperator.hpp Removes r_gf parameter threading from Euler operator construction.
include/EulerOperator_impl.hpp Adds axisymmetric Euler element source contribution.
include/DGSEMIntegrator.hpp Threads face/element radius into viscous flux evaluation and adds axisymmetric viscous sources.
include/dgsem_cache.hpp Extends cache structures with axisymmetric flags and radius arrays.
include/dgsem_cache_utilities.hpp Builds/caches element+face radii, validates axis boundary radii, and threads axisymmetric flag into device cache.
include/CheckpointConfig.hpp Upgrades checkpoint metadata format and enforces geometry/state semantics compatibility checks.
include/bc_kernels.hpp Adds axis BC reflection behavior and threads axisymmetric radius into viscous BC fluxes.
include/AxisymmetryConfig.hpp New axisymmetry configuration + mesh validation contract.
include/AxisymmetricSource.hpp New axisymmetric inviscid + viscous source term implementations (incl. axis limits).
include/AxisymmetricGeometry.hpp New axisymmetric geometry contract utilities (radius validation, cylindrical measure multiplier).
generate_sphere_multiblock.py Adds a repo-level copy of the axisymmetric sphere multiblock generator.
docs/verification.md Adds maintained verification/CI matrix with assertions, tolerances, and reproduction commands.
docs/README.md Updates docs index to include axisymmetry + verification references.
docs/discretization.md Expands DGSEM discretization documentation and documents axisymmetric CNS considerations.
docs/checkpoints.md Updates checkpoint docs to reflect geometry/state-representation metadata and legacy behavior.
docs/axisymmetry.md Adds axisymmetry formulation/specification + testing coverage documentation.
.github/workflows/ci-quick.yml Adds axisymmetric build and dedicated integration-test steps + artifacts.
.github/workflows/ci-nightly.yml Adds axisymmetric build and dedicated integration-test steps + artifacts.
.github/workflows/ci-complete.yml Adds an opt-in “full-ci” workflow for broader sanitizer/examples coverage.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread include/AxisymmetryConfig.hpp
Comment thread src/Simulation.cpp Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@MTCam
MTCam merged commit 0a57572 into main Aug 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants