include/pops/numerics/time/integrators/ssprk.hpp Source FileΒΆ

adc_cpp: include/pops/numerics/time/integrators/ssprk.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
ssprk.hpp
Go to the documentation of this file.
1#pragma once
2
10#include <pops/numerics/time/integrators/time_steppers.hpp> // SSPRK2Step (shared scheme)
11
20
21namespace pops {
22
23template <class Limiter = NoSlope, class NumericalFlux = RusanovFlux, class Model>
24void advance_ssprk2(const Model& model, MultiFab& U, const MultiFab& aux, const Geometry& geom,
25 const BCRec& bc, Real dt) {
27 [&](MultiFab& stage, MultiFab& R) {
28 fill_ghosts(stage, geom.domain, bc);
29 assemble_rhs<Limiter, NumericalFlux>(model, stage, aux, geom, R);
30 },
31 U, dt);
32}
33
34} // namespace pops
Field distributed over a level: decomposition (BoxArray) + distribution (DistributionMapping) + ncomp...
Definition multifab.hpp:33
Geometry: index-space (Box2D) <-> Cartesian physical-space mapping; PolarGeometry: SIBLING for a glob...
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
double Real
Definition types.hpp:30
void advance_ssprk2(const Model &model, MultiFab &U, const MultiFab &aux, const Geometry &geom, const BCRec &bc, Real dt)
Definition ssprk.hpp:24
void fill_ghosts(MultiFab &mf, const Box2D &domain, const BCRec &bc)
COMPLETE ghost filling: fill_boundary (interior + periodic, periodicity deduced from bc) THEN fill_ph...
Definition physical_bc.hpp:227
PHYSICAL boundary conditions at the domain edge (BCType, BCRec, fill_physical_bc, fill_ghosts).
Interface reconstruction policies: MUSCL limiters and WENO5-Z.
Cartesian spatial operator: assembles R(U, aux) = -div F + S over the cells of a level.
Boundary conditions for the FOUR faces of the domain (type + associated Dirichlet value).
Definition physical_bc.hpp:29
Cartesian geometry of a level: index domain + physical bounds [xlo, xhi] x [ylo, yhi].
Definition geometry.hpp:20
Box2D domain
Definition geometry.hpp:21
Definition time_steppers.hpp:61
void take_step(RhsEval &&rhs, MultiFab &U, Real dt, Scratch &s) const
Definition time_steppers.hpp:73
Time integrators as first-class OBJECTS with a take_step method: TimeStepper concept,...
Base scalar types and the POPS_HD macro (host+device portability).