SystemAssembler< System, RhsAssembler, Elliptic > Class Template ReferenceΒΆ

adc_cpp: pops::SystemAssembler< System, RhsAssembler, Elliptic > Class Template 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::SystemAssembler< System, RhsAssembler, Elliptic > Class Template Reference

ASSEMBLES the fields (system Poisson + shared aux) and a block residual evaluator. More...

#include <system_coupler.hpp>

+ Inheritance diagram for pops::SystemAssembler< System, RhsAssembler, Elliptic >:
+ Collaboration diagram for pops::SystemAssembler< System, RhsAssembler, Elliptic >:

Public Member Functions

 SystemAssembler (System system, const Geometry &geom, const BoxArray &ba, const BCRec &bcPhi, RhsAssembler rhs_assembler, std::function< bool(Real, Real)> active={}, std::function< Real(Real, Real)> bz={})
 
Systemsystem ()
 
const Systemsystem () const
 
MultiFabphi ()
 
MultiFabaux ()
 
const MultiFabaux () const
 
const Geometrygeom () const
 
const BoxArrayba () const
 
const DistributionMappingdm () const
 
void solve_fields ()
 Solves the system RHS (Sum_s q_s n_s), the Poisson, then derives aux = (phi, grad phi).
 
template<class Limiter , class NumericalFlux , class Block >
void block_residual (Block &block, MultiFab &state, MultiFab &R, bool recompute_aux)
 Residual R = -div F + S of a block at a stage (with field re-solve if recompute_aux).
 

Detailed Description

template<CoupledSystemLike System, class RhsAssembler, class Elliptic = GeometricMG>
class pops::SystemAssembler< System, RhsAssembler, Elliptic >

ASSEMBLES the fields (system Poisson + shared aux) and a block residual evaluator.

No time stepping.

Template Parameters
SystemCoupledSystem.
RhsAssemblerPoisson RHS assembler.
Ellipticelliptic backend (EllipticSolver concept, default GeometricMG).

Constructor & Destructor Documentation

◆ SystemAssembler()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
pops::SystemAssembler< System, RhsAssembler, Elliptic >::SystemAssembler ( System  system,
const Geometry geom,
const BoxArray ba,
const BCRec bcPhi,
RhsAssembler  rhs_assembler,
std::function< bool(Real, Real)>  active = {},
std::function< Real(Real, Real)>  bz = {} 
)
inline

Member Function Documentation

◆ aux() [1/2]

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
MultiFab & pops::SystemAssembler< System, RhsAssembler, Elliptic >::aux ( )
inline

◆ aux() [2/2]

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
const MultiFab & pops::SystemAssembler< System, RhsAssembler, Elliptic >::aux ( ) const
inline

◆ ba()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
const BoxArray & pops::SystemAssembler< System, RhsAssembler, Elliptic >::ba ( ) const
inline

◆ block_residual()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
template<class Limiter , class NumericalFlux , class Block >
void pops::SystemAssembler< System, RhsAssembler, Elliptic >::block_residual ( Block &  block,
MultiFab state,
MultiFab R,
bool  recompute_aux 
)
inline

Residual R = -div F + S of a block at a stage (with field re-solve if recompute_aux).

This is the method-of-lines arrow the Driver passes to the TimeStepper. Fills the ghosts of state per block.bc before assembly.

+ Here is the call graph for this function:

◆ dm()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
const DistributionMapping & pops::SystemAssembler< System, RhsAssembler, Elliptic >::dm ( ) const
inline

◆ geom()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
const Geometry & pops::SystemAssembler< System, RhsAssembler, Elliptic >::geom ( ) const
inline

◆ phi()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
MultiFab & pops::SystemAssembler< System, RhsAssembler, Elliptic >::phi ( )
inline

◆ solve_fields()

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
void pops::SystemAssembler< System, RhsAssembler, Elliptic >::solve_fields ( )
inline

Solves the system RHS (Sum_s q_s n_s), the Poisson, then derives aux = (phi, grad phi).

aux() is up to date on return.

+ Here is the caller graph for this function:

◆ system() [1/2]

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
System & pops::SystemAssembler< System, RhsAssembler, Elliptic >::system ( )
inline

◆ system() [2/2]

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
const System & pops::SystemAssembler< System, RhsAssembler, Elliptic >::system ( ) const
inline

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