OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
ParticleLayoutFromGrid.h
Go to the documentation of this file.
1 //
2 // C++ Interface: ParticleLayoutFromGrid
3 //
4 // Description:
5 //
6 //
7 // Author: Roman Geus <geus@maxwell>, (C) 2005
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12 #ifndef ParticleLayoutFromGrid_H
13 #define ParticleLayoutFromGrid_H
14 
15 #include "Ippl.h"
16 #include "extpde.h"
17 
18 class ParticleLayoutFromGrid : public ParticleLayout<double,3> {
19 public:
20  typedef int pair_t;
32  ParticleLayoutFromGrid(Grid* grid, Domain* domain, D3vector& local_min, D3vector& local_max) :
33  grid_(grid),
34  geom_domain_(domain),
35  my_corner_min_(local_min),
36  my_corner_max_(local_max)
37  {}
55  inline bool is_local_pos(const Vector_t& x) const {
56  const D3vector y(x[0],x[1],x[2]);
58  }
64  inline bool is_local_pos(const D3vector& x) const {
66  }
67 
73  bool is_in_domain(const D3vector& x) const {
74  return geom_domain_->point_in_domain(x);
75  }
81  bool is_in_domain(const Vector_t& x) const {
82  const D3vector y(x[0],x[1],x[2]);
83  return geom_domain_->point_in_domain(y);
84  }
85 
93  inline static bool is_inside_box(const D3vector& corner_min, const D3vector& corner_max, const D3vector& x) {
94  return corner_min[0] <= x[0] && x[0] < corner_max[0] &&
95  corner_min[1] <= x[1] && x[1] < corner_max[1] &&
96  corner_min[2] <= x[2] && x[2] < corner_max[2];
97  }
98 
99 private:
116  Grid* grid_;
120  Domain* geom_domain_;
124  D3vector my_corner_min_;
128  D3vector my_corner_max_;
129 };
130 
131 #endif
bool is_in_domain(const D3vector &x) const
Vektor< double, 3 > Vector_t
ParticleLayoutFromGrid(Grid *grid, Domain *domain, D3vector &local_min, D3vector &local_max)
ParticleAttrib< Index_t > ParticleIndex_t
static bool is_inside_box(const D3vector &corner_min, const D3vector &corner_max, const D3vector &x)
void apply_bconds(ParticlePos_t &R)
ParticleAttrib< SingleParticlePos_t > ParticlePos_t
bool is_local_pos(const Vector_t &x) const
size_t redistribute_particles(IpplParticleBase< ParticleLayoutFromGrid > &particles)
void update(IpplParticleBase< ParticleLayoutFromGrid > &particles)
bool is_local_pos(const D3vector &x) const
bool is_in_domain(const Vector_t &x) const