EquationBlock< ModelT, SpatialT, TimeT > Struct Template ReferenceΒΆ

adc_cpp: pops::EquationBlock< ModelT, SpatialT, TimeT > Struct 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::EquationBlock< ModelT, SpatialT, TimeT > Struct Template Reference

Association of a PhysicalModel with its field U (MultiFab), its spatial scheme, its time policy and its boundary conditions. More...

#include <equation_block.hpp>

+ Collaboration diagram for pops::EquationBlock< ModelT, SpatialT, TimeT >:

Public Types

using Model = ModelT
 
using Spatial = SpatialT
 
using Time = TimeT
 

Public Member Functions

 EquationBlock (std::string_view block_name, const Model &block_model, MultiFab &block_state, const BCRec &block_bc={})
 
MultiFabU ()
 
const MultiFabU () const
 

Public Attributes

std::string_view name {}
 
Model model
 
MultiFabstate = nullptr
 
BCRec bc {}
 

Detailed Description

template<class ModelT, class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
struct pops::EquationBlock< ModelT, SpatialT, TimeT >

Association of a PhysicalModel with its field U (MultiFab), its spatial scheme, its time policy and its boundary conditions.

Template parameters: ModelT: must satisfy PhysicalModel. SpatialT: must satisfy SpatialDiscretisationLike (default FirstOrder). TimeT: time policy (default ExplicitTime<SSPRK2>).

INVARIANT: state != nullptr after construction. The EquationBlock does NOT own the MultiFab; the MultiFab lifetime must exceed that of the block. Do not store in a container by value if the MultiFab is dynamically allocated and could be moved (the pointer would become invalid).

Member Typedef Documentation

◆ Model

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
using pops::EquationBlock< ModelT, SpatialT, TimeT >::Model = ModelT

◆ Spatial

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
using pops::EquationBlock< ModelT, SpatialT, TimeT >::Spatial = SpatialT

◆ Time

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
using pops::EquationBlock< ModelT, SpatialT, TimeT >::Time = TimeT

Constructor & Destructor Documentation

◆ EquationBlock()

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
pops::EquationBlock< ModelT, SpatialT, TimeT >::EquationBlock ( std::string_view  block_name,
const Model block_model,
MultiFab block_state,
const BCRec block_bc = {} 
)
inline

Member Function Documentation

◆ U() [1/2]

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
MultiFab & pops::EquationBlock< ModelT, SpatialT, TimeT >::U ( )
inline

◆ U() [2/2]

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
const MultiFab & pops::EquationBlock< ModelT, SpatialT, TimeT >::U ( ) const
inline

Member Data Documentation

◆ bc

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
BCRec pops::EquationBlock< ModelT, SpatialT, TimeT >::bc {}

◆ model

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
Model pops::EquationBlock< ModelT, SpatialT, TimeT >::model

◆ name

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
std::string_view pops::EquationBlock< ModelT, SpatialT, TimeT >::name {}

◆ state

template<class ModelT , class SpatialT = FirstOrder, class TimeT = ExplicitTime<SSPRK2>>
MultiFab* pops::EquationBlock< ModelT, SpatialT, TimeT >::state = nullptr

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