atmAlphatkWallFunctionFvPatchScalarField.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) 2020 ENERCON GmbH
9 Copyright (C) 2020-2022 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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
27Class
28 Foam::atmAlphatkWallFunctionFvPatchScalarField
29
30Group
31 grpAtmWallFunctions
32
33Description
34 This boundary condition provides a wall constraint on the kinematic
35 turbulent thermal conductivity (i.e. \c alphat) for atmospheric boundary
36 layer modelling. It assumes a logarithmic distribution of the potential
37 temperature within the first cell.
38
39 Required fields:
40 \verbatim
41 alphat | Kinematic turbulent thermal conductivity [m2/s]
42 \endverbatim
43
44Usage
45 Example of the boundary condition specification:
46 \verbatim
47 <patchName>
48 {
49 // Mandatory entries
50 type atmAlphatkWallFunction;
51 Pr <Function1<scalar>>;
52 Prt <PatchFunction1<scalar>>;
53 z0 <PatchFunction1<scalar>>;
54
55 // Optional entries
56 Cmu <scalar>;
57 kappa <scalar>;
58
59 // Inherited entries
60 ...
61 }
62 \endverbatim
63
64 where the entries mean:
65 \table
66 Property | Description | Type | Reqd | Deflt
67 type | Type name: atmAlphatkWallFunction | word | yes | -
68 Pr | Molecular Prandtl number | Function1<scalar> | yes | -
69 Prt | Turbulent Prandtl number | PatchFunction1<scalar> | yes | -
70 z0 | Surface roughness length [m] | PatchFunction1<scalar> | yes | -
71 Cmu | Empirical model constant | scalar | no | 0.09
72 kappa | von Kármán constant | scalar | no | 0.41
73 \endtable
74
75 The inherited entries are elaborated in:
76 - \link fixedValueFvPatchField.H \endlink
77 - \link Function1.H \endlink
78 - \link PatchFunction1.H \endlink
79
80SourceFiles
81 atmAlphatkWallFunctionFvPatchScalarField.C
82
83\*---------------------------------------------------------------------------*/
84
85#ifndef atmAlphatkWallFunctionFvPatchScalarField_H
86#define atmAlphatkWallFunctionFvPatchScalarField_H
87
89#include "Function1.H"
90#include "PatchFunction1.H"
91
92// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
93
94namespace Foam
95{
96
97class turbulenceModel;
98
99/*---------------------------------------------------------------------------*\
100 Class atmAlphatkWallFunctionFvPatchScalarField Declaration
101\*---------------------------------------------------------------------------*/
102
103class atmAlphatkWallFunctionFvPatchScalarField
104:
105 public fixedValueFvPatchScalarField
106{
107protected:
108
109 // Protected Data
110
111 //- Empirical model constant
112 const scalar Cmu_;
113
114 //- von Kármán constant
115 const scalar kappa_;
116
117 //- Molecular Prandtl number
118 autoPtr<Function1<scalar>> Pr_;
119
120 //- Turbulent Prandtl number field
121 autoPtr<PatchFunction1<scalar>> Prt_;
122
123 //- Surface roughness length [m]
124 autoPtr<PatchFunction1<scalar>> z0_;
125
126
127 //- Solution parameters
128
129 static scalar tolerance_;
130 static label maxIters_;
131
132
133 // Protected Member Functions
134
135 //- Check the type of the patch
136 virtual void checkType();
137
138 //- Write local wall function variables
139 void writeLocalEntries(Ostream&) const;
140
141
142public:
143
144 //- Runtime type information
145 TypeName("atmAlphatkWallFunction");
146
147
148 // Constructors
149
150 //- Construct from patch and internal field
152 (
153 const fvPatch&,
155 );
157 //- Construct from patch, internal field and dictionary
160 const fvPatch&,
163 );
164
165 //- Construct by mapping given
166 //- atmAlphatkWallFunctionFvPatchScalarField
167 //- onto a new patch
169 (
171 const fvPatch&,
173 const fvPatchFieldMapper&
174 );
175
176 //- Construct as copy
178 (
180 );
181
182 //- Construct and return a clone
183 virtual tmp<fvPatchScalarField> clone() const
184 {
188 );
189 }
190
191 //- Construct as copy setting internal field reference
193 (
196 );
197
198 //- Construct and return a clone setting internal field reference
200 (
202 ) const
203 {
205 (
207 );
208 }
209
210
211 // Member Functions
212
213 // Evaluation
214
215 //- Update the coefficients associated with the patch field
216 virtual void updateCoeffs();
217
218
219 // Mapping
220
221 //- Map (and resize as needed) from self given a mapping object
222 virtual void autoMap(const fvPatchFieldMapper&);
223
224 //- Reverse map the given fvPatchField onto this fvPatchField
225 virtual void rmap
226 (
227 const fvPatchScalarField&,
228 const labelList&
229 );
230
231
232 // I-O
233
234 //- Write
235 virtual void write(Ostream&) const;
236};
237
238
239// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
241} // End namespace Foam
242
243// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
244
245#endif
246
247// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
This boundary condition provides a wall constraint on the kinematic turbulent thermal conductivity (i...
TypeName("atmAlphatkWallFunction")
Runtime type information.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual tmp< fvPatchScalarField > clone(const DimensionedField< scalar, volMesh > &iF) const
Construct and return a clone setting internal field reference.
autoPtr< PatchFunction1< scalar > > z0_
Surface roughness length [m].
void writeLocalEntries(Ostream &) const
Write local wall function variables.
virtual tmp< fvPatchScalarField > clone() const
Construct and return a clone.
virtual void rmap(const fvPatchScalarField &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
autoPtr< Function1< scalar > > Pr_
Molecular Prandtl number.
autoPtr< PatchFunction1< scalar > > Prt_
Turbulent Prandtl number field.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
A FieldMapper for finite-volume patch fields.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
A class for managing temporary objects.
Definition: tmp.H:65
ThermalDiffusivity< CompressibleTurbulenceModel< fluidThermo > > turbulenceModel
Namespace for OpenFOAM.
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73