solvers/modules: turbulence -> momentumTransport

Momentum transport in the modular solvers is generalised and run-time
selectable, supporting laminar, generalised laminar or non-Newtonian as well LES
or RAS turbulence modelling so it is clearer to name the momentum transport
model instance 'momentumTransport' rather than 'turbulence'.
This commit is contained in:
Henry Weller
2022-12-07 14:45:49 +00:00
parent c397554043
commit a6456cdd73
19 changed files with 82 additions and 72 deletions

View File

@ -66,13 +66,13 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::kappaEff() const
*(
mixture_.thermo1().kappa()
+ mixture_.thermo1().rho()*mixture_.thermo1().Cp()
*momentumTransport_.turbulence1_->nut()
*momentumTransport_.momentumTransport1_->nut()
)
+ mixture_.alpha2()
*(
mixture_.thermo2().kappa()
+ mixture_.thermo2().rho()*mixture_.thermo2().Cp()
*momentumTransport_.turbulence2_->nut()
*momentumTransport_.momentumTransport2_->nut()
);
}
else
@ -82,13 +82,13 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::kappaEff() const
*(
mixture_.thermo1().kappa()
+ mixture_.thermo1().rho()*mixture_.thermo1().Cp()
*momentumTransport_.turbulence_->nut()
*momentumTransport_.mixtureMomentumTransport_->nut()
)
+ mixture_.alpha2()
*(
mixture_.thermo2().kappa()
+ mixture_.thermo2().rho()*mixture_.thermo2().Cp()
*momentumTransport_.turbulence_->nut()
*momentumTransport_.mixtureMomentumTransport_->nut()
);
}
}
@ -110,13 +110,13 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::kappaEff
mixture_.thermo1().kappa().boundaryField()[patchi]
+ mixture_.thermo1().rho(patchi)
*mixture_.thermo1().Cp().boundaryField()[patchi]
*momentumTransport_.turbulence1_->nut(patchi)
*momentumTransport_.momentumTransport1_->nut(patchi)
)
+ mixture_.alpha2().boundaryField()[patchi]
*(
mixture_.thermo2().kappa().boundaryField()[patchi]
+ mixture_.thermo2().rho(patchi)*mixture_.thermo2().Cp()
*momentumTransport_.turbulence2_->nut(patchi)
*momentumTransport_.momentumTransport2_->nut(patchi)
);
}
else
@ -126,14 +126,14 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::kappaEff
*(
mixture_.thermo1().kappa().boundaryField()[patchi]
+ mixture_.thermo1().rho(patchi)*mixture_.thermo1().Cp()
*momentumTransport_.turbulence_->nut(patchi)
*momentumTransport_.mixtureMomentumTransport_->nut(patchi)
)
+ mixture_.alpha2()
*(
mixture_.thermo2().kappa().boundaryField()[patchi]
+ mixture_.thermo2().rho(patchi)
*mixture_.thermo2().Cp().boundaryField()[patchi]
*momentumTransport_.turbulence_->nut(patchi)
*momentumTransport_.mixtureMomentumTransport_->nut(patchi)
);
}
}
@ -151,13 +151,13 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::alphaEff() const
*(
mixture_.thermo1().kappa()
+ mixture_.thermo1().rho()*mixture_.thermo1().Cp()
*momentumTransport_.turbulence1_->nut()
*momentumTransport_.momentumTransport1_->nut()
)/mixture_.thermo1().Cv()
+ mixture_.alpha2()
*(
mixture_.thermo2().kappa()
+ mixture_.thermo2().rho()*mixture_.thermo2().Cp()
*momentumTransport_.turbulence2_->nut()
*momentumTransport_.momentumTransport2_->nut()
)/mixture_.thermo2().Cv();
}
else
@ -167,13 +167,13 @@ Foam::compressibleInterPhaseThermophysicalTransportModel::alphaEff() const
*(
mixture_.thermo1().kappa()
+ mixture_.thermo1().rho()*mixture_.thermo1().Cp()
*momentumTransport_.turbulence_->nut()
*momentumTransport_.mixtureMomentumTransport_->nut()
)/mixture_.thermo1().Cv()
+ mixture_.alpha2()
*(
mixture_.thermo2().kappa()
+ mixture_.thermo2().rho()*mixture_.thermo2().Cp()
*momentumTransport_.turbulence_->nut()
*momentumTransport_.mixtureMomentumTransport_->nut()
)/mixture_.thermo2().Cv();
}
}

View File

@ -92,7 +92,7 @@ Foam::compressibleInterPhaseTransportModel::compressibleInterPhaseTransportModel
)
);
turbulence1_ =
momentumTransport1_ =
(
phaseCompressible::momentumTransportModel::New
(
@ -105,7 +105,7 @@ Foam::compressibleInterPhaseTransportModel::compressibleInterPhaseTransportModel
)
);
turbulence2_ =
momentumTransport2_ =
(
phaseCompressible::momentumTransportModel::New
(
@ -120,7 +120,7 @@ Foam::compressibleInterPhaseTransportModel::compressibleInterPhaseTransportModel
}
else
{
turbulence_ = compressible::momentumTransportModel::New
mixtureMomentumTransport_ = compressible::momentumTransportModel::New
(
rho,
U,
@ -128,7 +128,7 @@ Foam::compressibleInterPhaseTransportModel::compressibleInterPhaseTransportModel
mixture
);
turbulence_->validate();
mixtureMomentumTransport_->validate();
}
}
@ -144,12 +144,12 @@ Foam::compressibleInterPhaseTransportModel::divDevTau
if (twoPhaseTransport_)
{
return
turbulence1_->divDevTau(U)
+ turbulence2_->divDevTau(U);
momentumTransport1_->divDevTau(U)
+ momentumTransport2_->divDevTau(U);
}
else
{
return turbulence_->divDevTau(U);
return mixtureMomentumTransport_->divDevTau(U);
}
}
@ -171,12 +171,12 @@ void Foam::compressibleInterPhaseTransportModel::correct()
{
if (twoPhaseTransport_)
{
turbulence1_->correct();
turbulence2_->correct();
momentumTransport1_->correct();
momentumTransport2_->correct();
}
else
{
turbulence_->correct();
mixtureMomentumTransport_->correct();
}
}

View File

@ -83,13 +83,13 @@ class compressibleInterPhaseTransportModel
tmp<surfaceScalarField> alphaRhoPhi2_;
//- Mixture transport model (constructed for mixture transport)
autoPtr<compressible::momentumTransportModel> turbulence_;
autoPtr<compressible::momentumTransportModel> mixtureMomentumTransport_;
//- Phase-1 transport model (constructed for two-phase transport)
autoPtr<phaseCompressible::momentumTransportModel> turbulence1_;
autoPtr<phaseCompressible::momentumTransportModel> momentumTransport1_;
//- Phase-2 transport model (constructed for two-phase transport)
autoPtr<phaseCompressible::momentumTransportModel> turbulence2_;
autoPtr<phaseCompressible::momentumTransportModel> momentumTransport2_;
friend class compressibleInterPhaseThermophysicalTransportModel;

View File

@ -72,7 +72,7 @@ Foam::fv::compressible::VoFTurbulenceDamping::VoFTurbulenceDamping
)
),
interface_(mixture_),
turbulence_
momentumTransport_
(
mesh.lookupType<compressibleMomentumTransportModel>(phaseName_)
),
@ -86,22 +86,26 @@ Foam::fv::compressible::VoFTurbulenceDamping::VoFTurbulenceDamping
if (mesh.foundObject<volScalarField>(epsilonName))
{
fieldName_ = epsilonName;
C2_.read(turbulence_.coeffDict());
C2_.read(momentumTransport_.coeffDict());
}
else if (mesh.foundObject<volScalarField>(omegaName))
{
fieldName_ = omegaName;
betaStar_.read(turbulence_.coeffDict());
betaStar_.read(momentumTransport_.coeffDict());
// Read beta for k-omega models or beta1 for k-omega SST
if (turbulence_.coeffDict().found("beta"))
if (momentumTransport_.coeffDict().found("beta"))
{
beta_.read(turbulence_.coeffDict());
beta_.read(momentumTransport_.coeffDict());
}
else
{
beta_ =
dimensionedScalar("beta1", dimless, turbulence_.coeffDict());
beta_ = dimensionedScalar
(
"beta1",
dimless,
momentumTransport_.coeffDict()
);
}
}
else
@ -142,7 +146,7 @@ void Foam::fv::compressible::VoFTurbulenceDamping::addSup
if (fieldName == "epsilon")
{
eqn += interface_.fraction()*C2_*aRhoSqrnu*turbulence_.k()()
eqn += interface_.fraction()*C2_*aRhoSqrnu*momentumTransport_.k()()
/pow4(delta_);
}
else if (fieldName == "omega")
@ -193,7 +197,7 @@ void Foam::fv::compressible::VoFTurbulenceDamping::addSup
if (fieldName == IOobject::groupName("epsilon", phaseName_))
{
eqn += interface_.fraction()*C2_*taRhoSqrnu*turbulence_.k()()
eqn += interface_.fraction()*C2_*taRhoSqrnu*momentumTransport_.k()()
/pow4(delta_);
}
else if (fieldName == IOobject::groupName("omega", phaseName_))

View File

@ -25,17 +25,17 @@ Class
Foam::fv::compressible::VoFTurbulenceDamping
Description
Free-surface turbulence damping function
Free-surface momentumTransport damping function
Adds an extra source term to the mixture or phase epsilon or omega
equation to reduce turbulence generated near a free-surface. The
equation to reduce momentumTransport generated near a free-surface. The
implementation is based on
Reference:
\verbatim
Frederix, E. M. A., Mathur, A., Dovizio, D., Geurts, B. J.,
& Komen, E. M. J. (2018).
Reynolds-averaged modeling of turbulence damping
Reynolds-averaged modeling of momentumTransport damping
near a large-scale interface in two-phase flow.
Nuclear engineering and design, 333, 122-130.
\endverbatim
@ -46,7 +46,7 @@ Description
be set appropriately for the case by performing test runs and comparing with
known results. Clearly this model is far from general and more research is
needed in order that \c delta can be obtained directly from the interface
flow and turbulence conditions.
flow and momentumTransport conditions.
Usage
Example usage:
@ -57,7 +57,7 @@ Usage
libs ("libcompressibleVoFTurbulenceDamping.so");
// Interface turbulence damping length scale
// Interface momentumTransport damping length scale
// This is a required input as described in section 3.3 of the paper
delta 1e-4;
@ -106,7 +106,7 @@ class VoFTurbulenceDamping
//- Field name
word fieldName_;
//- Interface turbulence damping length scale
//- Interface momentumTransport damping length scale
// This is a required input as described in section 3.3 of the paper
dimensionedScalar delta_;
@ -116,8 +116,8 @@ class VoFTurbulenceDamping
//- Reference to the interface properties
const interfaceProperties& interface_;
//- Reference to the mixture turbulence model
const compressibleMomentumTransportModel& turbulence_;
//- Reference to the mixture momentumTransport model
const compressibleMomentumTransportModel& momentumTransport_;
// Turbulence model coefficients

View File

@ -46,7 +46,11 @@ Foam::solvers::fluid::fluid(fvMesh& mesh)
thermophysicalTransport
(
fluidThermoThermophysicalTransportModel::New(turbulence(), thermo)
fluidThermoThermophysicalTransportModel::New
(
momentumTransport(),
thermo
)
)
{}

View File

@ -102,7 +102,7 @@ Foam::solvers::incompressibleFluid::incompressibleFluid(fvMesh& mesh)
viscosity(viscosityModel::New(mesh)),
turbulence
momentumTransport
(
incompressible::momentumTransportModel::New
(
@ -116,7 +116,7 @@ Foam::solvers::incompressibleFluid::incompressibleFluid(fvMesh& mesh)
{
mesh.schemes().setFluxRequired(p.name());
turbulence->validate();
momentumTransport->validate();
if (mesh.dynamic())
{
@ -220,7 +220,7 @@ void Foam::solvers::incompressibleFluid::momentumTransportCorrector()
if (pimple.transportCorr())
{
viscosity->correct();
turbulence->correct();
momentumTransport->correct();
}
}

View File

@ -101,7 +101,7 @@ protected:
autoPtr<viscosityModel> viscosity;
//- Pointer to the momentum transport model
autoPtr<incompressible::momentumTransportModel> turbulence;
autoPtr<incompressible::momentumTransportModel> momentumTransport;
// Continuity properties

View File

@ -33,7 +33,7 @@ void Foam::solvers::incompressibleFluid::momentumPredictor()
(
fvm::ddt(U) + fvm::div(phi, U)
+ MRF.DDt(U)
+ turbulence->divDevSigma(U)
+ momentumTransport->divDevSigma(U)
==
fvModels().source(U)
);

View File

@ -160,7 +160,7 @@ Foam::solvers::isothermalFluid::isothermalFluid
K("K", 0.5*magSqr(U)),
turbulence
momentumTransport
(
compressible::momentumTransportModel::New
(
@ -180,7 +180,7 @@ Foam::solvers::isothermalFluid::isothermalFluid
thermo.validate("isothermalFluid", "h", "e");
mesh.schemes().setFluxRequired(p.name());
turbulence->validate();
momentumTransport->validate();
if (buoyancy.valid())
{
@ -354,7 +354,7 @@ void Foam::solvers::isothermalFluid::momentumTransportCorrector()
{
if (pimple.transportCorr())
{
turbulence->correct();
momentumTransport->correct();
}
}

View File

@ -130,7 +130,7 @@ protected:
// Momentum transport
//- Pointer to the momentum transport model
autoPtr<compressible::momentumTransportModel> turbulence;
autoPtr<compressible::momentumTransportModel> momentumTransport;
// Continuity properties

View File

@ -33,7 +33,7 @@ void Foam::solvers::isothermalFluid::momentumPredictor()
(
fvm::ddt(rho, U) + fvm::div(phi, U)
+ MRF.DDt(rho, U)
+ turbulence->divDevTau(U)
+ momentumTransport->divDevTau(U)
==
fvModels().source(rho, U)
);

View File

@ -55,13 +55,13 @@ Foam::solvers::multicomponentFluid::multicomponentFluid(fvMesh& mesh)
Y(composition.Y()),
reaction(combustionModel::New(thermo, turbulence())),
reaction(combustionModel::New(thermo, momentumTransport())),
thermophysicalTransport
(
fluidMulticomponentThermophysicalTransportModel::New
(
turbulence(),
momentumTransport(),
thermo
)
)

View File

@ -161,7 +161,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel
DUDt_(nullptr),
DUDtf_(nullptr),
divU_(nullptr),
turbulence_
momentumTransport_
(
phaseCompressible::momentumTransportModel::New
(
@ -179,7 +179,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel
<
phaseCompressible::momentumTransportModel,
transportThermoModel
>::New(turbulence_, this->thermo_)
>::New(momentumTransport_, this->thermo_)
),
continuityError_
(
@ -273,7 +273,7 @@ void Foam::MovingPhaseModel<BasePhaseModel>::correctTurbulence()
{
BasePhaseModel::correctTurbulence();
turbulence_->correct();
momentumTransport_->correct();
}
@ -324,7 +324,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::UEqn()
+ fvm::div(alphaRhoPhi_, U_)
+ fvm::SuSp(-this->continuityError(), U_)
+ this->fluid().MRF().DDt(alpha*rho, U_)
+ turbulence_->divDevTau(U_)
+ momentumTransport_->divDevTau(U_)
);
}
@ -343,7 +343,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::UfEqn()
fvm::div(alphaRhoPhi_, U_)
+ fvm::SuSp(fvc::ddt(*this, rho) - this->continuityError(), U_)
+ this->fluid().MRF().DDt(alpha*rho, U_)
+ turbulence_->divDevTau(U_)
+ momentumTransport_->divDevTau(U_)
);
}
@ -534,7 +534,7 @@ template<class BasePhaseModel>
Foam::tmp<Foam::volScalarField>
Foam::MovingPhaseModel<BasePhaseModel>::k() const
{
return turbulence_->k();
return momentumTransport_->k();
}
@ -542,7 +542,7 @@ template<class BasePhaseModel>
Foam::tmp<Foam::volScalarField>
Foam::MovingPhaseModel<BasePhaseModel>::pPrime() const
{
return turbulence_->pPrime();
return momentumTransport_->pPrime();
}

View File

@ -26,9 +26,10 @@ Class
Description
Class which represents a moving fluid phase. Holds the velocity, fluxes and
turbulence model and can generate the momentum equation. The interface is
quite restrictive as it also has to support an equivalent stationary model,
which does not store motion fields or a turbulence model.
momentumTransport model and can generate the momentum equation. The
interface is quite restrictive as it also has to support an equivalent
stationary model, which does not store motion fields or a momentumTransport
model.
Possible future extensions include separating the turbulent functionality
into another layer.
@ -121,7 +122,7 @@ protected:
tmp<volScalarField> divU_;
//- Turbulence model
autoPtr<phaseCompressible::momentumTransportModel> turbulence_;
autoPtr<phaseCompressible::momentumTransportModel> momentumTransport_;
//- Thermophysical transport model
autoPtr
@ -167,7 +168,8 @@ public:
// Member Functions
//- Correct the phase properties other than the thermo and turbulence
//- Correct the phase properties other than the thermo
// and momentumTransport
virtual void correct();
//- Correct the continuity error
@ -176,7 +178,7 @@ public:
//- Correct the kinematics
virtual void correctKinematics();
//- Correct the turbulence
//- Correct the momentumTransport
virtual void correctTurbulence();
//- Correct the energy transport e.g. alphat

View File

@ -40,7 +40,7 @@ Foam::ReactingPhaseModel<BasePhaseModel>::ReactingPhaseModel
)
:
BasePhaseModel(fluid, phaseName, referencePhase, index),
reaction_(combustionModel::New(this->thermo_(), this->turbulence_()))
reaction_(combustionModel::New(this->thermo_(), this->momentumTransport_()))
{}

View File

@ -215,7 +215,7 @@ public:
//- Correct the species concentrations
virtual void correctSpecies();
//- Correct the turbulence
//- Correct the momentumTransport
virtual void correctTurbulence();
//- Correct the energy transport

View File

@ -635,7 +635,7 @@ public:
//- Correct the species mass fractions
virtual void correctSpecies();
//- Correct the turbulence
//- Correct the momentumTransport
virtual void correctTurbulence();
//- Correct the energy transport e.g. alphat

View File

@ -488,7 +488,7 @@ public:
const phaseModel& dispersedPhase
) const;
//- Return reference to turbulence model of the continuous phase
//- Return reference to momentumTransport model of the continuous phase
const phaseCompressible::momentumTransportModel&
continuousTurbulence() const;