Program Listing for File EddyViscosity.H

Return to documentation for file (eddyViscosities/EddyViscosity/EddyViscosity.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::EddyViscosity

@brief
    Base abstract class for 1D turbulence models based on eddy viscosity.

    Meant to be used with ODE based wall models that need the distribution
    of eddy viscosity on a wall-normal 1D mesh associated with each face.

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

SourceFiles
    LawOfTheWall.C

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

#ifndef EddyViscosity_H
#define EddyViscosity_H

#include "refCount.H"
#include "Field.H"
#include "SingleCellSampler.H"

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

namespace Foam
{

/*---------------------------------------------------------------------------*\
                      Class EddyViscosity Declaration
\*---------------------------------------------------------------------------*/

class EddyViscosity
{
protected:

    //- Dictionary holding the model constants
    dictionary constDict_;

public:

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
    TypeName("EddyViscosity");
#endif

    // Constructors

        EddyViscosity(const dictionary & dict)
        :
        constDict_(dict)
        {}

        EddyViscosity
        (
            const word& modelName,
            const dictionary & dict
        )
        :
        constDict_(dict)
        {}

        EddyViscosity() = default;

        //- Copy constructor
        EddyViscosity(const EddyViscosity & orig) = default;

        //- Assignemnt
        EddyViscosity & operator=(const EddyViscosity &) = default;

        //- Clone
        virtual autoPtr<EddyViscosity> clone() const = 0;

    // Destructor
        virtual ~EddyViscosity() {}


    // Selectors
        static autoPtr<EddyViscosity> New
        (
            const dictionary & dict
        );

        static autoPtr<EddyViscosity> New
        (
            const word & modelName,
            const dictionary & dict
        );

    // Member Functions

        //- Add necessary sampled fields to the sampler
        virtual void addFieldsToSampler(Sampler & sampler) const
        {}

        //- Print info
        virtual void printCoeffs() const = 0;

        //- Return the value of nut
        virtual scalarList
        value
        (
            const SingleCellSampler & sampler,
            const label index,
            const scalarList & y,
            const scalar uTau,
            const scalar nu
        ) const = 0;

        //- Write information about the law to stream
        virtual void write(Ostream & os) const;

        //- Get the dictionary with the constants
        dictionary constDict() const
        {
            return constDict_;
        }

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
     // RTS tables

        // RTS table "Dictionary"
        declareRunTimeSelectionTable
        (
            autoPtr,
            EddyViscosity,
            Dictionary,
            (
                const dictionary & dict
            ),
            (dict)
        );

        // RTS table "TypeAndDictionary"
        declareRunTimeSelectionTable
        (
            autoPtr,
            EddyViscosity,
            TypeAndDictionary,
            (
                const word & modelName,
                const dictionary & dict
            ),
            (modelName, dict)
        );
#endif

};


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

} // End namespace Foam

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

#endif