ESyS-Particle  2.3.4
ClosePackIterator.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 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.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMCLOSEPACKITERATOR_H
15 #define ESYS_LSMCLOSEPACKITERATOR_H
16 
17 #include "Foundation/BoundingBox.h"
18 #include "Foundation/vec3.h"
19 #include "Geometry/Vec3L.h"
21 
22 namespace esys
23 {
24  namespace lsm
25  {
26  template <int NI, int NJ, int NK>
27  class TmplMatrix
28  {
29  public:
30  TmplMatrix();
31 
32  TmplMatrix(const TmplMatrix &m);
33 
35 
36  const double &operator()(int i, int j, int k) const;
37 
38  double &operator()(int i, int j, int k);
39 
40  int getNumI() const;
41 
42  int getNumJ() const;
43 
44  int getNumK() const;
45 
46  private:
47  double m_matrix[NI][NJ][NK];
48  };
49 
55  {
56  public:
57  static const double SQRT_1_OVER_3;
58  static const double SQRT_8_OVER_3;
59  static const double SQRT_3;
60 
64  inline ClosePackIterator();
65 
75  inline ClosePackIterator(
76  int numI,
77  int numJ,
78  int numK,
79  double sphereRadius,
81  );
82 
87  inline bool hasNext() const;
88 
92  inline Vec3 next();
93 
97  inline double getRadius() const;
98 
99  protected:
101 
102  inline void incrementDimIndex();
103 
104  inline double getOffset(int i) const;
105 
106  inline const Vec3 &getMinPt() const;
107 
108  inline void setMinPt(const Vec3 &pt) const;
109 
110  inline void setDimRepeat(const Vec3L &dimRepeat);
111 
112  inline void setOffsetMatrix(const OffsetMatrix &offsetMatrix);
113 
114  private:
116  double m_radius;
123  };
124  }
125 }
126 
128 
129 #endif
ClosePackIterator.h
esys::lsm::TmplMatrix::operator=
TmplMatrix & operator=(const TmplMatrix &m)
esys::lsm::ClosePackIterator::getMinPt
const Vec3 & getMinPt() const
Definition: ClosePackIterator.hpp:153
esys::lsm::TmplMatrix::getNumI
int getNumI() const
Definition: ClosePackIterator.hpp:81
esys::lsm::ClosePackIterator
Definition: ClosePackIterator.h:55
esys::lsm::ClosePackIterator::SQRT_1_OVER_3
static const double SQRT_1_OVER_3
Definition: ClosePackIterator.h:57
esys::lsm::ClosePackIterator::OffsetMatrix
TmplMatrix< 3, 6, 6 > OffsetMatrix
Definition: ClosePackIterator.h:100
Vec3L.h
esys::lsm::ClosePackIterator::ClosePackIterator
ClosePackIterator()
Definition: ClosePackIterator.hpp:98
esys::lsm::ClosePackIterator::m_radius
double m_radius
Definition: ClosePackIterator.h:116
esys::lsm::ClosePackIterator::s_orientationDimMap
static Vec3L s_orientationDimMap[NUM_ORIENTATIONS]
Definition: ClosePackIterator.h:115
esys::lsm::TmplMatrix::getNumJ
int getNumJ() const
Definition: ClosePackIterator.hpp:87
esys::lsm::ClosePackIterator::hasNext
bool hasNext() const
Definition: ClosePackIterator.hpp:148
esys
Definition: CheckPointable.cpp:17
esys::lsm::ClosePackIterator::SQRT_3
static const double SQRT_3
Definition: ClosePackIterator.h:59
esys::lsm::TmplMatrix::operator()
const double & operator()(int i, int j, int k) const
Definition: ClosePackIterator.hpp:69
esys::lsm::ClosePackIterator::incrementDimIndex
void incrementDimIndex()
Definition: ClosePackIterator.hpp:168
esys::lsm::ClosePackIterator::m_minPt
Vec3 m_minPt
Definition: ClosePackIterator.h:117
esys::lsm::ClosePackIterator::setOffsetMatrix
void setOffsetMatrix(const OffsetMatrix &offsetMatrix)
Definition: ClosePackIterator.hpp:138
esys::lsm::ClosePackIterator::m_dimCount
Vec3L m_dimCount
Definition: ClosePackIterator.h:120
esys::lsm::ClosePackIterator::getRadius
double getRadius() const
Definition: ClosePackIterator.hpp:143
ClosePackIterator.hpp
Vec3
Definition: vec3.h:47
esys::lsm::TmplMatrix::getNumK
int getNumK() const
Definition: ClosePackIterator.hpp:93
esys::lsm::ClosePackIterator::setMinPt
void setMinPt(const Vec3 &pt) const
esys::lsm::ClosePackIterator::next
Vec3 next()
Definition: ClosePackIterator.hpp:183
vec3.h
esys::lsm::NUM_ORIENTATIONS
@ NUM_ORIENTATIONS
Definition: ClosePackOrientation.h:34
esys::lsm::ClosePackIterator::setDimRepeat
void setDimRepeat(const Vec3L &dimRepeat)
Definition: ClosePackIterator.hpp:133
ClosePackOrientation.h
esys::lsm::TmplMatrix::m_matrix
double m_matrix[NI][NJ][NK]
Definition: ClosePackIterator.h:47
esys::lsm::ClosePackIterator::m_dimIdx
Vec3L m_dimIdx
Definition: ClosePackIterator.h:121
esys::lsm::TmplMatrix::TmplMatrix
TmplMatrix()
Definition: ClosePackIterator.hpp:22
esys::lsm::ClosePackIterator::SQRT_8_OVER_3
static const double SQRT_8_OVER_3
Definition: ClosePackIterator.h:58
esys::lsm::ClosePackIterator::m_dim
Vec3L m_dim
Definition: ClosePackIterator.h:122
esys::lsm::Vec3L
Definition: Vec3L.h:29
esys::lsm::ClosePackOrientation
ClosePackOrientation
Definition: ClosePackOrientation.h:26
esys::lsm::DEFAULT_ORIENT
@ DEFAULT_ORIENT
Definition: ClosePackOrientation.h:27
esys::lsm::ClosePackIterator::m_dimRepeat
Vec3L m_dimRepeat
Definition: ClosePackIterator.h:119
esys::lsm::ClosePackIterator::m_offsetMatrix
OffsetMatrix m_offsetMatrix
Definition: ClosePackIterator.h:118
esys::lsm::TmplMatrix
Definition: ClosePackIterator.h:28
esys::lsm::ClosePackIterator::getOffset
double getOffset(int i) const
Definition: ClosePackIterator.hpp:158
BoundingBox.h