From 6b074985ac8038817f16c249825f0f54e421dcb7 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 3 Aug 2020 16:28:21 +0200 Subject: [PATCH] ENH: improve separation of turbulence models macros (define vs make) --- .../DPMTurbulenceModels/DPMTurbulenceModels.C | 2 +- ...pressibleTwoPhaseMixtureTurbulenceModels.C | 4 +- .../VoFphaseCompressibleTurbulenceModels.C | 18 ++++++- .../compressibleTurbulenceModels.C | 16 ++++++- .../CompressibleMultiPhaseTurbulenceModels.C | 28 +++++++++++ .../phaseCompressibleTurbulenceModels.C | 23 ++++++++- .../makeTurbulenceModel.H | 48 +++++++++---------- .../turbulentFluidThermoModels.C | 10 ++++ .../turbulentTransportModels.C | 9 ++++ .../turbulenceModels/makeTurbulenceModel.H | 46 ++++++++++++------ .../multiphaseCompressibleTurbulenceModels.C | 17 ++++++- .../phaseCompressibleTurbulenceModels.C | 23 ++++++++- 12 files changed, 198 insertions(+), 46 deletions(-) diff --git a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMTurbulenceModels.C b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMTurbulenceModels.C index a18c9bbb1e6..73d8e56e657 100644 --- a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMTurbulenceModels.C +++ b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMTurbulenceModels.C @@ -36,7 +36,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( volScalarField, geometricOneField, diff --git a/applications/solvers/multiphase/MPPICInterFoam/CompressibleTwoPhaseMixtureTurbulenceModels/CompressibleTwoPhaseMixtureTurbulenceModels.C b/applications/solvers/multiphase/MPPICInterFoam/CompressibleTwoPhaseMixtureTurbulenceModels/CompressibleTwoPhaseMixtureTurbulenceModels.C index a92937efec3..3e35a21a933 100644 --- a/applications/solvers/multiphase/MPPICInterFoam/CompressibleTwoPhaseMixtureTurbulenceModels/CompressibleTwoPhaseMixtureTurbulenceModels.C +++ b/applications/solvers/multiphase/MPPICInterFoam/CompressibleTwoPhaseMixtureTurbulenceModels/CompressibleTwoPhaseMixtureTurbulenceModels.C @@ -33,7 +33,9 @@ License #include "turbulentTransportModel.H" #include "LESModel.H" -makeTurbulenceModelTypes +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defineTurbulenceModelTypes ( volScalarField, geometricOneField, diff --git a/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/VoFphaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/VoFphaseCompressibleTurbulenceModels.C index e83bf67b0c4..c38736bc7de 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/VoFphaseCompressibleTurbulenceModels.C +++ b/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/VoFphaseCompressibleTurbulenceModels.C @@ -39,7 +39,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( volScalarField, volScalarField, @@ -71,22 +71,38 @@ makeBaseTurbulenceModel makeTemplatedTurbulenceModel \ (fluidThermoPhaseCompressibleTurbulenceModel, LES, Type) + +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); #include "Maxwell.H" makeLaminarModel(Maxwell); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); #include "kOmegaSST.H" makeRASModel(kOmegaSST); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "Smagorinsky.H" makeLESModel(Smagorinsky); #include "kEqn.H" makeLESModel(kEqn); + // ************************************************************************* // diff --git a/applications/solvers/multiphase/driftFluxFoam/compressibleTurbulenceModels.C b/applications/solvers/multiphase/driftFluxFoam/compressibleTurbulenceModels.C index 40c126ba7c4..789e1783dfb 100644 --- a/applications/solvers/multiphase/driftFluxFoam/compressibleTurbulenceModels.C +++ b/applications/solvers/multiphase/driftFluxFoam/compressibleTurbulenceModels.C @@ -36,7 +36,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( geometricOneField, volScalarField, @@ -78,15 +78,29 @@ makeBaseTurbulenceModel Type \ ) +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); #include "buoyantKEpsilon.H" makeRASModel(buoyantKEpsilon); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "Smagorinsky.H" makeLESModel(Smagorinsky); diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/CompressibleMultiPhaseTurbulenceModels/CompressibleMultiPhaseTurbulenceModels.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/CompressibleMultiPhaseTurbulenceModels/CompressibleMultiPhaseTurbulenceModels.C index 9f85637bdc9..5df5277cf12 100644 --- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/CompressibleMultiPhaseTurbulenceModels/CompressibleMultiPhaseTurbulenceModels.C +++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/CompressibleMultiPhaseTurbulenceModels/CompressibleMultiPhaseTurbulenceModels.C @@ -37,6 +37,18 @@ License #include "RASModel.H" #include "LESModel.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defineTurbulenceModelTypes +( + geometricOneField, + volScalarField, + compressibleTurbulenceModel, + CompressibleTurbulenceModel, + ThermalDiffusivity, + multiphaseSystem +); + makeBaseTurbulenceModel ( geometricOneField, @@ -59,16 +71,32 @@ makeBaseTurbulenceModel makeTemplatedTurbulenceModel \ (multiphaseSystemCompressibleTurbulenceModel, LES, Type) + +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "Smagorinsky.H" makeLESModel(Smagorinsky); #include "kEqn.H" makeLESModel(kEqn); + // ************************************************************************* // diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C index a91c83e05ca..da76d422918 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C @@ -40,7 +40,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( volScalarField, volScalarField, @@ -72,9 +72,19 @@ makeBaseTurbulenceModel makeTemplatedTurbulenceModel \ (phaseModelPhaseCompressibleTurbulenceModel, LES, Type) + +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); @@ -93,6 +103,11 @@ makeRASModel(LaheyKEpsilon); #include "continuousGasKEpsilon.H" makeRASModel(continuousGasKEpsilon); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "Smagorinsky.H" makeLESModel(Smagorinsky); @@ -108,6 +123,11 @@ makeLESModel(NicenoKEqn); #include "continuousGasKEqn.H" makeLESModel(continuousGasKEqn); + +// -------------------------------------------------------------------------- // +// Additional models +// -------------------------------------------------------------------------- // + #include "kineticTheoryModel.H" makeTurbulenceModel (phaseModelPhaseCompressibleTurbulenceModel, RAS, kineticTheoryModel); @@ -116,4 +136,5 @@ makeTurbulenceModel makeTurbulenceModel (phaseModelPhaseCompressibleTurbulenceModel, RAS, phasePressureModel); + // ************************************************************************* // diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H index 637a7bb905f..b6c5ff5239e 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015-2016 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -29,48 +30,52 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeTurbulenceModelTypes( \ +//- Define turbulence model typedefs, with EddyDiffusivity +#define defineTurbulenceModelTypes( \ Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \ \ namespace Foam \ { \ + typedef TurbulenceModel \ + < \ + Alpha, \ + Rho, \ + baseModel, \ + Transport \ + > Transport##baseModel; \ + \ typedef TDModel<BaseModel<Transport>> \ Transport##BaseModel; \ + \ typedef laminarModel<Transport##BaseModel> \ laminar##Transport##BaseModel; \ + \ typedef RASModel<EddyDiffusivity<Transport##BaseModel>> \ RAS##Transport##BaseModel; \ + \ typedef LESModel<EddyDiffusivity<Transport##BaseModel>> \ LES##Transport##BaseModel; \ } +// Legacy name +#define makeTurbulenceModelTypes(a, b, c, d, e, f) \ + defineTurbulenceModelTypes(a, b, c, d, e, f) + #define makeBaseTurbulenceModel( \ Alpha, Rho, baseModel, BaseModel, TDModel, Transport) \ \ + /* Uses previously defined typedefs */ \ namespace Foam \ { \ - typedef TurbulenceModel \ - < \ - Alpha, \ - Rho, \ - baseModel, \ - Transport \ - > Transport##baseModel; \ - \ + /* Turbulence selection table */ \ defineTemplateRunTimeSelectionTable \ ( \ Transport##baseModel, \ dictionary \ ); \ \ - typedef TDModel<BaseModel<Transport>> \ - Transport##BaseModel; \ - \ - \ - typedef laminarModel<Transport##BaseModel> \ - laminar##Transport##BaseModel; \ - \ + /* Laminar models */ \ defineNamedTemplateTypeNameAndDebug(laminar##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ @@ -83,10 +88,7 @@ License dictionary \ ); \ \ - \ - typedef RASModel<EddyDiffusivity<Transport##BaseModel>> \ - RAS##Transport##BaseModel; \ - \ + /* RAS models */ \ defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ @@ -100,9 +102,7 @@ License ); \ \ \ - typedef LESModel<EddyDiffusivity<Transport##BaseModel>> \ - LES##Transport##BaseModel; \ - \ + /* LES model types */ \ defineNamedTemplateTypeNameAndDebug(LES##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ @@ -139,7 +139,7 @@ License #define makeTemplatedTurbulenceModel(BaseModel, SType, Type) \ - typedef Foam::SType##Models::Type<Foam::EddyDiffusivity<Foam::BaseModel>> \ + typedef Foam::SType##Models::Type<Foam::EddyDiffusivity<Foam::BaseModel>> \ Type##SType##BaseModel; \ defineNamedTemplateTypeNameAndDebug(Type##SType##BaseModel, 0); \ \ diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C index 9893dd00fe4..7cb0dee4b59 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C @@ -29,6 +29,16 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +defineTurbulenceModelTypes +( + geometricOneField, + volScalarField, + compressibleTurbulenceModel, + CompressibleTurbulenceModel, + ThermalDiffusivity, + fluidThermo +); + makeBaseTurbulenceModel ( geometricOneField, diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C index 63b525b0986..22c7fa5d9c3 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C @@ -29,6 +29,15 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +defineTurbulenceModelTypes +( + geometricOneField, + geometricOneField, + incompressibleTurbulenceModel, + IncompressibleTurbulenceModel, + transportModel +); + makeBaseTurbulenceModel ( geometricOneField, diff --git a/src/TurbulenceModels/turbulenceModels/makeTurbulenceModel.H b/src/TurbulenceModels/turbulenceModels/makeTurbulenceModel.H index 882f51974a5..6532a40e9f4 100644 --- a/src/TurbulenceModels/turbulenceModels/makeTurbulenceModel.H +++ b/src/TurbulenceModels/turbulenceModels/makeTurbulenceModel.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2013-2016 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -25,37 +26,52 @@ License \*---------------------------------------------------------------------------*/ -#define makeTurbulenceModelTypes(Alpha, Rho, baseModel, BaseModel, Transport) \ +//- Define turbulence model typedefs, with EddyDiffusivity +#define defineTurbulenceModelTypes( \ + Alpha, Rho, baseModel, BaseModel, Transport) \ \ namespace Foam \ { \ - typedef BaseModel<Transport> Transport##BaseModel; \ + typedef TurbulenceModel \ + < \ + Alpha, \ + Rho, \ + baseModel, \ + Transport \ + > Transport##baseModel; \ + \ + typedef BaseModel<Transport> \ + Transport##BaseModel; \ + \ typedef laminarModel<Transport##BaseModel> \ laminar##Transport##BaseModel; \ - typedef RASModel<Transport##BaseModel> RAS##Transport##BaseModel; \ - typedef LESModel<Transport##BaseModel> LES##Transport##BaseModel; \ + \ + typedef RASModel<Transport##BaseModel> \ + RAS##Transport##BaseModel; \ + \ + typedef LESModel<Transport##BaseModel> \ + LES##Transport##BaseModel; \ } +// Legacy name +#define makeTurbulenceModelTypes(a, b, c, d, e) \ + defineTurbulenceModelTypes(a, b, c, d, e) + #define makeBaseTurbulenceModel(Alpha, Rho, baseModel, BaseModel, Transport) \ + /* Turbulence typedefs */ \ + defineTurbulenceModelTypes(Alpha, Rho, baseModel, BaseModel, Transport) \ \ namespace Foam \ { \ - typedef TurbulenceModel \ - < \ - Alpha, \ - Rho, \ - baseModel, \ - Transport \ - > Transport##baseModel; \ - \ + /* Turbulence selection table */ \ defineTemplateRunTimeSelectionTable \ ( \ Transport##baseModel, \ dictionary \ ); \ \ - \ + /* Laminar models */ \ defineNamedTemplateTypeNameAndDebug(laminar##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ @@ -68,7 +84,7 @@ License dictionary \ ); \ \ - \ + /* RAS models */ \ defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ @@ -81,7 +97,7 @@ License dictionary \ ); \ \ - \ + /* LES models */ \ defineNamedTemplateTypeNameAndDebug(LES##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ diff --git a/src/phaseSystemModels/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C b/src/phaseSystemModels/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C index dc58d73c768..ef54664e4a4 100644 --- a/src/phaseSystemModels/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C +++ b/src/phaseSystemModels/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C @@ -35,7 +35,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( volScalarField, volScalarField, @@ -67,15 +67,30 @@ makeBaseTurbulenceModel makeTemplatedTurbulenceModel \ (phaseModelPhaseCompressibleTurbulenceModel, LES, Type) + +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); #include "kOmegaSST.H" makeRASModel(kOmegaSST); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "Smagorinsky.H" makeLESModel(Smagorinsky); diff --git a/src/phaseSystemModels/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/src/phaseSystemModels/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C index f661ffd7622..f6655c18cee 100644 --- a/src/phaseSystemModels/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C +++ b/src/phaseSystemModels/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C @@ -35,7 +35,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeTurbulenceModelTypes +defineTurbulenceModelTypes ( volScalarField, volScalarField, @@ -67,9 +67,19 @@ makeBaseTurbulenceModel makeTemplatedTurbulenceModel \ (phaseModelPhaseCompressibleTurbulenceModel, LES, Type) + +// -------------------------------------------------------------------------- // +// Laminar models +// -------------------------------------------------------------------------- // + #include "Stokes.H" makeLaminarModel(Stokes); + +// -------------------------------------------------------------------------- // +// RAS models +// -------------------------------------------------------------------------- // + #include "kEpsilon.H" makeRASModel(kEpsilon); @@ -94,6 +104,11 @@ makeLESModel(Smagorinsky); #include "kEqn.H" makeLESModel(kEqn); + +// -------------------------------------------------------------------------- // +// LES models +// -------------------------------------------------------------------------- // + #include "SmagorinskyZhang.H" makeLESModel(SmagorinskyZhang); @@ -103,6 +118,11 @@ makeLESModel(NicenoKEqn); #include "continuousGasKEqn.H" makeLESModel(continuousGasKEqn); + +// -------------------------------------------------------------------------- // +// Additional models +// -------------------------------------------------------------------------- // + #include "kineticTheoryModel.H" makeTurbulenceModel (phaseModelPhaseCompressibleTurbulenceModel, RAS, kineticTheoryModel); @@ -111,4 +131,5 @@ makeTurbulenceModel makeTurbulenceModel (phaseModelPhaseCompressibleTurbulenceModel, RAS, phasePressureModel); + // ************************************************************************* // -- GitLab