include/pops/runtime/builders/block/amr_block_seam.hpp File ReferenceΒΆ

adc_cpp: include/pops/runtime/builders/block/amr_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
amr_block_seam.hpp File Reference

Per-transport block-build seam for AmrSystem (ADC-335 / P0-B), mirror of block_seam.hpp. More...

#include <pops/core/state/variables.hpp>
#include <pops/runtime/builders/compiled/amr_dsl_block.hpp>
#include <pops/runtime/amr/amr_runtime.hpp>
#include <pops/runtime/builders/factory/model_factory.hpp>
#include <algorithm>
#include <stdexcept>
#include <string>
#include <vector>
+ Include dependency graph for amr_block_seam.hpp:

Go to the source code of this file.

Classes

struct  pops::detail::AmrBlockBuildArgs
 Non-model inputs of a MULTI-block AMR build (the fields the build_multi visitor read off the BlockSpec). More...
 

Namespaces

namespace  pops
 
namespace  pops::detail
 

Functions

std::vector< int > pops::detail::resolve_implicit_components_amr (const std::string &block, const VariableSet &cons, const std::vector< std::string > &names, const std::vector< std::string > &roles)
 AMR partial-IMEX-mask resolution, moved out of amr_system.cpp's anonymous namespace (ADC-335) so the per-transport seam TUs share one definition.
 
template<class TR >
AmrRuntimeBlock pops::detail::build_amr_block_for (TR tr, const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 VERBATIM build_multi visitor body with the transport pinned: resolve the partial IMEX mask against the concrete model, map the temporal method, and produce the type-erased AmrRuntimeBlock via dispatch_amr_block.
 
template<class TR >
AmrCompiledHooks pops::detail::build_amr_compiled_for (TR tr, const ModelSpec &spec, const std::string &limiter, const std::string &riemann, const AmrBuildParams &bp)
 VERBATIM single-block visitor body with the transport pinned: produce the type-erased AmrCompiledHooks via dispatch_amr_compiled.
 
template<class TR , class DispatchFn >
AmrRuntimeBlock pops::detail::build_amr_block_for_flux (TR tr, const AmrBlockBuildArgs &a, const SharedAmrLayout &S, DispatchFn dispatch)
 ADC-359 flux subdivision (compressible only): like build_amr_block_for, but the riemann dispatch is supplied by dispatch (a flux-pinned detail::dispatch_amr_block_<flux>), so each per-flux compressible seam TU instantiates ONE flux's build_amr_block leaves and they compile in parallel.
 
template<class TR , class DispatchFn >
AmrCompiledHooks pops::detail::build_amr_compiled_for_flux (TR tr, const ModelSpec &spec, const std::string &limiter, const AmrBuildParams &bp, DispatchFn dispatch)
 ADC-359 flux subdivision: like build_amr_compiled_for, with the riemann dispatch supplied by dispatch (a flux-pinned detail::dispatch_amr_compiled_<flux>).
 
AmrRuntimeBlock pops::detail::build_amr_block_exb (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrRuntimeBlock pops::detail::build_amr_block_isothermal (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrRuntimeBlock pops::detail::build_amr_block_compressible (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrCompiledHooks pops::detail::build_amr_compiled_exb (const ModelSpec &spec, const std::string &limiter, const std::string &riemann, const AmrBuildParams &bp)
 
AmrCompiledHooks pops::detail::build_amr_compiled_isothermal (const ModelSpec &spec, const std::string &limiter, const std::string &riemann, const AmrBuildParams &bp)
 
AmrCompiledHooks pops::detail::build_amr_compiled_compressible (const ModelSpec &spec, const std::string &limiter, const std::string &riemann, const AmrBuildParams &bp)
 
AmrRuntimeBlock pops::detail::build_amr_block_compressible_rusanov (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrRuntimeBlock pops::detail::build_amr_block_compressible_hll (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrRuntimeBlock pops::detail::build_amr_block_compressible_hllc (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrRuntimeBlock pops::detail::build_amr_block_compressible_roe (const AmrBlockBuildArgs &a, const SharedAmrLayout &S)
 
AmrCompiledHooks pops::detail::build_amr_compiled_compressible_rusanov (const ModelSpec &spec, const std::string &limiter, const AmrBuildParams &bp)
 
AmrCompiledHooks pops::detail::build_amr_compiled_compressible_hll (const ModelSpec &spec, const std::string &limiter, const AmrBuildParams &bp)
 
AmrCompiledHooks pops::detail::build_amr_compiled_compressible_hllc (const ModelSpec &spec, const std::string &limiter, const AmrBuildParams &bp)
 
AmrCompiledHooks pops::detail::build_amr_compiled_compressible_roe (const ModelSpec &spec, const std::string &limiter, const AmrBuildParams &bp)
 

Detailed Description

Per-transport block-build seam for AmrSystem (ADC-335 / P0-B), mirror of block_seam.hpp.

AmrSystem::Impl had TWO inline detail::dispatch_model(b.spec, lambda) sites – the multi-block build_multi (-> dispatch_amr_block -> AmrRuntimeBlock) and the single-block lazy build (-> dispatch_amr_compiled -> AmrCompiledHooks) – each of which instantiated the full AMR dispatch product (all transports x flux x limiter) in one TU (python/amr_system.cpp). This header moves each lambda body behind a fixed-signature, hidden-visibility, non-template free function per transport, defined in its own .cpp (python/amr_{block,compiled}_<transport>.cpp), so the per-transport leaves compile in parallel. The boundaries are already type-erased (AmrRuntimeBlock / AmrCompiledHooks), so the seam carries no template surface. The lambda bodies move VERBATIM -> byte-identical.