Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
8d93bc1
Update subcell blending on-device development
Jul 8, 2026
8f1cc89
Merge branch 'tacc-performance-devel' into tacc-devel-merge
Jul 8, 2026
facb107
Add extra libs, device sync option
Jul 15, 2026
66e734f
Use specific PerssonPeraire indicator, provide access to modal basis,…
Jul 15, 2026
5a14691
Clean up unused vars, gpu compile warnings
Jul 15, 2026
76145ed
Add device sync to timers, add restriction gating vars, cleanup
Jul 15, 2026
e649aa0
Add config echo, options for disabling theseus viz writes, mesh refin…
Jul 15, 2026
a6d7e52
Add umpire junk, force overwrite for LTE/Plato database. Might be jun…
Jul 15, 2026
725c4f3
Gate restrictions, do subcell blending on-device, do common prolongat…
Jul 16, 2026
9d61c54
CNS with device subcell blending
Jul 21, 2026
b89d39f
Clean up a bit
MTCam Jul 29, 2026
080c731
Fix crazy temperature init for LDC
MTCam Jul 29, 2026
f6a9d3f
Merge branch 'main' into tacc-performance
MTCam Jul 29, 2026
6aa908b
Restore garbled merge from upstream
MTCam Jul 29, 2026
d88210b
Apply suggestions from copilot code review
MTCam Jul 29, 2026
6f78caf
Clean up per review comments
MTCam Jul 29, 2026
fa37321
Merge branch 'main' into tacc-performance
MTCam Aug 2, 2026
be5316e
Bucket of improvements, hardening
MTCam Aug 2, 2026
b1e6b33
Import axisym
MTCam Aug 3, 2026
e99911e
Import axisym-ci
MTCam Aug 3, 2026
9ee75a9
Update eqn markup
MTCam Aug 3, 2026
7b515a7
Update markup in axi doc
MTCam Aug 3, 2026
5c6616b
Fix render issue
MTCam Aug 3, 2026
524407f
Sharpen docs of axi, etc
MTCam Aug 3, 2026
467e1a6
Updates for testing
MTCam Aug 4, 2026
b2bac06
Update docs for axi a bit
MTCam Aug 4, 2026
38c9d23
add axi sphere docs
MTCam Aug 4, 2026
70024e8
Import axi-test-viscous
MTCam Aug 4, 2026
ea2c29b
Restore previous dinky mesh for testing
MTCam Aug 4, 2026
28c7430
Extend timeout for sphere test (bigger mesh)
MTCam Aug 4, 2026
5e62461
Add cone case
MTCam Aug 4, 2026
e1c38ab
Enforce axis parity relations
Aug 5, 2026
64f6f24
Replace incorrect license text
MTCam Aug 5, 2026
90a0f1c
Merge branch 'bucket-2' into axisym
MTCam Aug 5, 2026
7fa9c73
Replace wrong license, use old numpy trapz
Aug 5, 2026
8d3641d
Merge branch 'main' into axisym
MTCam Aug 5, 2026
0448840
Update for axisym
MTCam Aug 5, 2026
56e6886
Apply suggestions from code review
MTCam Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions .github/workflows/ci-complete.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: CI Complete

on:
pull_request:
types: [opened, synchronize, labeled, reopened]

