wallPointDataI.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) 2011-2016 OpenFOAM Foundation
9  Copyright (C) 2020 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 \*---------------------------------------------------------------------------*/
28 
29 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
30 
31 // Update this with w2 if w2 nearer to pt.
32 template<class Type>
33 template<class TrackingData>
35 (
36  const point& pt,
37  const wallPointData<Type>& w2,
38  const scalar tol,
39  TrackingData& td
40 )
41 {
42  const scalar dist2 = magSqr(pt - w2.origin());
43 
44  if (valid(td))
45  {
46  const scalar diff = distSqr() - dist2;
47 
48  if (diff < 0)
49  {
50  // already nearer to pt
51  return false;
52  }
53 
54  if ((diff < SMALL) || ((distSqr() > SMALL) && (diff/distSqr() < tol)))
55  {
56  // don't propagate small changes
57  return false;
58  }
59  }
60 
61  // Either *this is not yet valid or w2 is closer
62  {
63  // current not yet set so use any value
64  distSqr() = dist2;
65  origin() = w2.origin();
66  data_ = w2.data();
67 
68  return true;
69  }
70 }
71 
72 
73 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
74 
75 template<class Type>
77 :
78  wallPoint(),
79  data_()
80 {}
81 
82 
83 template<class Type>
85 (
86  const point& origin,
87  const Type& data,
88  const scalar distSqr
89 )
90 :
91  wallPoint(origin, distSqr),
92  data_(data)
93 {}
94 
95 
96 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
97 
98 // Update this with w2 if w2 nearer to pt.
99 template<class Type>
100 template<class TrackingData>
102 (
103  const polyMesh& mesh,
104  const label thisCelli,
105  const label,
106  const wallPointData<Type>& neighbourWallInfo,
107  const scalar tol,
108  TrackingData& td
109 )
110 {
111  const vectorField& cellCentres = mesh.primitiveMesh::cellCentres();
112 
113  return update
114  (
115  cellCentres[thisCelli],
116  neighbourWallInfo,
117  tol,
118  td
119  );
120 }
121 
122 
123 // Update this with w2 if w2 nearer to pt.
124 template<class Type>
125 template<class TrackingData>
127 (
128  const polyMesh& mesh,
129  const label thisFacei,
130  const label,
131  const wallPointData<Type>& neighbourWallInfo,
132  const scalar tol,
133  TrackingData& td
134 )
135 {
136  const vectorField& faceCentres = mesh.faceCentres();
137 
138  return update
139  (
140  faceCentres[thisFacei],
141  neighbourWallInfo,
142  tol,
143  td
144  );
145 }
146 
147 
148 // Update this with w2 if w2 nearer to pt.
149 template<class Type>
150 template<class TrackingData>
152 (
153  const polyMesh& mesh,
154  const label thisFacei,
155  const wallPointData<Type>& neighbourWallInfo,
156  const scalar tol,
157  TrackingData& td
158 )
159 {
160  const vectorField& faceCentres = mesh.faceCentres();
161 
162  return update
163  (
164  faceCentres[thisFacei],
165  neighbourWallInfo,
166  tol,
167  td
168  );
169 }
170 
171 
172 // ************************************************************************* //
Foam::wallPoint
Holds information regarding nearest wall point. Used in wall distance calculation.
Definition: wallPoint.H:65
update
mesh update()
Foam::wallPointData::wallPointData
wallPointData()
Default construct.
Definition: wallPointDataI.H:76
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::wallPointData::updateFace
bool updateFace(const polyMesh &mesh, const label thisFacei, const label neighbourCelli, const wallPointData< Type > &neighbourWallInfo, const scalar tol, TrackingData &td)
Influence of neighbouring cell.
Definition: wallPointDataI.H:127
Foam::magSqr
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
Foam::diff
scalar diff(const triad &A, const triad &B)
Return a quantity of the difference between two triads.
Definition: triad.C:378
Foam::Field< vector >
Foam::wallPointData::updateCell
bool updateCell(const polyMesh &mesh, const label thisCelli, const label neighbourFacei, const wallPointData< Type > &neighbourWallInfo, const scalar tol, TrackingData &td)
Influence of neighbouring face.
Definition: wallPointDataI.H:102
w2
#define w2
Definition: blockCreate.C:35
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::Vector< scalar >
Foam::wallPointData
Holds information (coordinate and normal) regarding nearest wall point.
Definition: wallPointData.H:52
Foam::point
vector point
Point is a vector.
Definition: point.H:43
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:55