ESyS-Particle  2.3.2
SimpleParticleData.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 namespace esys
14 {
15  namespace lsm
16  {
17 //===============================================================================
19  : m_id(-1),
20  m_tag(-1),
21  m_position(),
22  m_radius(0.0),
23  m_mass(0.0)
24  {
25  setMass(get3dMass());
26  }
27 
29  Id id,
30  Tag tag,
31  const Vec3 &position,
32  double radius
33  )
34  : m_id(id),
35  m_tag(tag),
36  m_position(position),
37  m_radius(radius),
38  m_mass(0.0)
39  {
40  setMass(get3dMass());
41  }
42 
44  const Vec3 &position,
45  double radius,
46  Id id,
47  Tag tag
48  )
49  : m_id(id),
50  m_tag(tag),
51  m_position(position),
52  m_radius(radius),
53  m_mass(0.0)
54  {
55  setMass(get3dMass());
56  }
57 
59  : m_id(p.m_id),
60  m_tag(p.m_tag),
61  m_position(p.m_position),
62  m_radius(p.m_radius),
63  m_mass(p.m_mass)
64  {
65  }
66 
68  {
69  m_id = p.m_id;
70  m_tag = p.m_tag;
72  m_radius = p.m_radius;
73  m_mass = p.m_mass;
74 
75  return *this;
76  }
77 
79  const SimpleParticleData &particleData
80  ) const
81  {
82  return
83  (
84  (getId() == particleData.getId())
85  &&
86  (getPosition() == particleData.getPosition())
87  &&
88  (getRadius() == particleData.getRadius())
89  &&
90  (getTag() == particleData.getTag())
91  );
92  }
93 
95  {
96  return m_id;
97  }
98 
99  void SimpleParticleData::setId(const Id &id)
100  {
101  m_id = id;
102  }
103 
105  {
106  setId(id);
107  }
108 
110  {
111  return getId();
112  }
113 
115  {
116  return m_position;
117  }
118 
120  {
121  m_position = pos;
122  }
123 
125  {
126  return m_tag;
127  }
128 
130  {
131  m_tag = tag;
132  }
133 
135  {
136  return m_radius;
137  }
138 
139  void SimpleParticleData::setRadius(const double &r)
140  {
141  m_radius = r;
142  }
143 
144  void SimpleParticleData::setMass(double mass)
145  {
146  m_mass = mass;
147  }
148 
150  {
151  return m_mass;
152  }
153 
155  {
156  return m_radius*m_radius;
157  }
158 
160  {
161  return m_radius*m_radius*m_radius;
162  }
163 
164  void SimpleParticleData::read(std::istream &istream)
165  {
166  istream
167  >> m_position
168  >> m_radius
169  >> m_id
170  >> m_tag;
171  }
172 
173  void SimpleParticleData::write(std::ostream &oStream) const
174  {
175  const char delim = ' ';
176  oStream
177  << getPosition() << delim
178  << getRadius() << delim
179  << getId() << delim
180  << getTag();
181  }
182 
183  std::istream &operator>>(std::istream &iStream, SimpleParticleData &particleData)
184  {
185  particleData.read(iStream);
186  return iStream;
187  }
188 
189  std::ostream &operator<<(std::ostream &oStream, const SimpleParticleData &particleData)
190  {
191  particleData.write(oStream);
192  return oStream;
193  }
194  }
195 }