Loading...
Searching...
No Matches
atmEpsilonWallFunctionFvPatchScalarField.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::atmEpsilonWallFunctionFvPatchScalarField
29
30Group
31 grpAtmWallFunctions
32
33Description
34 This boundary condition provides a wall constraint on the turbulent kinetic
35 energy dissipation rate (i.e. \c epsilon) and the turbulent kinetic energy
36 production contribution (i.e. \c G) for atmospheric boundary layer
37 modelling.
38
39 References:
40 \verbatim
41 Theoretical expressions (tags:PGVB, RH):
42 Parente, A., Gorlé, C., Van Beeck, J., & Benocci, C. (2011).
43 Improved k–ε model and wall function formulation
44 for the RANS simulation of ABL flows.
45 J. of wind engineering and industrial aerodynamics, 99(4), 267-278.
46 DOI:10.1016/j.jweia.2010.12.017
47
48 Richards, P. J., & Hoxey, R. P. (1993).
49 Appropriate boundary conditions for computational wind
50 engineering models using the k-ε turbulence model.
51 In Computational Wind Engineering 1 (pp. 145-153).
52 DOI:10.1016/B978-0-444-81688-7.50018-8
53 \endverbatim
54
55 Required fields:
56 \verbatim
57 epsilon | Turbulent kinetic energy dissipation rate [m2/s3]
58 \endverbatim
59
60Usage
61 Example of the boundary condition specification:
62 \verbatim
63 <patchName>
64 {
65 // Mandatory entries
66 type atmEpsilonWallFunction;
67 z0 <PatchFunction1<scalar>>;
68
69 // Inherited entries
70 ...
71 }
72 \endverbatim
73
74 where the entries mean:
75 \table
76 Property | Description | Type | Reqd | Deflt
77 type | Type name: atmEpsilonWallFunction | word | yes | -
78 z0 | Surface roughness length [m] | PatchFunction1<scalar> | yes | -
79 \endtable
80
81 The inherited entries are elaborated in:
82 - \link epsilonWallFunctionFvPatchScalarField.H \endlink
83 - \link PatchFunction1 \endlink
84
85SourceFiles
86 atmEpsilonWallFunctionFvPatchScalarField.C
87
88\*---------------------------------------------------------------------------*/
89
90#ifndef atmEpsilonWallFunctionFvPatchScalarField_H
91#define atmEpsilonWallFunctionFvPatchScalarField_H
92
94#include "PatchFunction1.H"
95
96// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
97
98namespace Foam
99{
100
101/*---------------------------------------------------------------------------*\
102 Class atmEpsilonWallFunctionFvPatchScalarField Declaration
103\*---------------------------------------------------------------------------*/
104
106:
108{
109protected:
110
111 // Protected Data
112
113 //- Surface roughness length field [m]
114 autoPtr<PatchFunction1<scalar>> z0_;
115
116
117 // Protected Member Functions
119 //- Calculate the epsilon and G
120 virtual void calculate
121 (
123 const List<scalar>& cornerWeights,
124 const fvPatch& patch,
125 scalarField& G,
127 );
128
129 //- Write local wall function variables
130 void writeLocalEntries(Ostream&) const;
131
132
133public:
134
135 //- Runtime type information
136 TypeName("atmEpsilonWallFunction");
137
138
139 // Constructors
140
141 //- Construct from patch and internal field
143 (
144 const fvPatch&,
146 );
147
148 //- Construct from patch, internal field and dictionary
150 (
151 const fvPatch&,
153 const dictionary&
154 );
155
156 //- Construct by mapping given
157 //- atmEpsilonWallFunctionFvPatchScalarField
158 //- onto a new patch
160 (
162 const fvPatch&,
164 const fvPatchFieldMapper&
165 );
166
167 //- Construct as copy
169 (
171 );
172
173 //- Construct as copy setting internal field reference
175 (
178 );
179
180 //- Return a clone
181 virtual tmp<fvPatchField<scalar>> clone() const
182 {
183 return fvPatchField<scalar>::Clone(*this);
184 }
185
186 //- Clone with an internal field reference
188 (
190 ) const
191 {
192 return fvPatchField<scalar>::Clone(*this, iF);
193 }
194
195
196 //- Destructor
198
199
200 // Member Functions
201
202 // Mapping
203
204 //- Map (and resize as needed) from self given a mapping object
205 virtual void autoMap(const fvPatchFieldMapper&);
206
207 //- Reverse map the given fvPatchField onto this fvPatchField
208 virtual void rmap
209 (
210 const fvPatchScalarField&,
211 const labelList&
212 );
213
215 // I-O
216
217 //- Write
218 virtual void write(Ostream&) const;
219};
220
221
222// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
223
224} // End namespace Foam
225
226// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
227
228#endif
229
230// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition List.H:72
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
This boundary condition provides a wall constraint on the turbulent kinetic energy dissipation rate (...
virtual ~atmEpsilonWallFunctionFvPatchScalarField()=default
Destructor.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
autoPtr< PatchFunction1< scalar > > z0_
Surface roughness length field [m].
virtual tmp< fvPatchField< scalar > > clone(const DimensionedField< scalar, volMesh > &iF) const
Clone with an internal field reference.
virtual tmp< fvPatchField< scalar > > clone() const
Return a clone.
void writeLocalEntries(Ostream &) const
Write local wall function variables.
TypeName("atmEpsilonWallFunction")
Runtime type information.
atmEpsilonWallFunctionFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &)
Construct from patch and internal field.
virtual void rmap(const fvPatchScalarField &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
virtual void calculate(const turbulenceModel &turbulence, const List< scalar > &cornerWeights, const fvPatch &patch, scalarField &G, scalarField &epsilon)
Calculate the epsilon and G.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
This boundary condition provides wall functions for the turbulent kinetic energy dissipation rate (i....
epsilonWallFunctionFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &)
Construct from patch and internal field.
scalarField & G(bool init=false)
Return non-const access to the master's G field.
scalarField & epsilon(bool init=false)
Return non-const access to the master's epsilon field.
const fvPatch & patch() const noexcept
Return the patch.
A FieldMapper for finite-volume patch fields.
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition fvPatch.H:71
A class for managing temporary objects.
Definition tmp.H:75
Abstract base class for turbulence models (RAS, LES and laminar).
Namespace for OpenFOAM.
List< label > labelList
A List of labels.
Definition List.H:62
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
fvPatchField< scalar > fvPatchScalarField
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68