externalPointEdgePoint.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2013-2016 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::externalPointEdgePoint
29 
30 Description
31  Holds information regarding nearest wall point. Used in PointEdgeWave.
32  (so not standard FaceCellWave)
33  To be used in wall distance calculation.
34 
35 SourceFiles
36  externalPointEdgePointI.H
37  externalPointEdgePoint.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef externalPointEdgePoint_H
42 #define externalPointEdgePoint_H
43 
44 #include "pointField.H"
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 // Forward Declarations
52 class polyPatch;
53 class polyMesh;
54 class externalPointEdgePoint;
55 
56 Istream& operator>>(Istream&, externalPointEdgePoint&);
57 Ostream& operator<<(Ostream&, const externalPointEdgePoint&);
58 
59 
60 /*---------------------------------------------------------------------------*\
61  Class externalPointEdgePoint Declaration
62 \*---------------------------------------------------------------------------*/
63 
65 {
66  // Private data
67 
68  //- Position of nearest wall center
69  point origin_;
70 
71  //- Normal distance (squared) from point to origin
72  scalar distSqr_;
73 
74 
75  // Private Member Functions
76 
77  //- Evaluate distance to point. Update distSqr, origin from whomever
78  // is nearer pt. Return true if w2 is closer to point,
79  // false otherwise.
80  template<class TrackingData>
81  inline bool update
82  (
83  const point&,
85  const scalar tol,
86  TrackingData& td
87  );
88 
89  //- Combine current with w2. Update distSqr, origin if w2 has smaller
90  // quantities and returns true.
91  template<class TrackingData>
92  inline bool update
93  (
95  const scalar tol,
96  TrackingData& td
97  );
98 
99 
100 public:
101 
102  //- Class used to pass data into container
103  class trackingData
104  {
105  public:
106  const pointField& points_;
107 
109  :
110  points_(points)
111  {}
112  };
113 
114 
115 
116  // Constructors
117 
118  //- Construct null
119  inline externalPointEdgePoint();
120 
121  //- Construct from origin, distance
122  inline externalPointEdgePoint(const point&, const scalar);
123 
124  //- Construct as copy
126 
127 
128  // Member Functions
129 
130  // Access
131 
132  inline const point& origin() const;
133 
134  inline scalar distSqr() const;
135 
136 
137  // Needed by PointEdgeWave
138 
139  //- Check whether origin has been changed at all or
140  // still contains original (invalid) value.
141  template<class TrackingData>
142  inline bool valid(TrackingData& td) const;
143 
144  //- Check for identical geometrical data. Used for cyclics checking.
145  template<class TrackingData>
146  inline bool sameGeometry
147  (
148  const externalPointEdgePoint&,
149  const scalar tol,
150  TrackingData& td
151  ) const;
152 
153  //- Convert origin to relative vector to leaving point
154  // (= point coordinate)
155  template<class TrackingData>
156  inline void leaveDomain
157  (
158  const polyPatch& patch,
159  const label patchPointi,
160  const point& pos,
161  TrackingData& td
162  );
163 
164  //- Convert relative origin to absolute by adding entering point
165  template<class TrackingData>
166  inline void enterDomain
167  (
168  const polyPatch& patch,
169  const label patchPointi,
170  const point& pos,
171  TrackingData& td
172  );
173 
174  //- Apply rotation matrix to origin
175  template<class TrackingData>
176  inline void transform
177  (
178  const tensor& rotTensor,
179  TrackingData& td
180  );
181 
182  //- Influence of edge on point
183  template<class TrackingData>
184  inline bool updatePoint
185  (
186  const polyMesh& mesh,
187  const label pointi,
188  const label edgeI,
189  const externalPointEdgePoint& edgeInfo,
190  const scalar tol,
191  TrackingData& td
192  );
193 
194  //- Influence of different value on same point.
195  // Merge new and old info.
196  template<class TrackingData>
197  inline bool updatePoint
198  (
199  const polyMesh& mesh,
200  const label pointi,
201  const externalPointEdgePoint& newPointInfo,
202  const scalar tol,
203  TrackingData& td
204  );
205 
206  //- Influence of different value on same point.
207  // No information about current position whatsoever.
208  template<class TrackingData>
209  inline bool updatePoint
210  (
211  const externalPointEdgePoint& newPointInfo,
212  const scalar tol,
213  TrackingData& td
214  );
215 
216  //- Influence of point on edge.
217  template<class TrackingData>
218  inline bool updateEdge
219  (
220  const polyMesh& mesh,
221  const label edgeI,
222  const label pointi,
223  const externalPointEdgePoint& pointInfo,
224  const scalar tol,
225  TrackingData& td
226  );
227 
228  //- Equivalent to operator== with TrackingData
229  template<class TrackingData>
230  inline bool equal
231  (
232  const externalPointEdgePoint&,
233  TrackingData& td
234  ) const;
235 
236 
237  // Member Operators
238 
239  // Needed for List IO
240  inline bool operator==(const externalPointEdgePoint&) const;
241  inline bool operator!=(const externalPointEdgePoint&) const;
242 
243 
244  // IOstream Operators
245 
248 };
249 
250 
251 // * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * //
252 
253 //- Contiguous data for externalPointEdgePoint
254 template<> struct is_contiguous<externalPointEdgePoint> : std::true_type {};
255 
256 
257 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
258 
259 } // End namespace Foam
260 
261 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
262 
263 #include "externalPointEdgePointI.H"
264 
265 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
266 
267 #endif
268 
269 // ************************************************************************* //
externalPointEdgePointI.H
Foam::Tensor< scalar >
Foam::externalPointEdgePoint::origin
const point & origin() const
Definition: externalPointEdgePointI.H:150
Foam::externalPointEdgePoint::updatePoint
bool updatePoint(const polyMesh &mesh, const label pointi, const label edgeI, const externalPointEdgePoint &edgeInfo, const scalar tol, TrackingData &td)
Influence of edge on point.
Definition: externalPointEdgePointI.H:238
Foam::externalPointEdgePoint::valid
bool valid(TrackingData &td) const
Check whether origin has been changed at all or.
Definition: externalPointEdgePointI.H:163
update
mesh update()
Foam::externalPointEdgePoint::operator<<
friend Ostream & operator<<(Ostream &, const externalPointEdgePoint &)
Foam::externalPointEdgePoint
Holds information regarding nearest wall point. Used in PointEdgeWave. (so not standard FaceCellWave)...
Definition: externalPointEdgePoint.H:63
Foam::externalPointEdgePoint::distSqr
scalar distSqr() const
Definition: externalPointEdgePointI.H:156
Foam::externalPointEdgePoint::enterDomain
void enterDomain(const polyPatch &patch, const label patchPointi, const point &pos, TrackingData &td)
Convert relative origin to absolute by adding entering point.
Definition: externalPointEdgePointI.H:224
Foam::operator>>
Istream & operator>>(Istream &, directionInfo &)
Definition: directionInfo.C:228
Foam::externalPointEdgePoint::leaveDomain
void leaveDomain(const polyPatch &patch, const label patchPointi, const point &pos, TrackingData &td)
Convert origin to relative vector to leaving point.
Definition: externalPointEdgePointI.H:200
Foam::externalPointEdgePoint::trackingData::trackingData
trackingData(const pointField &points)
Definition: externalPointEdgePoint.H:107
Foam::externalPointEdgePoint::sameGeometry
bool sameGeometry(const externalPointEdgePoint &, const scalar tol, TrackingData &td) const
Check for identical geometrical data. Used for cyclics checking.
Definition: externalPointEdgePointI.H:172
Foam::externalPointEdgePoint::updateEdge
bool updateEdge(const polyMesh &mesh, const label edgeI, const label pointi, const externalPointEdgePoint &pointInfo, const scalar tol, TrackingData &td)
Influence of point on edge.
Definition: externalPointEdgePointI.H:279
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::externalPointEdgePoint::trackingData
Class used to pass data into container.
Definition: externalPointEdgePoint.H:102
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:62
Foam::Field< vector >
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Foam::externalPointEdgePoint::operator!=
bool operator!=(const externalPointEdgePoint &) const
Definition: externalPointEdgePointI.H:317
Foam::polyPatch
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:66
Foam::externalPointEdgePoint::operator==
bool operator==(const externalPointEdgePoint &) const
Definition: externalPointEdgePointI.H:307
Foam::externalPointEdgePoint::trackingData::points_
const pointField & points_
Definition: externalPointEdgePoint.H:105
Foam::externalPointEdgePoint::externalPointEdgePoint
externalPointEdgePoint()
Construct null.
Definition: externalPointEdgePointI.H:120
w2
#define w2
Definition: blockCreate.C:35
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
pointField.H
Foam::foamVersion::patch
const std::string patch
OpenFOAM patch number as a std::string.
Foam::Vector< scalar >
points
const pointField & points
Definition: gmvOutputHeader.H:1
Foam::externalPointEdgePoint::transform
void transform(const tensor &rotTensor, TrackingData &td)
Apply rotation matrix to origin.
Definition: externalPointEdgePointI.H:213
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::externalPointEdgePoint::operator>>
friend Istream & operator>>(Istream &, externalPointEdgePoint &)
Foam::externalPointEdgePoint::equal
bool equal(const externalPointEdgePoint &, TrackingData &td) const
Equivalent to operator== with TrackingData.
Definition: externalPointEdgePointI.H:295
Foam::operator<<
Ostream & operator<<(Ostream &, const boundaryPatch &)
Definition: boundaryPatch.C:102
Foam::is_contiguous
A template class to specify that a data type can be considered as being contiguous in memory.
Definition: contiguous.H:75
Foam::pos
dimensionedScalar pos(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:177