multiTriSurface.hpp
Go to the documentation of this file.
1 /*------------------------------- phasicFlow ---------------------------------
2  O C enter of
3  O O E ngineering and
4  O O M ultiscale modeling of
5  OOOOOOO F luid flow
6 ------------------------------------------------------------------------------
7  Copyright (C): www.cemf.ir
8  email: hamid.r.norouzi AT gmail.com
9 ------------------------------------------------------------------------------
10 Licence:
11  This file is part of phasicFlow code. It is a free software for simulating
12  granular and multiphase flows. You can redistribute it and/or modify it under
13  the terms of GNU General Public License v3 or any other later versions.
14 
15  phasicFlow is distributed to help others in their research in the field of
16  granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
17  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 
19 -----------------------------------------------------------------------------*/
20 
21 
22 #ifndef __multiTriSurface_hpp__
23 #define __multiTriSurface_hpp__
24 
25 
26 #include "triSurface.hpp"
27 #include "VectorDuals.hpp"
28 
29 namespace pFlow
30 {
31 
32 
34 :
35  public triSurface
36 {
37 protected:
38 
39  // - the index of last point of each triSurface
41 
42  // - the index of the last vertex of each triSurface
44 
45  // - name of each surface
47 
49 
51 
53 
55 
57 
58  void calculateVars();
59 
60 public:
61 
62  // - type info
63  TypeInfoNV("multiTriSurface");
64 
66 
67  // - emtpy
69 
70  multiTriSurface(const multiTriSurface&) = default;
71 
72  multiTriSurface& operator = (const multiTriSurface&) = default;
73 
74  multiTriSurface(multiTriSurface&&) = delete;
75 
77 
78  ~multiTriSurface() = default;
79 
81 
82  bool addTriSurface(const word& name, const triSurface& tSurf);
83 
84  bool addTriSurface(const word& name, const realx3x3Vector& vertices);
85 
87  {
88  return numSurfaces_;
89  }
90 
91  void clear()
92  {
94 
97  }
98 
99 
100  const auto& pointsStartPos()const
101  {
102  return pointsStartPos_;
103  }
104 
105  const auto& verticesStartPos()const
106  {
107  return verticesStartPos_;
108  }
109 
110  const auto& surfaceNumPoints()const
111  {
112  return surfaceNumPoints_;
113  }
114 
116  {
117  return surfaceNumPoints_;
118  }
119 
121  {
122  return surfaceNumPoints_[i];
123  }
124 
126  {
127  return surfaceNumVertices_[i];
128  }
129 
131  {
132  return surfNumTriangles(i);
133  }
134 
136  {
137  return surfaceNames_[i];
138  }
139 
141 
142  bool readMultiTriSurface(iIstream& is);
143 
144  bool writeMultiTriSurface(iOstream& os)const;
145 
146  bool read(iIstream& is)
147  {
148  return readMultiTriSurface(is);
149  }
150 
151  bool write(iOstream& os)const
152  {
153  return writeMultiTriSurface(os);
154  }
155 
156 };
157 
159 {
160  if(!tri.readMultiTriSurface(is))
161  {
162  ioErrorInFile(is.name(), is.lineNumber())<<
163  " error in reading multiTriSurface from file.\n";
164  fatalExit;
165  }
166  return is;
167 }
168 
170 {
171  if( !tri.writeMultiTriSurface(os) )
172  {
173  ioErrorInFile(os.name(), os.lineNumber())<<
174  " error in writing multiTriSurface to file.\n";
175  fatalExit;
176  }
177  return os;
178 }
179 
180 }
181 
182 
183 #endif
pFlow::multiTriSurface::surfNumTriangles
int32 surfNumTriangles(int32 i) const
Definition: multiTriSurface.hpp:125
pFlow::triSurface::clear
void clear()
Definition: triSurface.hpp:234
pFlow::multiTriSurface::multiTriSurface
multiTriSurface()
Definition: multiTriSurface.cpp:85
pFlow::multiTriSurface::numSurfaces
int32 numSurfaces() const
Definition: multiTriSurface.hpp:86
pFlow::multiTriSurface::write
bool write(iOstream &os) const
Definition: multiTriSurface.hpp:151
fatalExit
#define fatalExit
Definition: error.hpp:57
pFlow::multiTriSurface::readMultiTriSurface
bool readMultiTriSurface(iIstream &is)
Definition: multiTriSurface.cpp:211
pFlow::multiTriSurface::lastVertexIndex_
int32Field_HD lastVertexIndex_
Definition: multiTriSurface.hpp:43
pFlow::multiTriSurface::operator=
multiTriSurface & operator=(const multiTriSurface &)=default
pFlow::word
std::string word
Definition: builtinTypes.hpp:63
pFlow::multiTriSurface::numSurfaces_
int32 numSurfaces_
Definition: multiTriSurface.hpp:56
pFlow::multiTriSurface::surfSize
int32 surfSize(int32 i) const
Definition: multiTriSurface.hpp:130
pFlow::multiTriSurface::surfaceNumVertices_
int32Field_HD surfaceNumVertices_
Definition: multiTriSurface.hpp:52
pFlow::Field< VectorDual, int32 >
pFlow::multiTriSurface::surfaceNumPoints
auto & surfaceNumPoints()
Definition: multiTriSurface.hpp:115
pFlow::multiTriSurface::lastPointIndex_
int32Field_HD lastPointIndex_
Definition: multiTriSurface.hpp:40
pFlow::multiTriSurface::surfaceNames_
wordField surfaceNames_
Definition: multiTriSurface.hpp:46
pFlow
Definition: demComponent.hpp:28
pFlow::multiTriSurface
Definition: multiTriSurface.hpp:33
pFlow::multiTriSurface::TypeInfoNV
TypeInfoNV("multiTriSurface")
pFlow::multiTriSurface::surfaceNumPoints
const auto & surfaceNumPoints() const
Definition: multiTriSurface.hpp:110
pFlow::multiTriSurface::surfNumPoints
int32 surfNumPoints(int32 i) const
Definition: multiTriSurface.hpp:120
pFlow::iIstream
Definition: iIstream.hpp:33
pFlow::VectorDual::clear
INLINE_FUNCTION_H void clear()
Definition: VectorDual.hpp:448
pFlow::int32
int int32
Definition: builtinTypes.hpp:53
pFlow::VectorDual< int32 >
pFlow::operator>>
INLINE_FUNCTION iIstream & operator>>(iIstream &str, AB3History &ab3)
Definition: AdamsBashforth3.hpp:41
pFlow::operator<<
INLINE_FUNCTION iOstream & operator<<(iOstream &str, const AB3History &ab3)
Definition: AdamsBashforth3.hpp:57
pFlow::multiTriSurface::pointsStartPos_
int32Vector_HD pointsStartPos_
Definition: multiTriSurface.hpp:50
pFlow::multiTriSurface::clear
void clear()
Definition: multiTriSurface.hpp:91
pFlow::IOstream::name
virtual const word & name() const
Definition: IOstream.cpp:31
pFlow::multiTriSurface::verticesStartPos_
int32Vector_HD verticesStartPos_
Definition: multiTriSurface.hpp:54
pFlow::Vector::clear
auto clear()
Definition: Vector.hpp:248
pFlow::multiTriSurface::~multiTriSurface
~multiTriSurface()=default
pFlow::multiTriSurface::read
bool read(iIstream &is)
Definition: multiTriSurface.hpp:146
pFlow::multiTriSurface::surfaceNumPoints_
int32Field_HD surfaceNumPoints_
Definition: multiTriSurface.hpp:48
pFlow::multiTriSurface::pointsStartPos
const auto & pointsStartPos() const
Definition: multiTriSurface.hpp:100
pFlow::multiTriSurface::addTriSurface
bool addTriSurface(const word &name, const triSurface &tSurf)
Definition: multiTriSurface.cpp:96
pFlow::multiTriSurface::writeMultiTriSurface
bool writeMultiTriSurface(iOstream &os) const
Definition: multiTriSurface.cpp:232
pFlow::triSurface::vertices
const int32x3Vector_D & vertices() const
Definition: triSurface.hpp:214
ioErrorInFile
#define ioErrorInFile(fileName, lineNumber)
Definition: error.hpp:49
pFlow::IOstream::lineNumber
int32 lineNumber() const
Definition: IOstream.hpp:187
pFlow::triSurface
Definition: triSurface.hpp:38
pFlow::multiTriSurface::surfaceName
word surfaceName(int32 i) const
Definition: multiTriSurface.hpp:135
pFlow::multiTriSurface::calculateVars
void calculateVars()
Definition: multiTriSurface.cpp:24
pFlow::Vector
Definition: Vector.hpp:46
pFlow::iOstream
Definition: iOstream.hpp:53
pFlow::multiTriSurface::verticesStartPos
const auto & verticesStartPos() const
Definition: multiTriSurface.hpp:105
VectorDuals.hpp
triSurface.hpp