Appearance
Tests
ADAM uses a multi-level testing strategy to ensure correctness across backends and configurations.
Unit Tests
Finite difference operator tests with trigonometric analytical solutions:
bash
# Build a specific test
fobis build --mode test-fdv-gradient-trigonometric-gnu
fobis build --mode test-fdv-divergence-trigonometric-gnu
fobis build --mode test-fdv-curl-trigonometric-gnu
fobis build --mode test-fdv-laplacian-trigonometric-gnu
fobis build --mode test-fdv-operators-trigonometric-gnu
fobis build --mode test-fdv-operators-step-gnu
# Run with MPI
mpirun -np <N> exe/<test_executable>Regression Tests
The PRISM regression suite is the structural-change baseline for the Maxwell/EM solver: CI-tuned two-rank cases run on both the CPU and FNL (GPU) backends, compared tolerance-aware against committed field-digest and residuals goldens. It covers the forest multi-realm seam machinery (α/β cadence, inter-realm 1:1 mirror seams), the intra-realm 2:1 AMR seams (with check.sh-driven div(B) oracles), reflux, and the fWLayer. See the Forest guide for the seam machinery itself.
To stand the suite up on a new machine, compiler, or GPU architecture, follow the regression bring-up tutorial.
Current status (1c6ebee5, medooza gates)
PRISM: 15 PASS, 9 SKIP on the CPU backend and 16 PASS, 8 SKIP on FNL; a SKIP is a case with no golden for that backend, or one of the two non-case directories reproducers/ and slices/. FLUME: 54/54 PASS on both backends.
The FLUME regression suite (src/tests/flume/regression/, 54 cases) is the same harness for FLUME: each case is a frozen copy of a verification input, compared against committed field digests, residual logs and conservation histories on each backend. The physics is asserted by the verification oracles (src/tests/flume/verification/, the verification gallery); this suite detects changes.
bash
src/tests/flume/regression/run.sh cpu # builds flume-cpu-gnu and flume-cpu-gnu-fft
src/tests/flume/regression/run.sh fnl --varset local_nvf # builds flume-fnl-nvf and flume-fnl-nvf-fft
REGRESSION_CASES="sod-x brio-wu" src/tests/flume/regression/run.sh cpu --no-buildSelf-gravity cases run on the -fft executable (FFTW on the CPU, cuFFT on FNL).
Research and development cases live separately under src/tests/prism/<backend>/{fd,fv}/<family>/ — long integration times, full AMR, sized for physics validation. They are not regression anchors and run.sh never descends into them.
Compiler Testing Matrix
Changes to core numerics or parallel logic are gated on both maintained toolchains (versions in Install):
- GNU gfortran — the CPU backend; the
*-debugmodes add bounds checking and FPE traps - NVIDIA nvfortran — the FNL backend (OpenACC)