include/pops/numerics/time/integrators/time_integrator.hpp File ReferenceΒΆ

adc_cpp: include/pops/numerics/time/integrators/time_integrator.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
time_integrator.hpp File Reference

Scheme tags (SSPRK2, SSPRK3, UserTimeIntegrator), TimeTreatment enum and per-block time policies: template TimePolicy<Method, Treatment, Substeps, Stride>, its traits (TimePolicyTraits) and the aliases ExplicitTime / ImplicitTime / IMEXTime / PrescribedTime. More...

+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::SSPRK2
 
struct  pops::SSPRK3
 
struct  pops::UserTimeIntegrator
 
struct  pops::TimePolicy< MethodT, TreatmentT, SubstepsT, StrideT >
 
struct  pops::TimePolicyTraits< T >
 
struct  pops::TimePolicyTraits< TimePolicy< MethodT, TreatmentT, SubstepsT, StrideT > >
 

Namespaces

namespace  pops
 

Typedefs

template<class MethodT = SSPRK2, int SubstepsT = 1, int StrideT = 1>
using pops::ExplicitTime = TimePolicy< MethodT, TimeTreatment::Explicit, SubstepsT, StrideT >
 
template<class MethodT = UserTimeIntegrator, int SubstepsT = 1, int StrideT = 1>
using pops::ImplicitTime = TimePolicy< MethodT, TimeTreatment::Implicit, SubstepsT, StrideT >
 
template<class MethodT = UserTimeIntegrator, int SubstepsT = 1, int StrideT = 1>
using pops::IMEXTime = TimePolicy< MethodT, TimeTreatment::IMEX, SubstepsT, StrideT >
 
using pops::PrescribedTime = TimePolicy< UserTimeIntegrator, TimeTreatment::Prescribed, 1, 1 >
 

Enumerations

enum class  pops::TimeTreatment { pops::Explicit , pops::Implicit , pops::IMEX , pops::Prescribed }
 

Detailed Description

Scheme tags (SSPRK2, SSPRK3, UserTimeIntegrator), TimeTreatment enum and per-block time policies: template TimePolicy<Method, Treatment, Substeps, Stride>, its traits (TimePolicyTraits) and the aliases ExplicitTime / ImplicitTime / IMEXTime / PrescribedTime.

Layer: include/pops/numerics/time. Role: separate TWO levels – the mathematical scheme (SSPRK, IMEX, user implicit) and the usage policy in a coupled system (explicit/implicit, substeps, cadence, or prescribed field). The core keeps the generic schemes and the scheduler; cases choose a policy per block without changing the local PhysicalModel.

Invariants:

  • SubstepsT >= 1 and StrideT >= 1 (static_assert);
  • SubstepsT = MORE FREQUENT substeps (n steps of dt/n); StrideT = SLOWER cadence (advances 1 macro-step every StrideT, thus by a step of StrideT*dt). Both are ORTHOGONAL;
  • StrideT=1 (default) = historical behavior; the default TimePolicyTraits treats any type as Explicit, substeps=1, stride=1.