ESyS-Particle  2.3
PackerPy.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef ESYS_LSMPACKERPY_H
14 #define ESYS_LSMPACKERPY_H
15 
16 #include "Geometry/Packer.h"
17 #include "Geometry/BoxPacker.h"
30 
31 namespace boost
32 {
33  namespace python
34  {
35  class list;
36  class tuple;
37  }
38 }
39 
40 namespace esys
41 {
42  namespace lsm
43  {
44  class PackerPy
45  : public Packer<SimpleSphereCollectionPy>,
46  public boost::python::wrapper<Packer<SimpleSphereCollectionPy> >
47  {
48  public:
50  typedef
53 
54  PackerPy(NTablePtr nTablePtr);
55 
56  PackerPy(ParticlePoolPtr particlePoolPtr, NTablePtr nTablePtr);
57 
59 
61 
62  virtual void generate();
63  };
64 
66 
67  class BoxPackerPy : public BoxPackerBasePy
68  {
69  public:
70  typedef BoxPackerBasePy Inherited;
71 
73  ParticlePoolPtr particlePoolPtr,
74  NTablePtr nTablePtr,
75  const BoundingBox &bBox,
76  const BoolVector &periodicDimensions,
77  double tolerance
78  );
79  };
80 
83  class CubicBoxPackerPy : public CubicBoxPackerBasePy
84  {
85  public:
86  typedef CubicBoxPackerBasePy Inherited;
88  double radius,
89  const BoundingBoxPy &bBox,
90  const boost::python::list &periodicDimensions,
91  double tolerance
92  );
93  };
94 
96  template <typename TPartGen>
97  class PackerWrap
98  {
99  public:
102  };
103 
106  class RandomBoxPackerPy : public RandomBoxPackerBasePy
107  {
108  public:
109  typedef RandomBoxPackerBasePy Inherited;
110 
112  double minRadius,
113  double maxRadius,
114  double cubicPackRadius,
115  int maxInsertionFailures,
116  const BoundingBoxPy &bBox,
117  const boost::python::list &periodicDimensions,
118  double tolerance
119  );
120 
122  ParticleGeneratorPtr particleGeneratorPtr,
123  ParticlePoolPtr particlePoolPtr,
124  NTablePtr nTablePtr,
125  const BoundingBox &bBox,
126  const BoolVector &periodicDimensions,
127  double tolerance,
128  double cubicPackRadius,
129  int maxInsertionFailures,
130  const PlaneVector &fitPlaneVector
131  );
132  };
133 
135  class RandomSpherePackerPy : public RandomSpherePackerBasePy
136  {
137  public:
138  typedef RandomSpherePackerBasePy Inherited;
139 
141  double minRadius,
142  double maxRadius,
143  double cubicPackRadius,
144  int maxInsertionFailures,
145  const BoundingSpherePy &bSphere,
146  double tolerance,
147  bool do2d
148  );
149  };
150 
153  public RndGrainGenBasePy,
154  public boost::python::wrapper<RndGrainGenBasePy>
155  {
156  public:
157  typedef RndGrainGenBasePy Inherited;
158 
160  double minGrainRadius,
161  double maxGrainRadius,
162  double minParticleRadius,
163  double maxParticleRadius
164  );
165 
166  const double &getMinParticleRadius() const;
167 
168  const double &getMaxParticleRadius() const;
169 
170  virtual Grain getGrain(const Particle &p);
171 
172  private:
175  };
176 
179  typedef
183  {
184  public:
187  typedef
188  Inherited::GrainCollection::GrainIteratorPy
190 
192  ParticleGrainGen &particleGrainGen,
193  double cubicPackRadius,
194  int maxInsertionFailures,
195  const BoundingBox &bBox,
196  const boost::python::list &circDimList,
197  double tolerance
198  );
199 
201  ParticleGrainGenPtr particleGrainGenPtr,
202  ParticlePoolPtr particlePoolPtr,
203  NTablePtr nTablePtr,
204  const BoundingBox &bBox,
205  const BoolVector &periodicDimensions,
206  double tolerance,
207  double cubicPackRadius,
208  int maxInsertionFailures,
209  const PlaneVector &fitPlaneVector,
210  GrainPoolPtr grainPoolPtr
211  );
212 
213 
215 
216  const GrainCollection &getGrainCollectionPy() const;
217  };
218 
219  void exportPacker();
220  }
221 }
222 
223 #endif
double m_minParticleRadius
Definition: PackerPy.h:173
GrainIteratorPy getGrainIteratorPy()
Definition: PackerPy.cpp:281
BoxPackerPy(ParticlePoolPtr particlePoolPtr, NTablePtr nTablePtr, const BoundingBox &bBox, const BoolVector &periodicDimensions, double tolerance)
Definition: PackerPy.cpp:54
Definition: Packer.h:32
CubicBoxPackerPy(double radius, const BoundingBoxPy &bBox, const boost::python::list &periodicDimensions, double tolerance)
Definition: PackerPy.cpp:73
const double & getMaxParticleRadius() const
Definition: PackerPy.cpp:212
Packer< SimpleSphereCollectionPy > Inherited
Definition: PackerPy.h:49
GrainRandomBoxPacker< RndGrainGenPy, GrainCollectionPy, PackerWrap > GrainRandomBoxPackerBasePy
Definition: PackerPy.h:181
Definition: BondInteractionGroupPy.h:19
GrainCollection::Grain Grain
Definition: GrainRandomBoxPacker.h:38
virtual void generate()
Definition: PackerPy.cpp:46
Definition: IteratorPy.h:28
RandomSpherePackerPy(double minRadius, double maxRadius, double cubicPackRadius, int maxInsertionFailures, const BoundingSpherePy &bSphere, double tolerance, bool do2d)
Definition: PackerPy.cpp:103
BoxPacker< PackerPy > BoxPackerBasePy
Definition: PackerPy.h:65
const double & getMinParticleRadius() const
Definition: PackerPy.cpp:207
std::vector< Plane3D > PlaneVector
Definition: RandomBoxPacker.h:125
Definition: PackerPy.h:83
Definition: PackerPy.h:67
GrainCollection::GrainPoolPtr GrainPoolPtr
Definition: GrainRandomBoxPacker.h:41
CubicBoxPackerBasePy Inherited
Definition: PackerPy.h:86
Definition: PackerPy.h:152
CubicBoxPacker< ConstRadiusGenPy, BoxPackerPy > CubicBoxPackerBasePy
Definition: PackerPy.h:82
PackerPy(NTablePtr nTablePtr)
Definition: PackerPy.cpp:27
Inherited::ParticleGeneratorPtr ParticleGeneratorPtr
Definition: RandomBoxPacker.h:118
Grain::Particle Particle
Definition: PackerGenerators.h:146
Definition: RandomSpherePacker.h:111
GrainRandomBoxPackerPy(ParticleGrainGen &particleGrainGen, double cubicPackRadius, int maxInsertionFailures, const BoundingBox &bBox, const boost::python::list &circDimList, double tolerance)
Definition: PackerPy.cpp:223
GrainRandomBoxPackerBasePy Inherited
Definition: PackerPy.h:185
PackerWrap< RndRadiusGenPy >::RandomBoxPackerBase RandomBoxPackerBasePy
Definition: PackerPy.h:105
TmplGrain Grain
Definition: PackerGenerators.h:145
Definition: CheckPointable.cpp:16
double m_maxParticleRadius
Definition: PackerPy.h:174
RndGrainGenPy(double minGrainRadius, double maxGrainRadius, double minParticleRadius, double maxParticleRadius)
Definition: PackerPy.cpp:196
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: BoxPacker.h:40
Definition: CubicBoxPacker.h:28
CubicBoxPacker< TPartGen, BoxPackerPy > CubicBoxPackerBase
Definition: PackerPy.h:100
Inherited::PlaneVector PlaneVector
Definition: GrainRandomBoxPacker.h:54
Definition: BoxPacker.h:32
Inherited::ParticleGeneratorPtr ParticleGrainGenPtr
Definition: GrainRandomBoxPacker.h:47
Definition: BoundingBoxPy.h:29
3D bounding box
Definition: BoundingBox.h:27
Definition: PackerPy.h:106
RandomBoxPackerBasePy Inherited
Definition: PackerPy.h:109
Definition: BoundingSpherePy.h:29
RandomSpherePacker< RndRadiusGenPy, PackerWrap > RandomSpherePackerBasePy
Definition: PackerPy.h:134
PackerWrap< RndGrainGenPy >::RandomBoxPackerBase GrainRndBoxPackerPy
Definition: PackerPy.h:178
const GrainCollection & getGrainCollectionPy() const
Definition: PackerPy.cpp:287
Definition: SimpleSphereCollectionPy.h:27
Inherited::ParticleGenerator ParticleGrainGen
Definition: GrainRandomBoxPacker.h:46
TmplGrainCollection GrainCollection
Definition: GrainRandomBoxPacker.h:34
Definition: PackerPy.h:135
Inherited::NTablePtr NTablePtr
Definition: GrainRandomBoxPacker.h:50
Definition: PackerPy.h:44
Definition: GrainRandomBoxPacker.h:31
Inherited::Grain Grain
Definition: PackerPy.h:186
GrainRndRadiusGen< GrainPy > RndGrainGenBasePy
Definition: PackerPy.h:151
ConstRadiusGen< SimpleSpherePy > ConstRadiusGenPy
Definition: PackerPy.h:81
Definition: PackerGenerators.h:27
RandomBoxPackerPy(double minRadius, double maxRadius, double cubicPackRadius, int maxInsertionFailures, const BoundingBoxPy &bBox, const boost::python::list &periodicDimensions, double tolerance)
Definition: PackerPy.cpp:137
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
Definition: PackerPy.h:97
Inherited::GrainCollection::GrainIteratorPy GrainIteratorPy
Definition: PackerPy.h:189
RandomSpherePackerBasePy Inherited
Definition: PackerPy.h:138
void exportPacker()
Definition: PackerPy.cpp:301
Inherited::NTablePtr NTablePtr
Definition: RandomBoxPacker.h:121
BoxPackerBasePy Inherited
Definition: PackerPy.h:70
boost::shared_ptr< ParticlePool > ParticlePoolPtr
Definition: Packer.h:40
SimpleSphereIteratorPy getSimpleSphereIteratorPy()
Definition: PackerPy.cpp:36
PackerWrap< RndGrainGenPy >::CubicBoxPackerBase GrainCubicBoxPackerPy
Definition: PackerPy.h:177
Definition: RandomBoxPacker.h:111
Definition: PackerPy.h:182
RndRadiusGen< SimpleSpherePy > RndRadiusGenPy
Definition: PackerPy.h:95
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: RandomBoxPacker.h:124
RndGrainGenBasePy Inherited
Definition: PackerPy.h:157
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: GrainRandomBoxPacker.h:53
Definition: PackerGenerators.h:141
boost::shared_ptr< NTable > NTablePtr
Definition: Packer.h:42
PackerWrap< RndRadiusGenPy >::CubicBoxPackerBase RndCubicBoxPackerBasePy
Definition: PackerPy.h:104
RandomBoxPacker< TPartGen,::esys::lsm::PackerWrap > RandomBoxPackerBase
Definition: PackerPy.h:101
SimpleSphereCollectionPy getSimpleSphereCollectionPy()
Definition: PackerPy.cpp:41
Inherited::NTablePtr NTablePtr
Definition: BoxPacker.h:38
virtual Grain getGrain(const Particle &p)
Definition: PackerPy.cpp:218
SimpleSphereCollectionPy::SimpleSphereIteratorPy SimpleSphereIteratorPy
Definition: PackerPy.h:52
Definition: PackerGenerators.h:117