template<typename
Stencil_T, typename
flag_t>
class walberla::pde::Dirichlet< Stencil_T, flag_t >
Dirichlet boundary handling for PDEs.
This boundary condition imposes a Dirichlet condition with arbitrary values on a PDE. It does so by modifying the right-hand side and the stencil field. Anything that has internal copies of the stencil field (e.g. the multigrid V-cycle's coarsened stencils) is responsible for updating its copies when boundary conditions are changed.
- Template Parameters
-
| Stencil_T | The stencil used for the discrete operator |
| flag_t | The integer type used by the flag field |
|
| | Dirichlet (const BoundaryUID &boundaryUID, const FlagUID &uid, Field_T *const rhsField, const StencilField_T *const stencilField, StencilField_T *const adaptBCStencilField, FlagField< flag_t > *const flagField) |
| | Creates a Dirichlet boundary.
|
| |
| void | pushFlags (std::vector< FlagUID > &uids) const |
| |
| void | beforeBoundaryTreatment () const |
| |
| void | afterBoundaryTreatment () |
| |
| template<typename Buffer_T > |
| void | packCell (Buffer_T &buffer, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
| |
| template<typename Buffer_T > |
| void | registerCell (Buffer_T &buffer, const flag_t, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
| |
| void | registerCell (const flag_t, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration &dirichletBC) |
| |
| void | registerCells (const flag_t, const CellInterval &cells, const BoundaryConfiguration &dirichletBC) |
| |
| template<typename CellIterator > |
| void | registerCells (const flag_t, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration &dirichletBC) |
| |
| void | unregisterCell (const flag_t, const cell_idx_t nx, const cell_idx_t ny, const cell_idx_t nz) |
| |
| void | treatDirection (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const stencil::Direction dir, const cell_idx_t nx, const cell_idx_t ny, const cell_idx_t nz, const flag_t mask) |
| | Treat one direction by adapting RHS according to Dirichlet boundary value.
|
| |
| const real_t & | getValue (const cell_idx_t x, cell_idx_t y, cell_idx_t z) const |
| |
| | Dirichlet (const BoundaryUID &boundaryUID, const FlagUID &uid, Field_T *const rhsField, const StencilField_T *const stencilField, StencilField_T *const adaptBCStencilField, FlagField< flag_t > *const flagField, const StructuredBlockStorage &blocks) |
| |
| void | pushFlags (std::vector< FlagUID > &uids) const |
| |
| void | beforeBoundaryTreatment () const |
| |
| void | afterBoundaryTreatment () |
| |
| template<typename Buffer_T > |
| void | packCell (Buffer_T &buffer, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
| |
| template<typename Buffer_T > |
| void | registerCell (Buffer_T &buffer, const flag_t, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
| |
| void | registerCell (const flag_t, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration &dirichletBC) |
| |
| void | registerCells (const flag_t, const CellInterval &cells, const BoundaryConfiguration &dirichletBC) |
| |
| template<typename CellIterator > |
| void | registerCells (const flag_t, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration &dirichletBC) |
| |
| void | unregisterCell (const flag_t, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
| |
| void | treatDirection (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const stencil::Direction dir, const cell_idx_t nx, const cell_idx_t ny, const cell_idx_t nz, const flag_t mask) |
| |
| const real_t & | getValue (const cell_idx_t x, cell_idx_t y, cell_idx_t z) const |
| |
| | Boundary (const BoundaryUID &boundaryUID) |
| |
| void | setMask (const flag_t mask) |
| |
| flag_t | getMask () const |
| |
| const BoundaryUID & | getUID () const |
| |