From 35b37eced1456545d8de482aa3d1b74ef0ded8ed Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Thu, 31 Dec 2020 00:10:33 +0000 Subject: [PATCH] momentumTransportModels::laminar: Improved inheritance of member functions --- .../laminar/Maxwell/Maxwell.C | 46 +++++++----- .../laminar/Maxwell/Maxwell.H | 6 ++ .../laminar/Stokes/Stokes.C | 75 +------------------ .../laminar/Stokes/Stokes.H | 18 +---- .../generalizedNewtonian.C | 74 ++---------------- .../generalizedNewtonian.H | 21 +----- .../laminar/laminarModel/laminarModel.C | 25 +------ .../laminar/laminarModel/laminarModel.H | 47 ++++++------ 8 files changed, 68 insertions(+), 244 deletions(-) diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.C b/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.C index b81ddaf013..c9ce5778aa 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.C +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.C @@ -37,7 +37,7 @@ namespace laminarModels // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template -Foam::PtrList +PtrList Maxwell::readModeCoefficients ( const word& name, @@ -135,15 +135,7 @@ Maxwell::Maxwell nModes_(modeCoefficients_.size() ? modeCoefficients_.size() : 1), - nuM_ - ( - dimensioned - ( - "nuM", - dimViscosity, - this->coeffDict_.lookup("nuM") - ) - ), + nuM_("nuM", dimViscosity, this->coeffDict_.lookup("nuM")), lambdas_(readModeCoefficients("lambda", dimTime)), @@ -238,7 +230,7 @@ bool Maxwell::read() this->coeffDict().lookup("modes") >> modeCoefficients_; } - nuM_.readIfPresent(this->coeffDict()); + nuM_.read(this->coeffDict()); lambdas_ = readModeCoefficients("lambda", dimTime); @@ -252,16 +244,35 @@ bool Maxwell::read() template -tmp -Maxwell::sigma() const +tmp Maxwell::nuEff() const +{ + return volScalarField::New + ( + IOobject::groupName("nuEff", this->alphaRhoPhi_.group()), + this->nu() + ); +} + + +template +tmp Maxwell::nuEff +( + const label patchi +) const +{ + return this->nu(patchi); +} + + +template +tmp Maxwell::sigma() const { return sigma_; } template -tmp -Maxwell::devTau() const +tmp Maxwell::devTau() const { return volSymmTensorField::New ( @@ -274,8 +285,7 @@ Maxwell::devTau() const template -tmp -Maxwell::divDevTau +tmp Maxwell::divDevTau ( volVectorField& U ) const @@ -294,7 +304,7 @@ Maxwell::divDevTau template -tmp +tmp Maxwell::divDevTau ( const volScalarField& rho, diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.H b/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.H index 4a88b69fcc..0f34f3426c 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.H +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/Maxwell/Maxwell.H @@ -160,6 +160,12 @@ public: //- Read model coefficients if they have changed virtual bool read(); + //- Return the effective viscosity, i.e. the laminar viscosity + virtual tmp nuEff() const; + + //- Return the effective viscosity on patch + virtual tmp nuEff(const label patchi) const; + //- Return the stress tensor [m^2/s^2] virtual tmp sigma() const; diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.C b/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.C index db23892d7c..c41e19eb0c 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.C +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.C @@ -66,8 +66,7 @@ Stokes::Stokes // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -const dictionary& -Stokes::coeffDict() const +const dictionary& Stokes::coeffDict() const { return dictionary::null; } @@ -81,35 +80,7 @@ bool Stokes::read() template -tmp -Stokes::nut() const -{ - return volScalarField::New - ( - IOobject::groupName("nut", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(dimViscosity, 0) - ); -} - - -template -tmp -Stokes::nut -( - const label patchi -) const -{ - return tmp - ( - new scalarField(this->mesh_.boundary()[patchi].size(), 0.0) - ); -} - - -template -tmp -Stokes::nuEff() const +tmp Stokes::nuEff() const { return volScalarField::New ( @@ -120,8 +91,7 @@ Stokes::nuEff() const template -tmp -Stokes::nuEff +tmp Stokes::nuEff ( const label patchi ) const @@ -130,45 +100,6 @@ Stokes::nuEff } -template -tmp -Stokes::k() const -{ - return volScalarField::New - ( - IOobject::groupName("k", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(sqr(this->U_.dimensions()), 0) - ); -} - - -template -tmp -Stokes::epsilon() const -{ - return volScalarField::New - ( - IOobject::groupName("epsilon", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(sqr(this->U_.dimensions())/dimTime, 0) - ); -} - - -template -tmp -Stokes::sigma() const -{ - return volSymmTensorField::New - ( - IOobject::groupName("R", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedSymmTensor(sqr(this->U_.dimensions()), Zero) - ); -} - - template void Stokes::correct() { diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.H b/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.H index 42be0d08bb..67add48979 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.H +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/Stokes/Stokes.H @@ -25,7 +25,7 @@ Class Foam::laminarModels::Stokes Description - Turbulence model for Stokes flow. + Momentum transport model for Stokes flow. SourceFiles Stokes.C @@ -107,28 +107,12 @@ public: //- Read momentumTransport dictionary virtual bool read(); - //- Return the turbulence viscosity, i.e. 0 for Stokes flow - virtual tmp nut() const; - - //- Return the turbulence viscosity on patch - virtual tmp nut(const label patchi) const; - //- Return the effective viscosity, i.e. the Stokes viscosity virtual tmp nuEff() const; //- Return the effective viscosity on patch virtual tmp nuEff(const label patchi) const; - //- Return the turbulence kinetic energy, i.e. 0 for Stokes flow - virtual tmp k() const; - - //- Return the turbulence kinetic energy dissipation rate, - // i.e. 0 for Stokes flow - virtual tmp epsilon() const; - - //- Return the stress tensor [m^2/s^2], i.e. 0 for Stokes flow - virtual tmp sigma() const; - //- Correct the Stokes viscosity virtual void correct(); }; diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.C b/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.C index 9637be273c..db65be93a5 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.C +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.C @@ -73,7 +73,11 @@ generalizedNewtonian::generalizedNewtonian ( IOobject ( - IOobject::groupName("generalizedNewtonian:nu", alphaRhoPhi.group()), + IOobject::groupName + ( + IOobject::modelName("nu", typeName), + alphaRhoPhi.group() + ), this->runTime_.timeName(), this->mesh_, IOobject::NO_READ, @@ -87,7 +91,7 @@ generalizedNewtonian::generalizedNewtonian // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template -Foam::tmp +tmp generalizedNewtonian::strainRate() const { return sqrt(2.0)*mag(symm(fvc::grad(this->U()))); @@ -105,33 +109,6 @@ bool generalizedNewtonian::read() } -template -tmp -generalizedNewtonian::nut() const -{ - return volScalarField::New - ( - IOobject::groupName("nut", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(dimViscosity, 0) - ); -} - - -template -tmp -generalizedNewtonian::nut -( - const label patchi -) const -{ - return tmp - ( - new scalarField(this->mesh_.boundary()[patchi].size(), 0.0) - ); -} - - template tmp generalizedNewtonian::nuEff() const @@ -155,45 +132,6 @@ generalizedNewtonian::nuEff } -template -tmp -generalizedNewtonian::k() const -{ - return volScalarField::New - ( - IOobject::groupName("k", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(sqr(this->U_.dimensions()), 0) - ); -} - - -template -tmp -generalizedNewtonian::epsilon() const -{ - return volScalarField::New - ( - IOobject::groupName("epsilon", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedScalar(sqr(this->U_.dimensions())/dimTime, 0) - ); -} - - -template -tmp -generalizedNewtonian::sigma() const -{ - return volSymmTensorField::New - ( - IOobject::groupName("R", this->alphaRhoPhi_.group()), - this->mesh_, - dimensionedSymmTensor(sqr(this->U_.dimensions()), Zero) - ); -} - - template void generalizedNewtonian::correct() { diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.H b/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.H index 0123fb8d22..51d1ac3637 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.H +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/generalizedNewtonian/generalizedNewtonian.H @@ -25,7 +25,7 @@ Class Foam::laminarModels::generalizedNewtonian Description - Turbulence model for shear-dependent Non-Newtonian flow. + Momentum transport model for shear-dependent Non-Newtonian flow. SourceFiles generalizedNewtonian.C @@ -121,13 +121,6 @@ public: //- Read momentumTransport dictionary virtual bool read(); - //- Return the turbulence viscosity, - // i.e. 0 for generalized Newtonian flow - virtual tmp nut() const; - - //- Return the turbulence viscosity on patch - virtual tmp nut(const label patchi) const; - //- Return the effective viscosity // i.e. the generalizedNewtonian viscosity virtual tmp nuEff() const; @@ -135,18 +128,6 @@ public: //- Return the effective viscosity on patch virtual tmp nuEff(const label patchi) const; - //- Return the turbulence kinetic energy - // i.e. 0 for generalizedNewtonian flow - virtual tmp k() const; - - //- Return the turbulence kinetic energy dissipation rate, - // i.e. 0 for generalizedNewtonian flow - virtual tmp epsilon() const; - - //- Return the stress tensor [m^2/s^2] - // i.e. 0 for generalizedNewtonian flow - virtual tmp sigma() const; - //- Correct the generalizedNewtonian viscosity virtual void correct(); }; diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.C b/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.C index 39ea2ab392..4dcfe4ab99 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.C +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.C @@ -205,29 +205,6 @@ Foam::laminarModel::nut } -template -Foam::tmp -Foam::laminarModel::nuEff() const -{ - return volScalarField::New - ( - IOobject::groupName("nuEff", this->alphaRhoPhi_.group()), - this->nu() - ); -} - - -template -Foam::tmp -Foam::laminarModel::nuEff -( - const label patchi -) const -{ - return this->nu(patchi); -} - - template Foam::tmp Foam::laminarModel::k() const @@ -260,7 +237,7 @@ Foam::laminarModel::sigma() const { return volSymmTensorField::New ( - IOobject::groupName("R", this->alphaRhoPhi_.group()), + IOobject::groupName("sigma", this->alphaRhoPhi_.group()), this->mesh_, dimensionedSymmTensor(sqr(this->U_.dimensions()), Zero) ); diff --git a/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.H b/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.H index 818fa56627..08a47b2d1f 100644 --- a/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.H +++ b/src/MomentumTransportModels/momentumTransportModels/laminar/laminarModel/laminarModel.H @@ -144,39 +144,36 @@ public: //- Read model coefficients if they have changed virtual bool read(); + //- Const access to the coefficients dictionary + virtual const dictionary& coeffDict() const + { + return coeffDict_; + } - // Access + //- Return the turbulence viscosity, i.e. 0 for laminar flow + virtual tmp nut() const; - //- Const access to the coefficients dictionary - virtual const dictionary& coeffDict() const - { - return coeffDict_; - } + //- Return the turbulence viscosity on patch + virtual tmp nut(const label patchi) const; - //- Return the turbulence viscosity, i.e. 0 for laminar flow - virtual tmp nut() const; + //- Return the effective viscosity, i.e. the laminar viscosity + virtual tmp nuEff() const = 0; - //- Return the turbulence viscosity on patch - virtual tmp nut(const label patchi) const; + //- Return the effective viscosity on patch + virtual tmp nuEff(const label patchi) const = 0; - //- Return the effective viscosity, i.e. the laminar viscosity - virtual tmp nuEff() const; + //- Return the turbulence kinetic energy, i.e. 0 for laminar flow + virtual tmp k() const; - //- Return the effective viscosity on patch - virtual tmp nuEff(const label patchi) const; + //- Return the turbulence kinetic energy dissipation rate, + // i.e. 0 for laminar flow + virtual tmp epsilon() const; - //- Return the turbulence kinetic energy, i.e. 0 for laminar flow - virtual tmp k() const; + //- Return the stress tensor [m^2/s^2], i.e. 0 for laminar flow + virtual tmp sigma() const; - //- Return the turbulence kinetic energy dissipation rate, - // i.e. 0 for laminar flow - virtual tmp epsilon() const; - - //- Return the stress tensor [m^2/s^2], i.e. 0 for laminar flow - virtual tmp sigma() const; - - //- Correct the laminar transport - virtual void correct(); + //- Correct the laminar transport + virtual void correct(); // Member Operators