API C++¶
The complete C++ reference of adc_cpp (all classes, concepts and functions, with the
signatures and the header comments) is generated by Doxygen from the headers
include/pops/**. It is published online:
Doxygen site: https://wolf75222.github.io/adc_cpp/cpp/
The same reference is also embedded in this site (“Embedded C++ API” entry in the sidebar,
or https://wolf75222.github.io/adc_cpp/doxygen/): pages generated by doxysphinx,
integrated into the Sphinx navigation and search. The raw Doxygen site stays published under
/cpp/ unchanged.
The Doxygen configuration lives in the repository: docs/Doxyfile. Regenerating it
locally produces the HTML under the configured output directory:
doxygen docs/Doxyfile
The library is header-only (C++23 templates and concepts): there is no .a/.so object
to link for the core, you include the headers. The three design axes are orthogonal
(physical model x numerical flux x elliptic solver), composed through a single parallelism seam
(for_each_cell: serial / OpenMP / Kokkos; comm.hpp: MPI collectives). See
ARCHITECTURE.md and CHOICES.md.
Main concepts and classes¶
Symbol |
Role |
|---|---|
|
Physical model concept: state, physical flux, eigenvalues, conservative <-> primitive conversions, elliptic right-hand side. This is the “equation” axis. |
|
Riemann numerical flux policy at the face (Rusanov / HLL / HLLC / Roe). This is the “flux” axis, chosen independently of the model. |
|
Elliptic solver concept ( |
|
Runtime coupler: composes blocks (one model per block), shares a system Poisson, advances the whole. Exposed to the Python binding as |
|
Refined counterpart of |
|
Multigrid Poisson solver (V-cycle, red-black Gauss-Seidel smoother); handles conducting wall and cut-cell. Any case (including non-periodic). |
|
Direct spectral Poisson solver (FFT); periodic domain, |
|
FFT Poisson under MPI (ADC-287): presents the System single box, box-slab scatter/gather around |
|
Multi-patch AMR coupler: Berger-Rigoutsos regrid, time subcycling of the fine levels, coverage-aware reflux at the coarse-fine interface. |
(The canonical definitions of these symbols live respectively in
include/pops/core/model/physical_model.hpp, include/pops/numerics/fv/numerical_flux.hpp,
include/pops/numerics/elliptic/interface/elliptic_solver.hpp, include/pops/runtime/system.hpp,
include/pops/runtime/amr_system.hpp, include/pops/numerics/elliptic/mg/geometric_mg.hpp,
include/pops/numerics/elliptic/poisson/poisson_fft_solver.hpp,
include/pops/coupling/amr/amr_coupler_mp.hpp.)
For the test coverage of these components by backend, see backend matrix.