wallPointYPlusI.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) 2011-2012 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 \*---------------------------------------------------------------------------*/
25 
26 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
27 
28 namespace Foam
29 {
30 
31 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
32 
33 // Update this with w2 if w2 nearer to pt.
34 template<class TrackingData>
35 inline bool wallPointYPlus::update
36 (
37  const point& pt,
38  const wallPointYPlus& w2,
39  const scalar tol,
40  TrackingData& td
41 )
42 {
43  scalar dist2 = magSqr(pt - w2.origin());
44 
45  if (valid(td))
46  {
47  scalar diff = distSqr() - dist2;
48 
49  if (diff < 0)
50  {
51  // already nearer to pt
52  return false;
53  }
54 
55  if ((diff < SMALL) || ((distSqr() > SMALL) && (diff/distSqr() < tol)))
56  {
57  // don't propagate small changes
58  return false;
59  }
60  }
61 
62 
63  // Either *this is not yet valid or w2 is closer
64  {
65  // only propagate if interesting (i.e. y+ < 100)
66  scalar yPlus = Foam::sqrt(dist2)/w2.data();
67 
68  if (yPlus < yPlusCutOff)
69  {
70  // update with new values
71  distSqr() = dist2;
72  origin() = w2.origin();
73  data() = w2.data();
74 
75  return true;
76  }
77  else
78  {
79  return false;
80  }
81  }
82 }
83 
84 
85 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
86 
87 // Null constructor
89 :
90  wallPointData<scalar>()
91 {
92  // Important: value of yStar where meshWave does not come.
93  data() = 1.0;
94 }
95 
96 
97 // Construct from components
99 (
100  const point& origin,
101  const scalar yStar,
102  const scalar distSqr
103 )
104 :
105  wallPointData<scalar>(origin, yStar, distSqr)
106 {}
107 
108 
109 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
110 
111 // Update this with w2 if w2 nearer to pt.
112 template<class TrackingData>
113 inline bool wallPointYPlus::updateCell
114 (
115  const polyMesh& mesh,
116  const label thisCellI,
117  const label neighbourFaceI,
118  const wallPointYPlus& neighbourWallInfo,
119  const scalar tol,
120  TrackingData& td
121 )
122 {
123  const vectorField& cellCentres = mesh.primitiveMesh::cellCentres();
124 
125  return update
126  (
127  cellCentres[thisCellI],
128  neighbourWallInfo,
129  tol,
130  td
131  );
132 }
133 
134 
135 // Update this with w2 if w2 nearer to pt.
136 template<class TrackingData>
137 inline bool wallPointYPlus::updateFace
138 (
139  const polyMesh& mesh,
140  const label thisFaceI,
141  const label neighbourCellI,
142  const wallPointYPlus& neighbourWallInfo,
143  const scalar tol,
144  TrackingData& td
145 )
146 {
147  const vectorField& faceCentres = mesh.faceCentres();
148 
149  return update
150  (
151  faceCentres[thisFaceI],
152  neighbourWallInfo,
153  tol,
154  td
155  );
156 }
157 
158 
159 // Update this with w2 if w2 nearer to pt.
160 template<class TrackingData>
161 inline bool wallPointYPlus::updateFace
162 (
163  const polyMesh& mesh,
164  const label thisFaceI,
165  const wallPointYPlus& neighbourWallInfo,
166  const scalar tol,
167  TrackingData& td
168 )
169 {
170  const vectorField& faceCentres = mesh.faceCentres();
171 
172  return update
173  (
174  faceCentres[thisFaceI],
175  neighbourWallInfo,
176  tol,
177  td
178  );
179 }
180 
181 
182 // ************************************************************************* //
183 
184 } // End namespace Foam
185 
186 // ************************************************************************* //
Foam::wallPointYPlus::update
bool update(const point &, const wallPointYPlus &w2, const scalar tol, TrackingData &td)
Evaluate distance to point. Update distSqr, origin from whomever.
Definition: wallPointYPlusI.H:36
Foam::wallPointYPlus::wallPointYPlus
wallPointYPlus()
Construct null.
Definition: wallPointYPlusI.H:88
Foam::wallPointData::data
const Type & data() const
Definition: wallPointDataI.H:103
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
Foam::diff
scalar diff(const triad &A, const triad &B)
Return a quantity of the difference between two triads.
Definition: triad.C:407
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::wallPointYPlus::updateFace
bool updateFace(const polyMesh &mesh, const label thisFaceI, const label neighbourCellI, const wallPointYPlus &neighbourWallInfo, const scalar tol, TrackingData &td)
Influence of neighbouring cell.
Definition: wallPointYPlusI.H:138
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:18
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::wallPointYPlus
Holds information (coordinate and yStar) regarding nearest wall point.
Definition: wallPointYPlus.H:58
Foam::Vector< scalar >
Foam::sqrt
dimensionedScalar sqrt(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:142
Foam::primitiveMesh::faceCentres
const vectorField & faceCentres() const
Definition: primitiveMeshFaceCentresAndAreas.C:130
Foam::yPlus
This function object evaluates and outputs turbulence y+ for turbulence models. The field is stored o...
Definition: yPlus.H:110
Foam::wallPointData
Holds information (coordinate and normal) regarding nearest wall point.
Definition: wallPointData.H:48
Foam::wallPointYPlus::updateCell
bool updateCell(const polyMesh &mesh, const label thisCellI, const label neighbourFaceI, const wallPointYPlus &neighbourWallInfo, const scalar tol, TrackingData &td)
Influence of neighbouring face.
Definition: wallPointYPlusI.H:114
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:52
Foam::magSqr
dimensioned< scalar > magSqr(const dimensioned< Type > &)