36#ifndef BOXLIB_LAYOUT_H
37#define BOXLIB_LAYOUT_H
44#include <AMReX_ParGDB.H>
46template<
class T,
unsigned Dim>
78 typedef amrex::FabArray<basefab_t>
mask_t;
185 int lev_min = 0,
int lev_max = -1,
bool isRegrid =
false);
199 const unsigned int ip,
int level)
const;
237 this->m_geom.resize(length);
238 this->m_dmap.resize(length);
239 this->m_ba.resize(length);
240 this->m_nlevels = length;
253 for (
unsigned int i = 0; i < geom.size(); ++i)
254 this->m_geom[i] = geom[i];
264 for (
unsigned int i = 0; i <
refRatio.size(); ++i) {
333 const unsigned int ip,
334 int lev_min = 0,
int lev_max = -1,
int nGrow = 0)
const;
348 const unsigned int ip,
349 int lev_min = 0,
int lev_max = -1)
const;
371 const unsigned int ip,
372 int lev_min,
int lev_max,
int nGrow)
const;
382 std::vector<std::unique_ptr<mask_t> >
masks_m;
amrex::Vector< AmrVectorField_t > AmrVectorFieldContainer_t
amrex::DistributionMapping AmrProcMap_t
amrex::Vector< AmrIntVect_t > AmrIntVectContainer_t
amrex::Geometry AmrGeometry_t
amrex::RealBox AmrDomain_t
amrex::Vector< AmrGeometry_t > AmrGeomContainer_t
amrex::IntVect AmrIntVect_t
std::array< std::unique_ptr< AmrField_t >, AMREX_SPACEDIM > AmrVectorField_t
amrex::MultiFab AmrField_t
amrex::Vector< std::unique_ptr< AmrField_t > > AmrScalarFieldContainer_t
amrex::Vector< int > AmrIntArray_t
amrex::BoxArray AmrGrid_t
amrex::Vector< AmrGrid_t > AmrGridContainer_t
amrex::Vector< AmrProcMap_t > AmrProcMapContainer_t
ParticleAmrLayout< T, Dim >::Index_t Index_t
ParticleAttrib< Index_t > ParticleIndex_t
void setBoundingBox(double dh)
ParticleAmrLayout< T, Dim >::ParticlePos_t ParticlePos_t
void define(const AmrIntVectContainer_t &refRatio)
amr::AmrProcMapContainer_t AmrProcMapContainer_t
amr::AmrDomain_t AmrDomain_t
const std::unique_ptr< mask_t > & getLevelMask(int lev) const
void setDomainRatio(const std::vector< double > &ratio)
void locateParticle(AmrParticleBase< BoxLibLayout< T, Dim > > &p, const unsigned int ip, int lev_min, int lev_max, int nGrow) const
AmrIntVectContainer_t refRatio_m
ParticleAmrLayout< T, Dim >::pair_t pair_t
ParticleAmrLayout< T, Dim >::pair_iterator pair_iterator
static Vector_t lowerBound
void buildLevelMask(int lev, const int ncells=1)
BoxLibLayout(const BoxLibLayout *layout_p)
BoxLibLayout(const AmrGeometry_t &geom, const AmrProcMap_t &dmap, const AmrGrid_t &ba)
void initBaseBox_m(int nGridPoints, int maxGridSize, double dh=0.04)
bool LevelDefined(int level) const
void clearLevelMask(int lev)
amr::AmrIntVect_t AmrIntVect_t
amr::AmrIntArray_t AmrIntArray_t
amr::AmrGeometry_t AmrGeometry_t
BoxLibLayout(const AmrGeomContainer_t &geom, const AmrProcMapContainer_t &dmap, const AmrGridContainer_t &ba, const AmrIntArray_t &rr)
AmrIntVect_t Index(SingleParticlePos_t &R, int lev) const
amr::AmrVectorField_t AmrVectorField_t
ParticleAmrLayout< T, Dim >::SingleParticlePos_t SingleParticlePos_t
BoxLibLayout(int nGridPoints, int maxGridSize)
amr::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
amrex::BaseFab< int > basefab_t
amrex::FabArray< basefab_t > mask_t
amr::AmrGeomContainer_t AmrGeomContainer_t
bool PeriodicShift(SingleParticlePos_t R) const
static Vector_t upperBound
void update(IpplParticleBase< BoxLibLayout< T, Dim > > &PData, const ParticleAttrib< char > *canSwap=0)
amr::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
amr::AmrGridContainer_t AmrGridContainer_t
bool EnforcePeriodicWhere(AmrParticleBase< BoxLibLayout< T, Dim > > &prt, const unsigned int ip, int lev_min=0, int lev_max=-1) const
AmrIntVect_t Index(AmrParticleBase< BoxLibLayout< T, Dim > > &p, const unsigned int ip, int level) const
void resize(int maxLevel)
void define(const AmrGeomContainer_t &geom)
std::vector< std::unique_ptr< mask_t > > masks_m
amr::AmrProcMap_t AmrProcMap_t
amr::AmrIntVectContainer_t AmrIntVectContainer_t
int MaxRefRatio(int level) const
void update(AmrParticleBase< BoxLibLayout< T, Dim > > &PData, int lev_min=0, int lev_max=-1, bool isRegrid=false)
amr::AmrField_t AmrField_t
AmrIntVect_t refRatio(int level) const
bool Where(AmrParticleBase< BoxLibLayout< T, Dim > > &p, const unsigned int ip, int lev_min=0, int lev_max=-1, int nGrow=0) const
ParticleLayout< T, Dim >::SingleParticlePos_t SingleParticlePos_t
ParticleAttrib< SingleParticlePos_t > ParticlePos_t
ParticleLayout< T, Dim >::Index_t Index_t
Vektor< double, 3 > Vector_t