14 #ifndef ESYS_LSMGRAINRANDOMBOXPACKER_H
15 #define ESYS_LSMGRAINRANDOMBOXPACKER_H
17 #include "Geometry/RandomBoxPacker.h"
18 #include "Geometry/GrainCollection.h"
21 #include <boost/shared_ptr.hpp>
30 template <
typename TmplParticleGrainGen,
typename TmplGrainCollection,
template <
typename TPartGrainGen>
class TmplRndBoxPackerWrap>
34 typedef TmplGrainCollection GrainCollection;
35 typedef boost::shared_ptr<GrainCollection> GrainCollectionPtr;
38 typedef typename GrainCollection::Grain Grain;
39 typedef typename Grain::Id GrainId;
40 typedef typename GrainCollection::GrainPool GrainPool;
41 typedef typename GrainCollection::GrainPoolPtr GrainPoolPtr;
43 typename TmplRndBoxPackerWrap<TmplParticleGrainGen>::RandomBoxPackerBase
45 typedef Inherited RandomBoxPackerBase;
46 typedef typename Inherited::ParticleGenerator ParticleGrainGen;
47 typedef typename Inherited::ParticleGeneratorPtr ParticleGrainGenPtr;
48 typedef typename Inherited::Particle Particle;
49 typedef typename Inherited::NTable NTable;
50 typedef typename Inherited::NTablePtr NTablePtr;
51 typedef typename Inherited::ParticleVector ParticleVector;
52 typedef typename Inherited::ParticlePool ParticlePool;
53 typedef typename Inherited::ParticlePoolPtr ParticlePoolPtr;
54 typedef typename Inherited::PlaneVector PlaneVector;
55 typedef typename Inherited::StuffedParticleIterator StuffedParticleIterator;
58 ParticleGrainGenPtr particleGrainGenPtr,
59 ParticlePoolPtr particlePoolPtr,
62 const BoolVector &periodicDimensions,
64 double cubicPackRadius,
65 int maxInsertionFailures
69 ParticleGrainGenPtr particleGrainGenPtr,
70 ParticlePoolPtr particlePoolPtr,
73 const BoolVector &periodicDimensions,
75 double cubicPackRadius,
76 int maxInsertionFailures,
77 const PlaneVector &fitPlaneVector,
78 GrainPoolPtr grainPoolPtr
83 ParticleGrainGen &getParticleGrainGen();
85 const ParticleGrainGen &getParticleGrainGen()
const;
87 void setParticleGrainGen(ParticleGrainGen &particleGrainGen);
89 void setParticleGrainGen(ParticleGrainGenPtr particleGrainGenPtr);
91 GrainId getNextGrainId()
const;
93 Grain &constructGrain();
95 Grain &createAndInsertGrain(
const Grain &grain);
97 void generateRandomFillGrains();
99 void generateCubicPackingGrains();
101 int getNumGrains()
const;
107 const GrainCollection &getGrainCollection()
const;
109 GrainCollection &getGrainCollection();
111 virtual void generate();
114 GrainCollectionPtr m_grainCollectionPtr;
119 #include "Geometry/GrainRandomBoxPacker.hpp"