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
|
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.
Generated by