OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
BoxLibParticle.h
Go to the documentation of this file.
1 #ifndef BOXLIB_PARTICLE_H
2 #define BOXLIB_PARTICLE_H
3 
5 
6 #include <AMReX_REAL.H>
7 #include <AMReX_IntVect.H>
8 #include <AMReX_Vector.H>
9 #include <AMReX_Utility.H>
10 #include <AMReX_Geometry.H>
11 #include <AMReX_RealBox.H>
12 
22 template<class PLayout>
23 class BoxLibParticle : public virtual AmrParticleBase<PLayout>
24 {
25 public:
30  // Array<std::unique_ptr<MultiFab> >
35 
37  typedef typename PLayout::AmrGrid_t AmrGrid_t;
40  typedef typename PLayout::AmrBox_t AmrBox_t;
41  typedef typename PLayout::AmrReal_t AmrReal_t;
42 
43  typedef amrex::FArrayBox FArrayBox_t;
44 
45 public:
47 
51  BoxLibParticle(PLayout *layout);
52 
66  template <class FT, unsigned Dim, class PT>
69  int lbase, int lfine,
70  const ParticleAttrib<int>& pbin, int bin = -1);
71 
72 
85  template <class FT, unsigned Dim, class PT>
86  void scatter(ParticleAttrib<FT>& attrib, AmrField_t& f,
88  const ParticleAttrib<int>& pbin, int bin = -1,
89  int level = 0);
90 
102  template <class FT, unsigned Dim, class PT>
105  int lbase, int lfine);
106 
107 private:
108  /*
109  * AMReX functions adjusted to work with Ippl
110  */
111 
122  template <class AType>
124  AmrScalarFieldContainer_t& mf_to_be_filled,
125  int lev_min, int ncomp, int finest_level,
126  const ParticleAttrib<int>& pbin, int bin = -1) const;
127 
136  template <class AType>
138  AmrVectorFieldContainer_t& mesh_data,
139  int lev_min, int lev_max);
140 
148  template <class AType>
150 
151 
159  template <class AType>
161  AmrVectorFieldContainer_t& mesh_data,
162  int lev);
163 
164 
174  template <class AType>
176  const ParticleAttrib<int>& pbin, int bin = -1,
177  int ncomp=1, int particle_lvl_offset = 0) const;
178 
179 private:
181 };
182 
183 
184 #include "BoxLibParticle.hpp"
185 
186 #endif
amrex::Geometry AmrGeometry_t
Definition: AmrDefs.h:19
PLayout::AmrBox_t AmrBox_t
void InterpolateMultiLevelFort(ParticleAttrib< AType > &pa, AmrVectorFieldContainer_t &mesh_data, int lev)
PLayout::AmrGrid_t AmrGrid_t
PLayout::ParticlePos_t ParticlePos_t
Definition: TSVMeta.h:24
PLayout::AmrField_t AmrField_t
void AssignDensityFort(ParticleAttrib< AType > &pa, AmrScalarFieldContainer_t &mf_to_be_filled, int lev_min, int ncomp, int finest_level, const ParticleAttrib< int > &pbin, int bin=-1) const
void InterpolateSingleLevelFort(ParticleAttrib< AType > &pa, AmrVectorField_t &mesh_data, int lev)
AmrParticleBase< PLayout >::AmrField_t AmrField_t
AmrParticleBase< PLayout >::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
amrex::IntVect AmrIntVect_t
Definition: AmrDefs.h:28
PLayout::SingleParticlePos_t SingleParticlePos_t
AmrParticleBase< PLayout >::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
void AssignCellDensitySingleLevelFort(ParticleAttrib< AType > &pa, AmrField_t &mf, int level, const ParticleAttrib< int > &pbin, int bin=-1, int ncomp=1, int particle_lvl_offset=0) const
PLayout::AmrGeometry_t AmrGeometry_t
AmrParticleBase< PLayout >::ParticlePos_t ParticlePos_t
AmrParticleBase< PLayout >::ParticleIndex_t ParticleIndex_t
IpplTimings::TimerRef AssignDensityTimer_m
PLayout::AmrReal_t AmrReal_t
PLayout::ParticleIndex_t ParticleIndex_t
amrex::DistributionMapping AmrProcMap_t
Definition: AmrDefs.h:18
AmrParticleBase< PLayout >::ParticleLevelCounter_t ParticleLevelCounter_t
PLayout::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
amrex::Box AmrBox_t
Definition: AmrDefs.h:30
void scatter(ParticleAttrib< FT > &attrib, AmrScalarFieldContainer_t &f, ParticleAttrib< Vektor< PT, Dim > > &pp, int lbase, int lfine, const ParticleAttrib< int > &pbin, int bin=-1)
void InterpolateFort(ParticleAttrib< AType > &pa, AmrVectorFieldContainer_t &mesh_data, int lev_min, int lev_max)
PLayout::AmrProcMap_t AmrProcMap_t
AmrParticleBase< PLayout >::AmrVectorField_t AmrVectorField_t
amrex::BoxArray AmrGrid_t
Definition: AmrDefs.h:20
amrex::FArrayBox FArrayBox_t
PLayout::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
Timing::TimerRef TimerRef
Definition: IpplTimings.h:176
PLayout::AmrVectorField_t AmrVectorField_t
PLayout::AmrIntVect_t AmrIntVect_t
void gather(ParticleAttrib< FT > &attrib, AmrVectorFieldContainer_t &f, ParticleAttrib< Vektor< PT, Dim > > &pp, int lbase, int lfine)
AmrParticleBase< PLayout >::SingleParticlePos_t SingleParticlePos_t
amrex::Real AmrReal_t
Definition: AmrDefs.h:31