Conversation
… initialize alpha to zero
…k for other platforms
…ion work for all operators
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
Contributor
There was a problem hiding this comment.
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.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
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:
format_version=2,state_representation,geometry) and expand restart integration to verify visualization output equivalence.Imported from Theseus, branch project/01-axisymmetry.
Original development history:
Show a summary per file
tests/restart_integration_test.pytests/CMakeLists.txttests/checkpoint_config_tests.cpptests/axisymmetry_config_tests.cpptests/axisymmetric_uniform_flow_integration_test.pytests/axisymmetric_flow_over_sphere_integration_test.pytests/axisymmetric_entropy_wave_convergence_test.pyTestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/sphere_metrics.pyTestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/README.mdTestCases/Axisymmetric/NavierStokes/ViscousSphereVerification/config.jsonTestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/README.mdTestCases/Axisymmetric/NavierStokes/ViscousFlowOverSphere/config.jsonTestCases/Axisymmetric/NavierStokes/UniformFlow/config.jsonTestCases/Axisymmetric/Euler/UniformFlow/config.jsonTestCases/Axisymmetric/Euler/FlowOverSphere/README.mdTestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_multiblock.pyTestCases/Axisymmetric/Euler/FlowOverSphere/generate_sphere_cgrid.pyTestCases/Axisymmetric/Euler/FlowOverSphere/generate_mesh.pyTestCases/Axisymmetric/Euler/FlowOverSphere/config.jsonTestCases/Axisymmetric/Euler/FlowOverCone/README.mdTestCases/Axisymmetric/Euler/FlowOverCone/generate_cone_multiblock.pyTestCases/Axisymmetric/Euler/FlowOverCone/config.jsonTestCases/Axisymmetric/Euler/FlowOverCone/cone_metrics.pyTestCases/Axisymmetric/Euler/EntropyWave/config.jsonsrc/Simulation.cppREADME.mdinclude/StateInit.hppinclude/Simulation.hppexact_solutionstorage and removes axisymmetric-only visualization state plumbing.include/SimFactory.hppr_gfplumbing from RHS factory interface.include/SimFactory_impl.hppr_gfpropagation through operator construction.include/RHSOperator.hppr_gf.include/RHSOperator_impl.hppinclude/NSOperator.hppr_gfparameter threading from NS operator construction.include/NSOperator_impl.hppinclude/NavierStokesFlux.hppinclude/EulerOperator.hppr_gfparameter threading from Euler operator construction.include/EulerOperator_impl.hppinclude/DGSEMIntegrator.hppinclude/dgsem_cache.hppinclude/dgsem_cache_utilities.hppinclude/CheckpointConfig.hppinclude/bc_kernels.hppinclude/AxisymmetryConfig.hppinclude/AxisymmetricSource.hppinclude/AxisymmetricGeometry.hppgenerate_sphere_multiblock.pydocs/verification.mddocs/README.mddocs/discretization.mddocs/checkpoints.mddocs/axisymmetry.md.github/workflows/ci-quick.yml.github/workflows/ci-nightly.yml.github/workflows/ci-complete.yml