PolarCondensedSchurSourceStepper Class ReferenceΒΆ

adc_cpp: pops::PolarCondensedSchurSourceStepper Class 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
pops::PolarCondensedSchurSourceStepper Class Reference

SOURCE STAGE condensed by Schur in POLAR geometry, STANDALONE (transport frozen), GENERIC over any polar fluid block that exposes the roles Density / MomentumX (radial) / MomentumY (azimuthal) (+ optional Energy). More...

#include <polar_condensed_schur_source_stepper.hpp>

+ Collaboration diagram for pops::PolarCondensedSchurSourceStepper:

Public Member Functions

 PolarCondensedSchurSourceStepper (const VariableSet &vars, const PolarGeometry &geom, const BoxArray &ba, const BCRec &bcPhi, Real alpha, PolarPrecond precond=PolarPrecond::RadialLine)
 vars: descriptor of the fluid block; MUST expose Density / MomentumX / MomentumY (Energy optional).
 
 PolarCondensedSchurSourceStepper (const VariableSet &vars, int c_rho, int c_mx, int c_my, int c_E, const PolarGeometry &geom, const BoxArray &ba, const BCRec &bcPhi, Real alpha, PolarPrecond precond=PolarPrecond::RadialLine)
 EXPLICIT-COMPONENT variant (audit wave 3, parity with the Cartesian stepper): the caller DESIGNATES the components (rho, m_r, m_theta[, E]) – block with free names / Custom roles.
 
bool has_energy () const
 true if the model carries an Energy role (energy update active).
 
void step (MultiFab &state, MultiFab &phi, const MultiFab &bz_field, int c_bz, Real theta, Real dt)
 POLAR condensed SOURCE STAGE, IN-PLACE on state and phi.
 
const PolarKrylovResultlast_solve () const
 Diagnostic of the last solve (BiCGStab iterations, relative residual, convergence).
 
void set_krylov (Real tol, int max_iters)
 Tolerance / iteration budget of the polar Krylov solve.
 
int density_comp () const
 
int momentum_x_comp () const
 
int momentum_y_comp () const
 
int energy_comp () const
 

Detailed Description

SOURCE STAGE condensed by Schur in POLAR geometry, STANDALONE (transport frozen), GENERIC over any polar fluid block that exposes the roles Density / MomentumX (radial) / MomentumY (azimuthal) (+ optional Energy).

Polar counterpart of CondensedSchurSourceStepper; SEPARATE path, the Cartesian one stays BIT-IDENTICAL.

ROLE CONVENTION IN POLAR: the RADIAL momentum (rho v_r) carries the MomentumX role, the AZIMUTHAL momentum (rho v_theta) carries the MomentumY role (cf. IsothermalFluxPolar: component 1 = radial, component 2 = azimuthal, local orthonormal basis (e_r, e_theta)).

LIFECYCLE: built ONCE on a fixed (PolarGeometry + BoxArray); allocates its buffers at construction; step() REUSES them. theta/dt may change between calls.

Constructor & Destructor Documentation

◆ PolarCondensedSchurSourceStepper() [1/2]

pops::PolarCondensedSchurSourceStepper::PolarCondensedSchurSourceStepper ( const VariableSet vars,
const PolarGeometry geom,
const BoxArray ba,
const BCRec bcPhi,
Real  alpha,
PolarPrecond  precond = PolarPrecond::RadialLine 
)
inline

vars: descriptor of the fluid block; MUST expose Density / MomentumX / MomentumY (Energy optional).

Contract validated HERE (host), before any kernel. geom: POLAR geometry (ring); ba: SINGLE box; bcPhi: radial BC of the potential (xlo/xhi: Dirichlet or Foextrap; theta always periodic on the solver side). alpha: electrostatic coupling constant. precond: preconditioner of the PolarTensorKrylovSolver (RadialLine by default).

◆ PolarCondensedSchurSourceStepper() [2/2]

pops::PolarCondensedSchurSourceStepper::PolarCondensedSchurSourceStepper ( const VariableSet vars,
int  c_rho,
int  c_mx,
int  c_my,
int  c_E,
const PolarGeometry geom,
const BoxArray ba,
const BCRec bcPhi,
Real  alpha,
PolarPrecond  precond = PolarPrecond::RadialLine 
)
inline

EXPLICIT-COMPONENT variant (audit wave 3, parity with the Cartesian stepper): the caller DESIGNATES the components (rho, m_r, m_theta[, E]) – block with free names / Custom roles.

The canonical ctor above DELEGATES here (role resolution unchanged).

+ Here is the call graph for this function:

Member Function Documentation

◆ density_comp()

int pops::PolarCondensedSchurSourceStepper::density_comp ( ) const
inline

◆ energy_comp()

int pops::PolarCondensedSchurSourceStepper::energy_comp ( ) const
inline

◆ has_energy()

bool pops::PolarCondensedSchurSourceStepper::has_energy ( ) const
inline

true if the model carries an Energy role (energy update active).

◆ last_solve()

const PolarKrylovResult & pops::PolarCondensedSchurSourceStepper::last_solve ( ) const
inline

Diagnostic of the last solve (BiCGStab iterations, relative residual, convergence).

◆ momentum_x_comp()

int pops::PolarCondensedSchurSourceStepper::momentum_x_comp ( ) const
inline

◆ momentum_y_comp()

int pops::PolarCondensedSchurSourceStepper::momentum_y_comp ( ) const
inline

◆ set_krylov()

void pops::PolarCondensedSchurSourceStepper::set_krylov ( Real  tol,
int  max_iters 
)
inline

Tolerance / iteration budget of the polar Krylov solve.

DEFAULTS = historical constants (1e-10, 600), made configurable by the audit 2026-06.

Exceptions
std::invalid_argument.
+ Here is the call graph for this function:

◆ step()

void pops::PolarCondensedSchurSourceStepper::step ( MultiFab state,
MultiFab phi,
const MultiFab bz_field,
int  c_bz,
Real  theta,
Real  dt 
)
inline

POLAR condensed SOURCE STAGE, IN-PLACE on state and phi.

state: fluid state (rho, mom_r, mom_theta [, E]); WRITES mom (+ E); rho FROZEN. phi: potential; INPUT phi^n (warm start of the solve); OUTPUT phi^{n+1}. bz_field: B_z field (aux channel), component c_bz read at the center. theta/dt: theta-scheme.

+ Here is the call graph for this function:

The documentation for this class was generated from the following file: