/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
Class
Foam::wallFunctionBlenders
Description
The class \c wallFunctionBlenders is a base class that
hosts common entries for various derived wall-function boundary
conditions to be used in low- and high-Reynolds number applications.
Reference:
\verbatim
Default model coefficients (tag:VM):
Versteeg, H. K., & Malalasekera, W. (2011).
An introduction to computational fluid dynamics: The finite
volume method. Harlow: Pearson Education.
Subsection "3.5.2 k-epsilon model".
Binomial blending of the viscous and inertial sublayers (tag:ME):
Menter, F., & Esch, T. (2001).
Elements of industrial heat transfer prediction.
In Proceedings of the 16th Brazilian Congress of Mechanical
Engineering (COBEM), November 2001. vol. 20, p. 117-127.
Exponential/Max blending of the viscous and inertial sublayers (tag:PH):
Popovac, M., & Hanjalić, K. (2007).
Compound wall treatment for RANS computation of complex
turbulent flows and heat transfer.
Flow, turbulence and combustion, 78(2), 177-202.
DOI:10.1007/s10494-006-9067-x
Tanh blending of the viscous and inertial sublayers (tag:KAS):
Knopp, T., Alrutz, T., & Schwamborn, D. (2006).
A grid and flow adaptive wall-function method for RANS
turbulence modelling.
Journal of Computational Physics, 220(1), 19-40.
DOI:10.1016/j.jcp.2006.05.003
\endverbatim
Usage
Example of the boundary condition specification:
\verbatim
{
// Top-level entries
...
// Optional entries
blending stepwise;
n 4.0;
// Inherited entries
...
}
\endverbatim
where the entries mean:
\table
Property | Description | Type | Reqd | Deflt
blending | Viscous/inertial sublayer blending | word | no | stepwise
n | Binomial blending exponent | scalar | no | 2.0
\endtable
Options for the \c blending entry:
\verbatim
stepwise | Stepwise switch (discontinuous)
max | Maximum value switch (discontinuous)
binomial | Binomial blending (smooth)
exponential | Exponential blending (smooth)
tanh | Tanh blending (smooth)
\endverbatim
wherein predictions of a given quantity (e.g. \c nut) for viscous and
inertial sublayers are blended according to the following expressions:
- \c stepwise (default):
\f[
\phi = \phi_{log} \qquad if \quad y^+ > y^+_{intersection}
\f]
\f[
\phi = \phi_{vis} \qquad if \quad y^+ <= y^+_{intersection}
\f]
where
\vartable
\phi_{vis} | \f$\phi\f$ prediction in viscous sublayer
\phi_{log} | \f$\phi\f$ prediction in inertial sublayer
y^+ | estimated wall-normal height of cell centre in wall units
y^+_{intersection} | estimated \f$y^+\f$ where sublayers intersect
\endvartable
- \c max (PH:Eq. 27):
\f[
\nu_t = max({\nu_t}_{vis}, {\nu_t}_{log})
\f]
- \c binomial (ME:Eqs. 15-16):
\f[
\phi = ((\phi_{vis})^n + (\phi_{log})^n)^{1/n}
\f]
where
\vartable
n | Binomial blending exponent
\endvartable
- \c exponential (PH:Eq. 32):
\f[
\phi = \phi_{vis} \exp[-\Gamma] + \phi_{log} \exp[-1/\Gamma]
\f]
where (PH:Eq. 31)
\vartable
\Gamma | Blending expression
\Gamma | \f$0.01 (y^+)^4 / (1.0 + 5.0 y^+)\f$
\endvartable
- \c tanh (KAS:Eqs. 33-34):
\f[
\phi = \eta \phi_{b1} + (1 - \eta)\phi_{b2}
\f]
where
\vartable
\eta | \f$tanh((y^+/10)^4)\f$
\phi_{b1} | \f$\phi_{vis} + \phi_{log}\f$
\phi_{b2} | \f$(\phi_{vis}^{1.2} + \phi_{log}^1.2)^{1/1.2}\f$
\endvartable
\c G predictions for viscous and inertial sublayers are blended
in a stepwise manner, and \c G below \f$y^+_{intersection}\f$
(i.e. in the viscous sublayer) is presumed to be zero.
Blending treatments are enabled for the following wall functions:
- \link epsilonWallFunctionFvPatchScalarField.H \endlink
- \link omegaWallFunctionFvPatchScalarField.H \endlink
- \link nutkWallFunctionFvPatchScalarField.H \endlink
- \link nutUWallFunctionFvPatchScalarField.H \endlink
SourceFiles
wallFunctionBlenders.C
\*---------------------------------------------------------------------------*/
#ifndef Foam_wallFunctionBlenders_H
#define Foam_wallFunctionBlenders_H
#include "scalarFwd.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward Declarations
class dictionary;
class Ostream;
template class Enum;
/*---------------------------------------------------------------------------*\
Class wallFunctionBlenders Declaration
\*---------------------------------------------------------------------------*/
class wallFunctionBlenders
{
protected:
// Protected Enumerations
//- Options for the blending treatment of viscous and inertial sublayers
enum blenderType
{
STEPWISE, //!< "Stepwise switch (discontinuous)"
MAX, //!< "Maximum value switch (discontinuous)"
BINOMIAL, //!< "Binomial blending (smooth)"
EXPONENTIAL, //!< "Exponential blending (smooth)"
TANH //!< "Tanh blending (smooth)"
};
//- Names for blenderType
static const Enum blenderTypeNames;
// Protected Data
//- Blending treatment
enum blenderType blender_;
//- Binomial blending exponent being used when
//- blenderType is blenderType::BINOMIAL
scalar n_;
public:
// Constructors
//- Default construct with default coefficients
wallFunctionBlenders();
//- Construct from dictionary and default parameters
wallFunctionBlenders
(
const dictionary& dict,
const blenderType blender,
const scalar n
);
// Member Functions
// I-O
//- Write wall-function blending data as dictionary entries
void writeEntries(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //