ESyS-Particle  2.3.2
SimpleBlock.hpp
Go to the documentation of this file.
1 
2 // //
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 
14 #include "Geometry/SimpleBlock.h"
15 #include <stdexcept>
16 #include <fstream>
17 #include <sstream>
18 #include <iomanip>
19 
20 #include <boost/limits.hpp>
21 
22 namespace esys
23 {
24  namespace lsm
25  {
26  template <typename TmplParticle>
28  unsigned int numX,
29  unsigned int numY,
30  unsigned int numZ,
31  double radius
32  )
33  : m_radius(radius),
34  m_dimCounts(numX, numY, numZ)
35  {
36  }
37 
38  template <typename TmplParticle>
40  {
41  return
42  Vec3(
43  idx[0]*2.0*getRadius() + getRadius(),
44  idx[1]*2.0*getRadius() + getRadius(),
45  idx[2]*2.0*getRadius() + ((m_dimCounts[2] > 1) ? getRadius() : 0.0)
46  );
47  }
48 
49  template <typename TmplParticle>
51  {
52  return
53  idx[0]
54  +
55  idx[1]*m_dimCounts[0]
56  +
57  idx[2]*m_dimCounts[0]*m_dimCounts[1];
58  }
59 
60  template <typename TmplParticle>
61  template <typename TmplParticleCollection>
62  void
64  TmplParticleCollection &particleCollection
65  )
66  {
67  Vec3L idx(0, 0, 0);
68  for (idx[2]=0; idx[2] < m_dimCounts[2]; (idx[2])++)
69  {
70  for (idx[1]=0; idx[1] < m_dimCounts[1]; (idx[1])++)
71  {
72  for (idx[0]=0; idx[0] < m_dimCounts[0]; (idx[0])++)
73  {
74  particleCollection.createParticle(
75  TmplParticle(
76  getPos(idx),
77  getRadius(),
78  getId(idx),
79  0
80  )
81  );
82  }
83  }
84  }
85  }
86 
87  template <typename TmplParticle>
89  {
90  }
91 
92  template <typename TmplParticle>
94  {
95  return m_radius;
96  }
97 
98 
99 
100 
101 
102 
103 
104  template <typename TmplParticle>
106  unsigned int numX,
107  unsigned int numY,
108  unsigned int numZ,
109  double radius
110  )
111  : ParticleCollection<TmplParticle>(),
112  m_generator(numX, numY, numZ, radius)
113  {
114  createParticles();
115  }
116 
117  template <typename TmplParticle>
119  {
120  }
121 
122  template <typename TmplParticle>
124  {
125  m_generator.createParticles(*this);
126  }
127 
128  template <typename TmplParticle>
130  {
131  return m_generator.getRadius();
132  }
133  }
134 }