From 7f8b070c6bbdff7a127e45fc9dfe2cc1f41a722f Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 4 Oct 2012 17:43:24 +0100 Subject: [PATCH] ENH: LESdelta: split LESdelta runtime-selection into generic ones and compressible/incompressible --- .../LES/LESdeltas/LESdelta/LESdelta.C | 51 +++++++- .../LES/LESdeltas/LESdelta/LESdelta.H | 12 +- .../compressible/LES/LESModel/LESModel.H | 4 +- .../compressible/LES/Make/files | 1 + .../compressibleLESdelta.C | 66 +++++++++++ .../compressibleLESdelta.H | 109 ++++++++++++++++++ .../LES/vanDriestDelta/vanDriestDelta.H | 6 +- .../incompressible/LES/LESModel/LESModel.H | 4 +- .../incompressible/LES/Make/files | 1 + .../IDDESDelta/IDDESDelta.H | 6 +- .../SpalartAllmarasIDDES.H | 4 +- .../incompressibleLESdelta.C | 66 +++++++++++ .../incompressibleLESdelta.H | 109 ++++++++++++++++++ .../LES/vanDriestDelta/vanDriestDelta.H | 6 +- 14 files changed, 427 insertions(+), 18 deletions(-) create mode 100644 src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.C create mode 100644 src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.H create mode 100644 src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.C create mode 100644 src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.H diff --git a/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.C b/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.C index c329bcc692..5a8ff1c3fb 100644 --- a/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.C +++ b/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,6 +67,8 @@ Foam::autoPtr Foam::LESdelta::New { const word deltaType(dict.lookup("delta")); + Info<< "Selecting LES delta type " << deltaType << endl; + dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(deltaType); @@ -86,4 +88,51 @@ Foam::autoPtr Foam::LESdelta::New } +Foam::autoPtr Foam::LESdelta::New +( + const word& name, + const fvMesh& mesh, + const dictionary& dict, + const dictionaryConstructorTable& additionalConstructors +) +{ + const word deltaType(dict.lookup("delta")); + + Info<< "Selecting LES delta type " << deltaType << endl; + + // First on additional ones + dictionaryConstructorTable::const_iterator cstrIter = + additionalConstructors.find(deltaType); + + if (cstrIter != additionalConstructors.end()) + { + return autoPtr(cstrIter()(name, mesh, dict)); + } + else + { + dictionaryConstructorTable::const_iterator cstrIter = + dictionaryConstructorTablePtr_->find(deltaType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "LESdelta::New(const fvMesh&, const dictionary&)" + ) << "Unknown LESdelta type " + << deltaType << nl << nl + << "Valid LESdelta types are :" << endl + << additionalConstructors.sortedToc() + << " and " + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + return autoPtr(); + } + else + { + return autoPtr(cstrIter()(name, mesh, dict)); + } + } +} + + // ************************************************************************* // diff --git a/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.H b/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.H index 9cd15b507b..c84ae74c3b 100644 --- a/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.H +++ b/src/turbulenceModels/LES/LESdeltas/LESdelta/LESdelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,7 +29,6 @@ Description SourceFiles LESdelta.C - newDelta.C \*---------------------------------------------------------------------------*/ @@ -111,6 +110,15 @@ public: const dictionary& ); + //- Return a reference to the selected LES delta + static autoPtr New + ( + const word& name, + const fvMesh&, + const dictionary&, + const dictionaryConstructorTable& + ); + //- Destructor virtual ~LESdelta() diff --git a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H index f33a1681dc..b7d3c45c0c 100644 --- a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H +++ b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H @@ -51,7 +51,7 @@ SourceFiles #define compressibleLESModel_H #include "compressible/turbulenceModel/turbulenceModel.H" -#include "LESdelta.H" +#include "compressibleLESdelta.H" #include "fvm.H" #include "fvc.H" #include "fvMatrices.H" @@ -86,7 +86,7 @@ protected: dimensionedScalar kMin_; - autoPtr delta_; + autoPtr delta_; // Protected Member Functions diff --git a/src/turbulenceModels/compressible/LES/Make/files b/src/turbulenceModels/compressible/LES/Make/files index 1ed6bd6b4b..58e7485772 100644 --- a/src/turbulenceModels/compressible/LES/Make/files +++ b/src/turbulenceModels/compressible/LES/Make/files @@ -10,6 +10,7 @@ homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C DeardorffDiffStress/DeardorffDiffStress.C SpalartAllmaras/SpalartAllmaras.C +compressibleLESdelta/compressibleLESdelta.C vanDriestDelta/vanDriestDelta.C LIB = $(FOAM_LIBBIN)/libcompressibleLESModels diff --git a/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.C b/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.C new file mode 100644 index 0000000000..4b8fbbc44a --- /dev/null +++ b/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 . + +\*---------------------------------------------------------------------------*/ + +#include "compressibleLESdelta.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace compressible +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineRunTimeSelectionTable(LESdelta, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +LESdelta::LESdelta(const word& name, const fvMesh& mesh) +: + foamLESdelta(name, mesh) +{} + + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr LESdelta::New +( + const word& name, + const fvMesh& mesh, + const dictionary& dict +) +{ + return foamLESdelta::New(name, mesh, dict, *dictionaryConstructorTablePtr_); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace compressible +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.H b/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.H new file mode 100644 index 0000000000..56d1437cc2 --- /dev/null +++ b/src/turbulenceModels/compressible/LES/compressibleLESdelta/compressibleLESdelta.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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::compressible::LESdelta + +Description + Abstract base class for compressible LES deltas + +SourceFiles + compressibleLESdelta.C + +\*---------------------------------------------------------------------------*/ + +#ifndef compressibleLESdelta_H +#define compressibleLESdelta_H + +#include "LESdelta.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// To avoid macro problems typedef scoped class +typedef Foam::LESdelta foamLESdelta; + +namespace compressible +{ + +/*---------------------------------------------------------------------------*\ + Class LESdelta Declaration +\*---------------------------------------------------------------------------*/ + +class LESdelta +: + public foamLESdelta +{ + +public: + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + foamLESdelta, + dictionary, + ( + const word& name, + const fvMesh& mesh, + const dictionary& LESdeltaDict + ), + (name, mesh, LESdeltaDict) + ); + + // Constructors + + //- Construct from name and mesh + LESdelta(const word& name, const fvMesh& mesh); + + + // Selectors + + //- Return a reference to the selected LES delta + static autoPtr New + ( + const word& name, + const fvMesh& mesh, + const dictionary& dict + ); + + + //- Destructor + virtual ~LESdelta() + {} +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace compressible +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.H b/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.H index cc8158cb07..88e26c7554 100644 --- a/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.H +++ b/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,7 +35,7 @@ SourceFiles #ifndef vanDriestDelta_H #define vanDriestDelta_H -#include "LESdelta.H" +#include "compressibleLESdelta.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,7 +56,7 @@ class vanDriestDelta { // Private data - autoPtr geometricDelta_; + autoPtr geometricDelta_; scalar kappa_; scalar Aplus_; scalar Cdelta_; diff --git a/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H b/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H index 3a9af24df8..090644855f 100644 --- a/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H +++ b/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H @@ -51,7 +51,7 @@ SourceFiles #define incompressibleLESModel_H #include "incompressible/turbulenceModel/turbulenceModel.H" -#include "LESdelta.H" +#include "incompressibleLESdelta.H" #include "fvm.H" #include "fvc.H" #include "fvMatrices.H" @@ -86,7 +86,7 @@ protected: dimensionedScalar kMin_; - autoPtr delta_; + autoPtr delta_; // Protected Member Functions diff --git a/src/turbulenceModels/incompressible/LES/Make/files b/src/turbulenceModels/incompressible/LES/Make/files index c41aefe994..6d4e3cb4d7 100644 --- a/src/turbulenceModels/incompressible/LES/Make/files +++ b/src/turbulenceModels/incompressible/LES/Make/files @@ -1,3 +1,4 @@ +incompressibleLESdelta/incompressibleLESdelta.C vanDriestDelta/vanDriestDelta.C LESModel/LESModel.C diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H index 4c8302de7d..0274a192f9 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,7 +37,7 @@ SourceFiles #ifndef IDDESDeltaDelta_H #define IDDESDeltaDelta_H -#include "LESdelta.H" +#include "incompressibleLESdelta.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -54,7 +54,7 @@ class IDDESDelta { // Private data - autoPtr hmax_; + autoPtr hmax_; scalar deltaCoeff_; scalar cw_; diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H index fc31252782..c2565efb50 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H @@ -61,8 +61,8 @@ class SpalartAllmarasIDDES // Model constants - autoPtr hmax_; - autoPtr IDDESDelta_; + autoPtr hmax_; + autoPtr IDDESDelta_; dimensionedScalar fwStar_; dimensionedScalar cl_; dimensionedScalar ct_; diff --git a/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.C b/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.C new file mode 100644 index 0000000000..daa17b6406 --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 . + +\*---------------------------------------------------------------------------*/ + +#include "incompressibleLESdelta.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace incompressible +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineRunTimeSelectionTable(LESdelta, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +LESdelta::LESdelta(const word& name, const fvMesh& mesh) +: + foamLESdelta(name, mesh) +{} + + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr LESdelta::New +( + const word& name, + const fvMesh& mesh, + const dictionary& dict +) +{ + return foamLESdelta::New(name, mesh, dict, *dictionaryConstructorTablePtr_); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace incompressible +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.H b/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.H new file mode 100644 index 0000000000..ca1d5240f3 --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/incompressibleLESdelta/incompressibleLESdelta.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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::incompressible::LESdelta + +Description + Abstract base class for incompressible LES deltas + +SourceFiles + incompressibleLESdelta.C + +\*---------------------------------------------------------------------------*/ + +#ifndef incompressibleLESdelta_H +#define incompressibleLESdelta_H + +#include "LESdelta.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// To avoid macro problems typedef scoped class +typedef Foam::LESdelta foamLESdelta; + +namespace incompressible +{ + +/*---------------------------------------------------------------------------*\ + Class LESdelta Declaration +\*---------------------------------------------------------------------------*/ + +class LESdelta +: + public foamLESdelta +{ + +public: + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + foamLESdelta, + dictionary, + ( + const word& name, + const fvMesh& mesh, + const dictionary& LESdeltaDict + ), + (name, mesh, LESdeltaDict) + ); + + // Constructors + + //- Construct from name and mesh + LESdelta(const word& name, const fvMesh& mesh); + + + // Selectors + + //- Return a reference to the selected LES delta + static autoPtr New + ( + const word& name, + const fvMesh& mesh, + const dictionary& dict + ); + + + //- Destructor + virtual ~LESdelta() + {} +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace incompressible +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.H b/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.H index 2e465b8851..217f86e9de 100644 --- a/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.H +++ b/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,7 +35,7 @@ SourceFiles #ifndef vanDriestDelta_H #define vanDriestDelta_H -#include "LESdelta.H" +#include "incompressibleLESdelta.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,7 +56,7 @@ class vanDriestDelta { // Private data - autoPtr geometricDelta_; + autoPtr geometricDelta_; scalar kappa_; scalar Aplus_; scalar Cdelta_;