1 #ifndef ERF_PLANAR_BOUNDARY_H_
2 #define ERF_PLANAR_BOUNDARY_H_
4 #include <AMReX_BoxArray.H>
5 #include <AMReX_DistributionMapping.H>
6 #include <AMReX_GpuQualifiers.H>
7 #include <AMReX_IndexType.H>
8 #include <AMReX_MultiFab.H>
9 #include <AMReX_Periodicity.H>
10 #include <AMReX_Vector.H>
55 void define (
const amrex::BoxArray& ba3d,
56 const amrex::BoxArray& ba2d,
57 const amrex::DistributionMapping& dm,
69 void fill (amrex::MultiFab& mf,
const amrex::Periodicity& period);
87 void gather_surface (
const amrex::MultiFab& mf, amrex::MultiFab& dst,
88 int scomp,
int dcomp,
int ncomp)
const;
100 [[nodiscard]] AMREX_GPU_HOST
107 amrex::MultiFab&
buffer (
const amrex::MultiFab& mf);
114 amrex::DistributionMapping
dm;
115 amrex::Vector<const amrex::MultiFab*>
sources;
116 std::unique_ptr<amrex::MultiFab>
mf;
Definition: ERF_PlanarBoundary.H:43
void fill(amrex::MultiFab &mf, const amrex::Periodicity &period)
Definition: ERF_PlanarBoundary.cpp:65
amrex::DistributionMapping m_dm_sfc
Definition: ERF_PlanarBoundary.H:121
const amrex::DistributionMapping & surface_dm() const
Ranks owning the surface copies: each is on the rank of the planar box it is a copy of.
Definition: ERF_PlanarBoundary.H:94
amrex::MultiFab & buffer(const amrex::MultiFab &mf)
Definition: ERF_PlanarBoundary.cpp:135
amrex::Vector< int > m_src_index
Definition: ERF_PlanarBoundary.H:122
void define(const amrex::BoxArray &ba3d, const amrex::BoxArray &ba2d, const amrex::DistributionMapping &dm, int surface_index, bool is_low=true, int normal_dir=2)
Definition: ERF_PlanarBoundary.cpp:21
amrex::BoxArray m_ba_sfc
Definition: ERF_PlanarBoundary.H:120
int m_nplanar
Definition: ERF_PlanarBoundary.H:119
AMREX_GPU_HOST bool is_surface_copy(const int planar_index) const
Whether a planar-box index is the computed copy that touches the surface.
Definition: ERF_PlanarBoundary.H:101
amrex::Vector< Buffer > m_buffers
Definition: ERF_PlanarBoundary.H:123
void gather_surface(const amrex::MultiFab &mf, amrex::MultiFab &dst, int scomp, int dcomp, int ncomp) const
Definition: ERF_PlanarBoundary.cpp:109
const amrex::BoxArray & surface_boxes() const
Cell-centered surface copies of the planar boxes, without duplicates.
Definition: ERF_PlanarBoundary.H:91
const amrex::Vector< int > & surface_index() const
Index of each surface copy in the planar BoxArray.
Definition: ERF_PlanarBoundary.H:97
Definition: ERF_PlanarBoundary.H:110
amrex::BoxArray ba
Definition: ERF_PlanarBoundary.H:113
std::unique_ptr< amrex::MultiFab > mf
Definition: ERF_PlanarBoundary.H:116
amrex::IndexType ixtype
Definition: ERF_PlanarBoundary.H:111
int ncomp
Definition: ERF_PlanarBoundary.H:112
amrex::Vector< const amrex::MultiFab * > sources
Definition: ERF_PlanarBoundary.H:115
amrex::DistributionMapping dm
Definition: ERF_PlanarBoundary.H:114