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