include/pops/runtime/builders/block/block_seam.hpp File ReferenceΒΆ
|
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
|
Per-transport block-build seam (ADC-335 / P0-B). More...
#include <pops/core/state/variables.hpp>#include <pops/runtime/builders/block/block_builder.hpp>#include <pops/runtime/builders/block/block_builder_polar.hpp>#include <pops/runtime/builders/factory/model_factory.hpp>#include <functional>#include <string>#include <utility>#include <vector>
Include dependency graph for block_seam.hpp:Go to the source code of this file.
Classes | |
| struct | pops::detail::BuiltBlock |
| Everything System::add_block reads back from the (former) dispatch_model visitor. More... | |
| struct | pops::detail::BlockBuildArgs |
| The non-model inputs of a Cartesian block build (a thin bundle so the seam signature stays fixed). More... | |
Namespaces | |
| namespace | pops |
| namespace | pops::detail |
Functions | |
| template<class TR , class MakeFn > | |
| BuiltBlock | pops::detail::build_block_for_make (TR tr, const ModelSpec &model, const BlockBuildArgs &a, MakeFn make) |
VERBATIM Cartesian visitor body of the former dispatch_model lambda (system.cpp), with the transport brick tr already chosen, and the per-leaf BlockClosures produced by make. | |
| template<class TR > | |
| BuiltBlock | pops::detail::build_block_for (TR tr, const ModelSpec &model, const BlockBuildArgs &a) |
| Per-transport seam body: the full make_block dispatcher (all fluxes). | |
| BuiltBlock | pops::detail::build_block_exb (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_isothermal_rusanov (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_isothermal_hll (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_compressible_rusanov (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_compressible_hll (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_compressible_hllc (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_compressible_roe (const ModelSpec &model, const BlockBuildArgs &a) |
| BuiltBlock | pops::detail::build_block_polar (const ModelSpec &model, const std::string &limiter, const std::string &riemann, const PolarGridContext &pctx, bool recon_prim, const std::string &method, Real positivity_floor, const MultiFab *aux) |
Detailed Description
Per-transport block-build seam (ADC-335 / P0-B).
System::add_block used to call detail::dispatch_model(spec, lambda) directly; the lambda body instantiated make_block / the makers for EVERY transport in ONE translation unit (python/system.cpp), which is the ~1700-leaf combinatorial product whose -O3 backend pass dominates the build. This header moves that lambda body behind a fixed-signature, NON-template, hidden-visibility free function per transport (build_block_exb / isothermal / _compressible for the Cartesian path, build_block_polar for the ring). Each is defined in its own .cpp (python/system<transport>.cpp), so the per-transport leaves compile in parallel. system.cpp keeps only the string validation + a thin transport if/else.
The seam carries NO template surface: the block boundary is already type-erased (BlockClosures is a POD of std::function, the makers return std::function), so BuiltBlock is a plain bundle. The build_block_for helper is the VERBATIM Cartesian visitor body (so the reachable instantiation set is unchanged and the production binary stays byte-identical); it is instantiated only inside the per-transport TU that names its TR. The seam functions are INTERNAL (no POPS_EXPORT): the module's exported symbol table is unchanged.
Generated by