include/pops/numerics/time/integrators/time_steppers.hpp Source FileΒΆ
|
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
|
time_steppers.hpp
Go to the documentation of this file.
64 // R is overwritten by rhs and U1's valid cells are overwritten by the lincomb copy each substep,
126// Runs @p n explicit RK substeps of @c Stepper on @p U with step @p h. When the stepper exposes a
127// reusable Scratch (the built-in ForwardEuler / SSPRK2Step / SSPRK3Step), the scratch is allocated
128// ONCE here and reused across substeps via the scratch-taking take_step overload -- removing the
129// per-substep alloc/zero/free churn (ADC-261). A custom TimeStepper without a Scratch falls back to
130// the one-shot take_step. The result is bit-identical either way (same saxpy/lincomb sequence on
131// freshly-overwritten buffers); the substep loop never changes U's layout, so one Scratch suffices.
Field distributed over a level: decomposition (BoxArray) + distribution (DistributionMapping) + ncomp...
Definition multifab.hpp:33
Definition time_steppers.hpp:34
MultiFab arithmetic (saxpy, lincomb, norm_inf, dot) over VALID cells.
MultiFab: a field DISTRIBUTED over a level (equivalent of AMReX's MultiFab).
Definition amr_hierarchy.hpp:29
void saxpy(MultiFab &y, Real a, const MultiFab &x)
y <- y + a x over ALL components of the valid cells. Identical layouts required.
Definition mf_arith.hpp:102
void run_explicit_substeps(RhsEval &&rhs, MultiFab &U, Real h, int n)
Definition time_steppers.hpp:133
void lincomb(MultiFab &z, Real a, const MultiFab &x, Real b, const MultiFab &y)
z <- a x + b y over ALL components of the valid cells. Identical layouts; aliasing safe.
Definition mf_arith.hpp:133
Definition time_steppers.hpp:43
Definition time_steppers.hpp:39
void take_step(RhsEval &&rhs, MultiFab &U, Real dt, Scratch &s) const
Definition time_steppers.hpp:48
void take_step(RhsEval &&rhs, MultiFab &U, Real dt) const
Definition time_steppers.hpp:53
Definition time_steppers.hpp:66
Definition time_steppers.hpp:61
void take_step(RhsEval &&rhs, MultiFab &U, Real dt) const
Definition time_steppers.hpp:82
void take_step(RhsEval &&rhs, MultiFab &U, Real dt, Scratch &s) const
Definition time_steppers.hpp:73
Definition time_steppers.hpp:95
Definition time_steppers.hpp:90
void take_step(RhsEval &&rhs, MultiFab &U, Real dt, Scratch &s) const
Definition time_steppers.hpp:104
void take_step(RhsEval &&rhs, MultiFab &U, Real dt) const
Definition time_steppers.hpp:120
Base scalar types and the POPS_HD macro (host+device portability).
Generated by