jobs:
asan-ubsan-and-examples:
if: contains(github.event.pull_request.labels.*.name, 'full-ci')
name: Ubuntu/MPICH/Clang-15/ASan/UBSan/Examples
runs-on: ubuntu-22.04
env:
CMAKE_BUILD_TYPE: RelWithDebInfo
steps:
- name: Checkout (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: Show submodule SHAs (debug)
run: git submodule status --recursive

- name: Toolchain & deps
run: |
sudo apt-get update
sudo apt-get install -y \
clang-15 lld-15 \
mpich libmpich-dev environment-modules \
gcc-12 g++-12 gfortran-12 \
cmake ninja-build pkg-config ccache jq
echo "CC=mpicc" >> $GITHUB_ENV
echo "CXX=mpicxx" >> $GITHUB_ENV
echo "FC=mpifort" >> $GITHUB_ENV
echo "MPICH_CC=clang-15" >> $GITHUB_ENV
echo "MPICH_CXX=clang++-15" >> $GITHUB_ENV

- name: Build dependency submodules (HYPRE, METIS, MFEM)
shell: bash
run: |
set -euo pipefail
if [ -f /etc/profile.d/modules.sh ]; then
source /etc/profile.d/modules.sh
else
module() { return 0; }; export -f module
fi
bash ./build_depends.sh

- name: Configure Prandtl (ASan/UBSan)
env:
MFEM_DIR: ${{ github.workspace }}/libs/mfem
HYPRE_DIR: ${{ github.workspace }}/libs/hypre/src/hypre
METIS_DIR: ${{ github.workspace }}/libs/metis-5.1.0
run: |
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-DBUILD_TESTING=ON \
-DMFEM_DIR="${MFEM_DIR}" \
-DHYPRE_DIR="${HYPRE_DIR}" \
-DMETIS_DIR="${METIS_DIR}" \
-DCMAKE_C_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer" \
-DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer" \
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"

- name: Build
run: cmake --build build -- -k 0

- name: CTest (unit + smoke)
run: ctest --test-dir build -L "(unit|smoke)" -j2 --output-on-failure

- name: Example set (short, 100 steps)
run: |
cat > examples-complete.txt <<'EOF'
TestCases/Euler/1D/Problem123/config.json
TestCases/Euler/1D/ShuOsherShock/config.json
TestCases/Euler/1D/SodShockTube/config.json
TestCases/Euler/1D/WoodwardColellaBlastWave/config.json
TestCases/Euler/1D/WoodwardColellaBlastWaveCollision/config.json
TestCases/Euler/1D/WoodwardColellaBlastWaveLeft/config.json
TestCases/Euler/1D/WoodwardColellaBlastWaveRight/config.json
TestCases/Euler/1D/AcousticWave/config.json
TestCases/Euler/1D/LaxShockTube/config.json
TestCases/Euler/1D/LeBlancShockTube/config.json
TestCases/Euler/1D/ModifiedSodShockTube/config.json
TestCases/Euler/2D/ForwardFacingStep/config.json
TestCases/Euler/2D/IsentropicVortex/config.json
TestCases/Euler/2D/KelvinHelmholtzInstability/config.json
# Nagashima_Ramjet and Ramp request an AXISYMMETRIC executable and
# must not be exercised by this Cartesian example job.
TestCases/Euler/2D/BackwardFacingStep/config.json
TestCases/Euler/2D/TriplePointShockInteraction/config.json
TestCases/NavierStokes/2D/LidDrivenCavity/config.json
EOF
scripts/test_run_example.sh -l examples-complete.txt -n 100

- name: Upload logs & example outputs
if: always()
uses: actions/upload-artifact@v4
with:
name: prandtl-complete-logs
path: |
build/Testing/**/Test.xml
build/CMakeCache.txt
build/**/*.log
Run1/Run2/**/out/**
38 changes: 38 additions & 0 deletions .github/workflows/ci-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,41 @@ jobs:
cmake --build build -- -k 0
ldd build/theseus || true

- name: Configure axisymmetric integration build
env:
CC: ${{ env.CC }}
CXX: ${{ env.CXX }}
FC: ${{ env.FC }}
MFEM_DIR: ${{ github.workspace }}/tpl/install
run: |
cmake -S . -B build-axisymmetric -G Ninja \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-DBUILD_TESTING=ON \
-DCMAKE_PREFIX_PATH=${MFEM_DIR} \
-DCMAKE_BUILD_RPATH=${MFEM_DIR}/lib \
-DCMAKE_INSTALL_RPATH=${MFEM_DIR}/lib \
-DSUBCELL_FV_BLENDING=ON -DNO_OPT=ON \
-DAXISYMMETRIC=ON \
-DTHESEUS_WITH_PLATO=ON

- name: Build axisymmetric integration executable
run: cmake --build build-axisymmetric -- -k 0

- name: Integration test (restart)
run: >-
ctest --test-dir build-axisymmetric
-R '^CheckpointRestartIntegration$' --output-on-failure

- name: Integration test (inviscid axisymmetry)
run: >-
ctest --test-dir build-axisymmetric
-R '^AxisymmetricInviscidSphereIntegration$' --output-on-failure

- name: Integration test (viscous axisymmetry)
run: >-
ctest --test-dir build-axisymmetric
-R '^AxisymmetricViscousSphereIntegration$' --output-on-failure

- name: Example smoke test (Euler, IsentropicVortex)
run: |
scripts/run_theseus.sh \
Expand Down Expand Up @@ -216,8 +251,11 @@ jobs:
name: theseus-quick-logs
path: |
build/Testing/**/Test.xml
build-axisymmetric/Testing/**/Test.xml
build/CMakeCache.txt
build-axisymmetric/CMakeCache.txt
build/**/*.log
build-axisymmetric/**/*.log
RegressionTests
RunTheseus
RunTests
38 changes: 38 additions & 0 deletions .github/workflows/ci-quick.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,41 @@ jobs:
cmake --build build -- -k 0
ldd build/theseus || true

- name: Configure axisymmetric integration build
env:
CC: ${{ env.CC }}
CXX: ${{ env.CXX }}
FC: ${{ env.FC }}
MFEM_DIR: ${{ github.workspace }}/tpl/install
run: |
cmake -S . -B build-axisymmetric -G Ninja \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-DBUILD_TESTING=ON \
-DCMAKE_PREFIX_PATH=${MFEM_DIR} \
-DCMAKE_BUILD_RPATH=${MFEM_DIR}/lib \
-DCMAKE_INSTALL_RPATH=${MFEM_DIR}/lib \
-DSUBCELL_FV_BLENDING=ON -DNO_OPT=ON \
-DAXISYMMETRIC=ON \
-DTHESEUS_WITH_PLATO=YES

- name: Build axisymmetric integration executable
run: cmake --build build-axisymmetric -- -k 0

- name: Integration test (restart)
run: >-
ctest --test-dir build-axisymmetric
-R '^CheckpointRestartIntegration$' --output-on-failure

- name: Integration test (inviscid axisymmetry)
run: >-
ctest --test-dir build-axisymmetric
-R '^AxisymmetricInviscidSphereIntegration$' --output-on-failure

- name: Integration test (viscous axisymmetry)
run: >-
ctest --test-dir build-axisymmetric
-R '^AxisymmetricViscousSphereIntegration$' --output-on-failure

- name: Example smoke test (Euler, IsentropicVortex)
run: |
scripts/run_theseus.sh \
Expand Down Expand Up @@ -213,8 +248,11 @@ jobs:
name: theseus-quick-logs
path: |
build/Testing/**/Test.xml
build-axisymmetric/Testing/**/Test.xml
build/CMakeCache.txt
build-axisymmetric/CMakeCache.txt
build/**/*.log
build-axisymmetric/**/*.log
RegressionTests
RunTheseus
RunTests
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,15 @@ make test

`ci-quick.yml` runs:

- restart, inviscid-axisymmetric, and viscous-axisymmetric integration tests
with a dedicated axisymmetric build
- direct smoke runs using `scripts/run_theseus.sh`
- regression checks using `scripts/compare_viz.py`
- unit tests via `ctest`

The complete test inventory, assertions, step counts, and tolerances are in the
[verification and CI matrix](docs/verification.md).

Two quick local smoke examples:

```bash
Expand Down
51 changes: 51 additions & 0 deletions TestCases/Axisymmetric/Euler/EntropyWave/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"compileTime": {
"PARABOLIC": false,
"AXISYMMETRIC": true,
"SUBCELL_FV_BLENDING": true,
"SUTHERLAND": false,
"USE_FILTER": false
},
"runTime": {
"order": 2,
"dim": 2,
"num_equations": 4,
"precision": 15,
"visualize": false,
"output_file_path": "../../TestCases/Axisymmetric/Euler/EntropyWave",
"nancheck": true,
"nancheck_steps": 50,
"clock_simulation": false,
"variable_dt": false,
"dt": 5e-5,
"final_time": 0.01,
"R_gas": 287.05,
"gamma": 1.4,
"ser_ref_levels": 0,
"mesh_file": "../../TestCases/NavierStokes/2D/LidDrivenCavity/LidDrivenCavity.msh",
"conditions": {
"initial_conditions": {
"signature": 1,
"params": {"x1": 1.4},
"function": "AxisymmetricEntropyWaveIC"
},
"boundary_conditions": {
"left": {
"type": "supersonic-inflow",
"vector": "RampInletBCVector"
},
"right": {"type": "supersonic-outflow"},
"bottom": {"type": "axis"},
"lid": {"type": "slip"}
}
},
"exact_solution": {
"signature": 1,
"params": {"x1": 1.4},
"function": "AxisymmetricEntropyWaveExact"
},
"lifting_scheme": "BR1",
"numerical_flux": "Chandrashekar",
"ode_solver": "RK3SSP"
}
}
Loading
Loading