ESyS-Particle  4.0.1
Grain.h
1 
2 // //
3 // Copyright (c) 2003-2011 by The University of Queensland //
4 // Earth Systems Science Computational Centre (ESSCC) //
5 // http://www.uq.edu.au/esscc //
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_LSMGRAIN_H
14 #define ESYS_LSMGRAIN_H
15 
16 #include "Geometry/ParticleCollection.h"
17 
18 namespace esys
19 {
20  namespace lsm
21  {
25  template <typename TmplParticleCollection>
26  class Grain : public TmplParticleCollection
27  {
28  public:
29  typedef TmplParticleCollection Inherited;
30  typedef Inherited ParticleCollection;
31  typedef typename Inherited::Particle Particle;
32  typedef typename Inherited::ParticlePool ParticlePool;
33  typedef typename Inherited::ParticlePoolPtr ParticlePoolPtr;
34  typedef typename Inherited::ParticleIterator ParticleIterator;
35  typedef typename Inherited::ParticleConstIterator ParticleConstIterator;
36  typedef long Id;
37 
38  Grain();
39 
40  Grain(Id id);
41 
42  Grain(ParticlePoolPtr particlePoolPtr);
43 
44  Grain(Id id, ParticlePoolPtr particlePoolPtr);
45 
46  Grain(const Grain &g);
47 
48  Grain &operator=(const Grain &g);
49 
50  Id getId() const;
51 
52  void setId(Id id);
53 
54  void setParticleIds(typename Particle::Id minId);
55 
56  private:
57  Id m_id;
58  };
59  }
60 }
61 
62 #include "Geometry/Grain.hpp"
63 
64 #endif