Skip to content
Snippets Groups Projects
TurbulenceModel.C 3.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*---------------------------------------------------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     |
    
    OpenFOAM bot's avatar
    OpenFOAM bot committed
        \\  /    A nd           | www.openfoam.com
    
    -------------------------------------------------------------------------------
    
    OpenFOAM bot's avatar
    OpenFOAM bot committed
        Copyright (C) 2013-2017 OpenFOAM Foundation
    
        Copyright (C) 2019 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 <http://www.gnu.org/licenses/>.
    
    \*---------------------------------------------------------------------------*/
    
    #include "TurbulenceModel.H"
    #include "volFields.H"
    #include "surfaceFields.H"
    
    // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
    
    template
    <
        class Alpha,
        class Rho,
        class BasicTurbulenceModel,
        class TransportModel
    >
    Foam::TurbulenceModel<Alpha, Rho, BasicTurbulenceModel, TransportModel>::
    TurbulenceModel
    (
        const alphaField& alpha,
        const rhoField& rho,
        const volVectorField& U,
    
        const surfaceScalarField& alphaRhoPhi,
    
        const surfaceScalarField& phi,
        const transportModel& transport,
        const word& propertiesName
    )
    :
        BasicTurbulenceModel
        (
            rho,
            U,
    
            phi,
            propertiesName
        ),
        alpha_(alpha),
        transport_(transport)
    {}
    
    
    // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
    
    template
    <
        class Alpha,
        class Rho,
        class BasicTurbulenceModel,
        class TransportModel
    >
    Foam::autoPtr
    <
        Foam::TurbulenceModel<Alpha, Rho, BasicTurbulenceModel, TransportModel>
    >
    Foam::TurbulenceModel<Alpha, Rho, BasicTurbulenceModel, TransportModel>::New
    (
        const alphaField& alpha,
        const rhoField& rho,
        const volVectorField& U,
    
        const surfaceScalarField& alphaRhoPhi,
    
        const surfaceScalarField& phi,
        const transportModel& transport,
        const word& propertiesName
    )
    {
    
                IOobject::groupName(propertiesName, alphaRhoPhi.group()),
                U.time().constant(),
                U.db(),
                IOobject::MUST_READ_IF_MODIFIED,
                IOobject::NO_WRITE,
                false // Do not register
            )
    
        const word modelType(dict.get<word>("simulationType"));
    
    
        Info<< "Selecting turbulence model type " << modelType << endl;
    
    
        auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
    
        if (!cstrIter.found())
    
                "simulationType",
                modelType,
                *dictionaryConstructorTablePtr_
    
            cstrIter()(alpha, rho, U, alphaRhoPhi, phi, transport, propertiesName)
    
        );
    }
    
    
    // ************************************************************************* //