/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-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::nutUBlendedWallFunctionFvPatchScalarField Group grpWallFunctions Description This boundary condition provides a wall function for the turbulent viscosity (i.e. \c nut) based on velocity (i.e. \c U) using a binomial-function wall-function blending method between the viscous and inertial sublayer predictions of \c nut for low- and high-Reynolds number applications. \f[ u_\tau = (u_{\tau,vis}^n + u_{\tau,log}^n)^{1/n} \f] where \vartable u_\tau | Friction velocity u_{\tau,vis} | Friction velocity in the viscous sublayer u_{\tau,log} | Friction velocity in the inertial sublayer \endvartable Reference: \verbatim See the section that describes 'automatic wall treatment': Menter, F., Ferreira, J. C., Esch, T., Konno, B. (2003). The SST turbulence model with improved wall treatment for heat transfer predictions in gas turbines. In Proceedings of the International Gas Turbine Congress. November, 2003. Tokyo, Japan. pp. 2-7. \endverbatim Usage Example of the boundary condition specification: \verbatim { // Mandatory entries type nutUBlendedWallFunction; // Optional entries n 4.0; // Inherited entries ... } \endverbatim where the entries mean: \table Property | Description | Type | Reqd | Deflt type | Type name: nutUBlendedWallFunction | word | yes | - n | Blending factor | scalar | no | 4.0 \endtable The inherited entries are elaborated in: - \link nutWallFunctionFvPatchScalarField.H \endlink Note - The full 'automatic wall treatment' description also requires use of the \link omegaWallFunctionFvPatchScalarField.H \endlink with the \c blending option \c binomial or with the deprecated \c blended flag set to \c on. - Suffers from non-exact restart since \c correctNut() (called through \c turbulence->validate) returns a slightly different value every time it is called. See \link nutUSpaldingWallFunctionFvPatchScalarField.C \endlink. SourceFiles nutUBlendedWallFunctionFvPatchScalarField.C \*---------------------------------------------------------------------------*/ #ifndef nutUBlendedWallFunctionFvPatchScalarField_H #define nutUBlendedWallFunctionFvPatchScalarField_H #include "nutWallFunctionFvPatchScalarField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class nutUBlendedWallFunctionFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class nutUBlendedWallFunctionFvPatchScalarField : public nutWallFunctionFvPatchScalarField { protected: // Protected Data //- Model coefficient; default = 4 scalar n_; // Protected Member Functions //- Calculate the turbulent viscosity virtual tmp calcNut() const; //- Calculate the friction velocity tmp calcUTau(const scalarField& magGradU) const; //- Write local wall function variables void writeLocalEntries(Ostream&) const; public: //- Runtime type information TypeName("nutUBlendedWallFunction"); // Constructors //- Construct from patch and internal field nutUBlendedWallFunctionFvPatchScalarField ( const fvPatch&, const DimensionedField& ); //- Construct from patch, internal field and dictionary nutUBlendedWallFunctionFvPatchScalarField ( const fvPatch&, const DimensionedField&, const dictionary& ); //- Construct by mapping given //- nutUBlendedWallFunctionFvPatchScalarField //- onto a new patch nutUBlendedWallFunctionFvPatchScalarField ( const nutUBlendedWallFunctionFvPatchScalarField&, const fvPatch&, const DimensionedField&, const fvPatchFieldMapper& ); //- Construct as copy nutUBlendedWallFunctionFvPatchScalarField ( const nutUBlendedWallFunctionFvPatchScalarField& ); //- Construct as copy setting internal field reference nutUBlendedWallFunctionFvPatchScalarField ( const nutUBlendedWallFunctionFvPatchScalarField&, const DimensionedField& ); //- Return a clone virtual tmp> clone() const { return fvPatchField::Clone(*this); } //- Clone with an internal field reference virtual tmp> clone ( const DimensionedField& iF ) const { return fvPatchField::Clone(*this, iF); } // Member Functions // Evaluation //- Calculate and return the yPlus at the boundary virtual tmp yPlus() const; // I-O //- Write virtual void write(Ostream& os) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //