include/pops/numerics/time/schemes/imex.hpp File ReferenceΒΆ

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

Asymptotic-preserving IMEX (implicit-explicit) integrator: imex_euler_step, order-1 forward-backward Euler step, U^{n+1} = U^n + dt T(U^n) + dt S(U^{n+1}). More...

+ Include dependency graph for imex.hpp:

Go to the source code of this file.

Namespaces

namespace  pops
 

Functions

template<class TransportStep , class ImplicitSourceSolve >
void pops::imex_euler_step (MultiFab &U, Real dt, TransportStep Texpl, ImplicitSourceSolve Simpl)
 

Detailed Description

Asymptotic-preserving IMEX (implicit-explicit) integrator: imex_euler_step, order-1 forward-backward Euler step, U^{n+1} = U^n + dt T(U^n) + dt S(U^{n+1}).

Layer: include/pops/numerics/time. Role: take the STIFF terms (Lorentz, Debye limit, quasi-neutrality) IMPLICITLY and the transport EXPLICITLY. AP property: when the small parameter (lambda_D^2, 1/omega_c) -> 0, the scheme stays stable at FIXED dt and captures the limit dynamics. Contract: Texpl(U, dt) advances the transport IN PLACE (after the call U holds the known term U^n + dt T(U^n)); Simpl(U, dt) solves IN PLACE U <- W with W = U + dt S(W), U being the known term (linear relaxation: analytic; full Lorentz: local Newton).

Invariants:

  • integrator agnostic of the model: Texpl/Simpl are callables (MultiFab&, Real)->void;
  • the order is enforced – explicit THEN implicit; no state held by the integrator.