21 #ifndef FUB_AMREX_BOUNDARY_CONDITION_CONSTANT_BOUNDARY_HPP
22 #define FUB_AMREX_BOUNDARY_CONDITION_CONSTANT_BOUNDARY_HPP
31 #include <AMReX_MultiFab.H>
51 if (
dir == this->dir) {
56 void FillBoundary(::amrex::MultiFab& mf, const ::amrex::Geometry& geom) {
57 int idir =
static_cast<int>(
dir);
58 if (!geom.isPeriodic(idir)) {
59 const int ngrow = mf.nGrow(idir);
60 ::amrex::Box fully_grown_box = geom.growNonPeriodicDomain(ngrow);
61 ::amrex::Box grown_dir_box = ::amrex::grow(fully_grown_box, idir, -ngrow);
62 ::amrex::BoxList boundaries = ::amrex::complementIn(
63 fully_grown_box, ::amrex::BoxList{grown_dir_box});
64 if (boundaries.isEmpty()) {
68 ::amrex::FArrayBox& fab = mf[mfi];
71 ::amrex::shift(boundary, idir,
GetSign(
side) * ngrow);
72 if (!geom.Domain().intersects(shifted)) {
75 ::amrex::Box box_to_fill = mfi.growntilebox() & boundary;
76 if (!box_to_fill.isEmpty()) {
78 MakeView<Complete<Equation>>(fab,
equation, box_to_fill);
80 [&](
auto... is) {
Store(states,
state, {is...}); });
This class modifies and initializes a PatchLevel in a PatchHierarchy.
Definition: AMReX/GriddingAlgorithm.hpp:60
PatchHierarchy & GetPatchHierarchy() noexcept
Definition: AMReX/GriddingAlgorithm.hpp:108
const ::amrex::Geometry & GetGeometry(int level) const
Returns a Geometry object for a specified level.
void ForEachFab(Tag, const ::amrex::FabArrayBase &fabarray, F function)
Iterate through all local FArrayBox objects in a MultiFab.
Definition: ForEachFab.hpp:34
The amrex namespace.
Definition: AverageState.hpp:33
void ForEachIndex(const ::amrex::Box &box, F function)
Definition: ForEachIndex.hpp:29
constexpr OpenMpTag openmp
Definition: Execution.hpp:37
int GetSign(int side)
Definition: AnyBoundaryCondition.hpp:104
Direction
This is a type safe type to denote a dimensional split direction.
Definition: Direction.hpp:30
void Store(const BasicView< Conservative< Eq >, Layout, Eq::Rank()> &view, const Conservative< Eq > &state, const std::array< std::ptrdiff_t, Eq::Rank()> &index)
Definition: State.hpp:663
IndexBox< Rank > Box(const BasicView< State, Layout, Rank > &view)
Definition: State.hpp:486
Definition: boundary_condition/ConstantBoundary.hpp:37
Equation equation
Definition: boundary_condition/ConstantBoundary.hpp:40
Complete< Equation > state
Definition: boundary_condition/ConstantBoundary.hpp:41
int side
Definition: boundary_condition/ConstantBoundary.hpp:39
void FillBoundary(::amrex::MultiFab &mf, const GriddingAlgorithm &grid, int level)
Definition: boundary_condition/ConstantBoundary.hpp:43
void FillBoundary(::amrex::MultiFab &mf, const ::amrex::Geometry &geom)
Definition: boundary_condition/ConstantBoundary.hpp:56
void FillBoundary(::amrex::MultiFab &mf, const GriddingAlgorithm &gridding, int level, Direction dir)
Definition: boundary_condition/ConstantBoundary.hpp:49
Direction dir
Definition: boundary_condition/ConstantBoundary.hpp:38