Program Listing for File KnownWallShearStressWallModelFvPatchScalarField.H

Return to documentation for file (wallModels/KnownWallShearStressWallModelFvPatchScalarField.H)

/*---------------------------------------------------------------------------* \
License
    This file is part of libWallModelledLES.

    libWallModelledLES 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.

    libWallModelledLES 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 libWallModelledLES.
    If not, see <http://www.gnu.org/licenses/>.

Class
    Foam::KnownWallShearStressWallModelFvPatchScalarField

@brief
    Wall model that uses the values of the magnitude of the mean wall shear
    stress known a priori, for example, from a RANS precursor or an analytical
    solution.

    Requires field tauWall with the values of the magnitude of the mean wall
    shear stress to be present. The model converts that prescribed stress into
    the wall eddy viscosity needed to realize the same stress with the current
    wall-normal velocity gradient.

    Usage
    \verbatim
    patchName
    {
        type                KnownWallShearStressWallModel;
        value               uniform 0;
        interpolationType   value; (default cell)
        sampler             value; (default Tree)
        lengthScale         value; (default CubeRootVol)
        hIsIndex            value; (default false)
    }
    \endverbatim

Contributors/Copyright:
    2016-2026 Timofey Mukha
    2017      Saleh Rezaeiravesh

SourceFiles
    KnownWallShearStressWallModelFvPatchScalarField.C

\*---------------------------------------------------------------------------*/

#ifndef KnownWallShearStressWallModelFvPatchScalarField_H
#define KnownWallShearStressWallModelFvPatchScalarField_H

#include "wallModelFvPatchScalarField.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

class SingleCellSampler;

/*---------------------------------------------------------------------------*\
        Class KnownWallShearStressWallModelPatchScalarField Declaration
\*---------------------------------------------------------------------------*/

class KnownWallShearStressWallModelFvPatchScalarField
:
    public wallModelFvPatchScalarField
{
protected:

    // Protected Member Functions
        //- Write model properties to stream
        virtual void writeLocalEntries(Ostream &) const;

        //- Calculate the turbulence viscosity at the wall
        virtual tmp<scalarField> calcNut() const;

        //- The sampler, for the wallGradU
        autoPtr<SingleCellSampler> sampler_;

public:

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
    //- Runtime type information
    TypeName("KnownWallShearStressWallModel");
#endif

    // Constructors

        //- Construct from patch and internal field
        KnownWallShearStressWallModelFvPatchScalarField
        (
            const fvPatch &,
            const DimensionedField<scalar, volMesh> &
        );

        //- Construct from patch, internal field and dictionary
        KnownWallShearStressWallModelFvPatchScalarField
        (
            const fvPatch &,
            const DimensionedField<scalar, volMesh> &,
            const dictionary &
        );

        //- Construct by mapping given KnownWallShearStressWallModelFvPatchScalarField
        //  onto a new patch
        KnownWallShearStressWallModelFvPatchScalarField
        (
            const KnownWallShearStressWallModelFvPatchScalarField &,
            const fvPatch &,
            const DimensionedField<scalar, volMesh> &,
            const fvPatchFieldMapper &
        );

        //- Construct as copy
        KnownWallShearStressWallModelFvPatchScalarField
        (
            const KnownWallShearStressWallModelFvPatchScalarField &
        );

        //- Construct as copy setting internal field reference
        KnownWallShearStressWallModelFvPatchScalarField
        (
            const KnownWallShearStressWallModelFvPatchScalarField &,
            const DimensionedField<scalar, volMesh> &
        );


    // Member functions

        SingleCellSampler & sampler()
        {
            return sampler_();
        }

        const SingleCellSampler & sampler() const
        {
            return sampler_();
        }

        virtual void updateCoeffs();

        //- Write
        virtual void write(Ostream& os) const;
};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


#endif