diff --git a/src/fvOptions/Make/files b/src/fvOptions/Make/files index ee2371113a..f71573bece 100644 --- a/src/fvOptions/Make/files +++ b/src/fvOptions/Make/files @@ -55,7 +55,11 @@ $(generalConstraints)/explicitSetValue/explicitSetValue.C derivedConstraints=constraints/derived $(derivedConstraints)/fixedTemperatureConstraint/fixedTemperatureConstraint.C -$(derivedConstraints)/temperatureLimitsConstraint/temperatureLimitsConstraint.C + + +/* Corrections */ + +corrections/limitTemperature/limitTemperature.C LIB = $(FOAM_LIBBIN)/libfvOptions diff --git a/src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C b/src/fvOptions/corrections/limitTemperature/limitTemperature.C similarity index 90% rename from src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C rename to src/fvOptions/corrections/limitTemperature/limitTemperature.C index 724548e065..542105ded2 100644 --- a/src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C +++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.C @@ -23,7 +23,7 @@ License \*---------------------------------------------------------------------------*/ -#include "temperatureLimitsConstraint.H" +#include "limitTemperature.H" #include "fvMesh.H" #include "basicThermo.H" #include "addToRunTimeSelectionTable.H" @@ -34,11 +34,11 @@ namespace Foam { namespace fv { - defineTypeNameAndDebug(temperatureLimitsConstraint, 0); + defineTypeNameAndDebug(limitTemperature, 0); addToRunTimeSelectionTable ( option, - temperatureLimitsConstraint, + limitTemperature, dictionary ); } @@ -46,7 +46,7 @@ namespace fv // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fv::temperatureLimitsConstraint::temperatureLimitsConstraint +Foam::fv::limitTemperature::limitTemperature ( const word& name, const word& modelType, @@ -65,13 +65,13 @@ Foam::fv::temperatureLimitsConstraint::temperatureLimitsConstraint // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool Foam::fv::temperatureLimitsConstraint::alwaysApply() const +bool Foam::fv::limitTemperature::alwaysApply() const { return true; } -void Foam::fv::temperatureLimitsConstraint::correct(volScalarField& he) +void Foam::fv::limitTemperature::correct(volScalarField& he) { const basicThermo& thermo = mesh_.lookupObject("thermophysicalProperties"); @@ -125,7 +125,7 @@ void Foam::fv::temperatureLimitsConstraint::correct(volScalarField& he) } -bool Foam::fv::temperatureLimitsConstraint::read(const dictionary& dict) +bool Foam::fv::limitTemperature::read(const dictionary& dict) { if (cellSetOption::read(dict)) { diff --git a/src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H b/src/fvOptions/corrections/limitTemperature/limitTemperature.H similarity index 82% rename from src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H rename to src/fvOptions/corrections/limitTemperature/limitTemperature.H index c1490da321..42383f1a51 100644 --- a/src/fvOptions/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H +++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.H @@ -22,27 +22,27 @@ License along with OpenFOAM. If not, see . Class - Foam::fv::temperatureLimitsConstraint + Foam::fv::limitTemperature Description - Constraint for temperature to apply limits between minimum and maximum + Correction for temperature to apply limits between minimum and maximum values Constraint described by: - temperatureLimitsConstraintCoeffs + limitTemperatureCoeffs { minimum 200; maximum 500; } SourceFiles - temperatureLimitsConstraint.C + limitTemperature.C \*---------------------------------------------------------------------------*/ -#ifndef temperatureLimitsConstraint_H -#define temperatureLimitsConstraint_H +#ifndef limitTemperature_H +#define limitTemperature_H #include "cellSetOption.H" @@ -54,10 +54,10 @@ namespace fv { /*---------------------------------------------------------------------------*\ - Class temperatureLimitsConstraint Declaration + Class limitTemperature Declaration \*---------------------------------------------------------------------------*/ -class temperatureLimitsConstraint +class limitTemperature : public cellSetOption { @@ -78,22 +78,22 @@ private: // Private Member Functions //- Disallow default bitwise copy construct - temperatureLimitsConstraint(const temperatureLimitsConstraint&); + limitTemperature(const limitTemperature&); //- Disallow default bitwise assignment - void operator=(const temperatureLimitsConstraint&); + void operator=(const limitTemperature&); public: //- Runtime type information - TypeName("temperatureLimitsConstraint"); + TypeName("limitTemperature"); // Constructors //- Construct from components - temperatureLimitsConstraint + limitTemperature ( const word& name, const word& modelType, @@ -103,7 +103,7 @@ public: //- Destructor - virtual ~temperatureLimitsConstraint() + virtual ~limitTemperature() {} diff --git a/src/fvOptions/fvOption/fvOption.C b/src/fvOptions/fvOption/fvOption.C index 547d2f3961..b75e024e47 100644 --- a/src/fvOptions/fvOption/fvOption.C +++ b/src/fvOptions/fvOption/fvOption.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "fvOption.H" -#include "fvMatrices.H" +#include "volFields.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -65,8 +65,7 @@ Foam::fv::option::option fieldNames_(), applied_() { - Info<< incrIndent << indent << "Source: " << name_ << endl; - Info<< decrIndent; + Info<< incrIndent << indent << "Source: " << name_ << endl << decrIndent; } @@ -139,26 +138,6 @@ void Foam::fv::option::checkApplied() const } -void Foam::fv::option::correct(volScalarField& fld) -{} - - -void Foam::fv::option::correct(volVectorField& fld) -{} - - -void Foam::fv::option::correct(volSphericalTensorField& fld) -{} - - -void Foam::fv::option::correct(volSymmTensorField& fld) -{} - - -void Foam::fv::option::correct(volTensorField& fld) -{} - - void Foam::fv::option::addSup ( fvMatrix& eqn, @@ -332,4 +311,24 @@ void Foam::fv::option::constrain(fvMatrix& eqn, const label fieldI) {} +void Foam::fv::option::correct(volScalarField& field) +{} + + +void Foam::fv::option::correct(volVectorField& field) +{} + + +void Foam::fv::option::correct(volSphericalTensorField& field) +{} + + +void Foam::fv::option::correct(volSymmTensorField& field) +{} + + +void Foam::fv::option::correct(volTensorField& field) +{} + + // ************************************************************************* // diff --git a/src/fvOptions/fvOption/fvOption.H b/src/fvOptions/fvOption/fvOption.H index d7b431b128..a3936316aa 100644 --- a/src/fvOptions/fvOption/fvOption.H +++ b/src/fvOptions/fvOption/fvOption.H @@ -230,55 +230,32 @@ public: // Evaluation - // Correct + // Explicit and implicit sources - //- Scalar - virtual void correct(volScalarField& fld); - - //- Vector - virtual void correct(volVectorField& fld); - - //- Spherical tensor - virtual void correct(volSphericalTensorField& fld); - - //- Symmetric tensor - virtual void correct(volSymmTensorField& fld); - - //- Tensor - virtual void correct(volTensorField& fld); - - - // Add explicit and implicit contributions - - //- Scalar virtual void addSup ( fvMatrix& eqn, const label fieldI ); - //- Vector virtual void addSup ( fvMatrix& eqn, const label fieldI ); - //- Spherical tensor virtual void addSup ( fvMatrix& eqn, const label fieldI ); - //- Symmetric tensor virtual void addSup ( fvMatrix& eqn, const label fieldI ); - //- Tensor virtual void addSup ( fvMatrix& eqn, @@ -286,9 +263,8 @@ public: ); - // Add explicit and implicit contributions to compressible equations + // Explicit and implicit sources for compressible equations - //- Scalar virtual void addSup ( const volScalarField& rho, @@ -296,7 +272,6 @@ public: const label fieldI ); - //- Vector virtual void addSup ( const volScalarField& rho, @@ -304,7 +279,6 @@ public: const label fieldI ); - //- Spherical tensor virtual void addSup ( const volScalarField& rho, @@ -312,7 +286,6 @@ public: const label fieldI ); - //- Symmetric tensor virtual void addSup ( const volScalarField& rho, @@ -320,7 +293,6 @@ public: const label fieldI ); - //- Tensor virtual void addSup ( const volScalarField& rho, @@ -329,9 +301,8 @@ public: ); - // Add explicit and implicit contributions to phase equations + // Explicit and implicit sources for phase equations - //- Scalar virtual void addSup ( const volScalarField& alpha, @@ -340,7 +311,6 @@ public: const label fieldI ); - //- Vector virtual void addSup ( const volScalarField& alpha, @@ -349,7 +319,6 @@ public: const label fieldI ); - //- Spherical tensor virtual void addSup ( const volScalarField& alpha, @@ -358,7 +327,6 @@ public: const label fieldI ); - //- Symmetric tensor virtual void addSup ( const volScalarField& alpha, @@ -367,7 +335,6 @@ public: const label fieldI ); - //- Tensor virtual void addSup ( const volScalarField& alpha, @@ -379,35 +346,30 @@ public: // Constraints - //- Scalar virtual void constrain ( fvMatrix& eqn, const label fieldI ); - //- Vector virtual void constrain ( fvMatrix& eqn, const label fieldI ); - //- Spherical tensor virtual void constrain ( fvMatrix& eqn, const label fieldI ); - //- Symmetric tensor virtual void constrain ( fvMatrix& eqn, const label fieldI ); - //- Tensor virtual void constrain ( fvMatrix& eqn, @@ -415,6 +377,15 @@ public: ); + // Correction + + virtual void correct(volScalarField& field); + virtual void correct(volVectorField& field); + virtual void correct(volSphericalTensorField& field); + virtual void correct(volSymmTensorField& field); + virtual void correct(volTensorField& field); + + // IO //- Write the source header information diff --git a/src/fvOptions/fvOption/fvOptionList.H b/src/fvOptions/fvOption/fvOptionList.H index b29beddda3..f6e36d9a41 100644 --- a/src/fvOptions/fvOption/fvOptionList.H +++ b/src/fvOptions/fvOption/fvOptionList.H @@ -32,13 +32,13 @@ SourceFile \*---------------------------------------------------------------------------*/ -#ifndef optionList_H -#define optionList_H +#ifndef fvOptionList_H +#define fvOptionList_H +#include "fvOption.H" #include "PtrList.H" #include "GeometricField.H" #include "fvPatchField.H" -#include "fvOption.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -119,10 +119,6 @@ public: //- Reset the source list void reset(const dictionary& dict); - //- Correct - template - void correct(GeometricField& fld); - // Sources @@ -130,14 +126,14 @@ public: template tmp > operator() ( - GeometricField& fld + GeometricField& field ); //- Return source for equation with specified name template tmp > operator() ( - GeometricField& fld, + GeometricField& field, const word& fieldName ); @@ -146,7 +142,7 @@ public: tmp > operator() ( const volScalarField& rho, - GeometricField& fld + GeometricField& field ); //- Return source for equation with specified name @@ -154,7 +150,7 @@ public: tmp > operator() ( const volScalarField& rho, - GeometricField& fld, + GeometricField& field, const word& fieldName ); @@ -164,7 +160,7 @@ public: ( const volScalarField& alpha, const volScalarField& rho, - GeometricField& fld + GeometricField& field ); //- Return source for equation with specified name @@ -173,7 +169,7 @@ public: ( const volScalarField& alpha, const volScalarField& rho, - GeometricField& fld, + GeometricField& field, const word& fieldName ); @@ -185,6 +181,13 @@ public: void constrain(fvMatrix& eqn); + // Correction + + //- Apply correction to field + template + void correct(GeometricField& field); + + // IO //- Read dictionary diff --git a/src/fvOptions/fvOption/fvOptionListTemplates.C b/src/fvOptions/fvOption/fvOptionListTemplates.C index 16e722e3f9..21805dd9ff 100644 --- a/src/fvOptions/fvOption/fvOptionListTemplates.C +++ b/src/fvOptions/fvOption/fvOptionListTemplates.C @@ -26,60 +26,27 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::fv::optionList::correct +Foam::tmp > Foam::fv::optionList::operator() ( - GeometricField& fld + GeometricField& field ) { - const word& fieldName = fld.name(); - - forAll(*this, i) - { - option& source = this->operator[](i); - - label fieldI = source.applyToField(fieldName); - - if (fieldI != -1) - { - source.setApplied(fieldI); - - if (source.isActive()) - { - if (debug) - { - Info<< "Correcting source " << source.name() - << " for field " << fieldName << endl; - } - - source.correct(fld); - } - } - } + return this->operator()(field, field.name()); } template Foam::tmp > Foam::fv::optionList::operator() ( - GeometricField& fld -) -{ - return this->operator()(fld, fld.name()); -} - - -template -Foam::tmp > Foam::fv::optionList::operator() -( - GeometricField& fld, + GeometricField& field, const word& fieldName ) { checkApplied(); - const dimensionSet ds = fld.dimensions()/dimTime*dimVolume; + const dimensionSet ds = field.dimensions()/dimTime*dimVolume; - tmp > tmtx(new fvMatrix(fld, ds)); + tmp > tmtx(new fvMatrix(field, ds)); fvMatrix& mtx = tmtx(); forAll(*this, i) @@ -113,10 +80,10 @@ template Foam::tmp > Foam::fv::optionList::operator() ( const volScalarField& rho, - GeometricField& fld + GeometricField& field ) { - return this->operator()(rho, fld, fld.name()); + return this->operator()(rho, field, field.name()); } @@ -124,15 +91,18 @@ template Foam::tmp > Foam::fv::optionList::operator() ( const volScalarField& rho, - GeometricField& fld, + GeometricField& field, const word& fieldName ) { checkApplied(); - const dimensionSet ds = rho.dimensions()*fld.dimensions()/dimTime*dimVolume; + const dimensionSet ds + ( + rho.dimensions()*field.dimensions()/dimTime*dimVolume + ); - tmp > tmtx(new fvMatrix(fld, ds)); + tmp > tmtx(new fvMatrix(field, ds)); fvMatrix& mtx = tmtx(); forAll(*this, i) @@ -167,10 +137,10 @@ Foam::tmp > Foam::fv::optionList::operator() ( const volScalarField& alpha, const volScalarField& rho, - GeometricField& fld + GeometricField& field ) { - return this->operator()(alpha, rho, fld, fld.name()); + return this->operator()(alpha, rho, field, field.name()); } @@ -179,16 +149,19 @@ Foam::tmp > Foam::fv::optionList::operator() ( const volScalarField& alpha, const volScalarField& rho, - GeometricField& fld, + GeometricField& field, const word& fieldName ) { checkApplied(); - const dimensionSet ds = - alpha.dimensions()*rho.dimensions()*fld.dimensions()/dimTime*dimVolume; + const dimensionSet ds + ( + alpha.dimensions()*rho.dimensions()*field.dimensions() + /dimTime*dimVolume + ); - tmp > tmtx(new fvMatrix(fld, ds)); + tmp > tmtx(new fvMatrix(field, ds)); fvMatrix& mtx = tmtx(); forAll(*this, i) @@ -248,4 +221,37 @@ void Foam::fv::optionList::constrain(fvMatrix& eqn) } +template +void Foam::fv::optionList::correct +( + GeometricField& field +) +{ + const word& fieldName = field.name(); + + forAll(*this, i) + { + option& source = this->operator[](i); + + label fieldI = source.applyToField(fieldName); + + if (fieldI != -1) + { + source.setApplied(fieldI); + + if (source.isActive()) + { + if (debug) + { + Info<< "Correcting source " << source.name() + << " for field " << fieldName << endl; + } + + source.correct(field); + } + } + } +} + + // ************************************************************************* // diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C index 5b4c03ab52..83a29e2248 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C @@ -169,7 +169,7 @@ void Foam::fv::rotorDiskSource::writeField if (mesh_.time().outputTime() || writeNow) { - tmp tfld + tmp tfield ( new fieldType ( @@ -186,7 +186,7 @@ void Foam::fv::rotorDiskSource::writeField ) ); - Field& fld = tfld().internalField(); + Field& field = tfield().internalField(); if (cells_.size() != values.size()) { @@ -197,10 +197,10 @@ void Foam::fv::rotorDiskSource::writeField forAll(cells_, i) { const label cellI = cells_[i]; - fld[cellI] = values[i]; + field[cellI] = values[i]; } - tfld().write(); + tfield().write(); } } diff --git a/src/fvOptions/sources/general/codedSource/CodedSource.C b/src/fvOptions/sources/general/codedSource/CodedSource.C index 3573ae3efe..091ea2ec66 100644 --- a/src/fvOptions/sources/general/codedSource/CodedSource.C +++ b/src/fvOptions/sources/general/codedSource/CodedSource.C @@ -149,7 +149,7 @@ Foam::fv::option& Foam::fv::CodedSource::redirectFvOption() const template void Foam::fv::CodedSource::correct ( - GeometricField& fld + GeometricField& field ) { if (debug) @@ -159,7 +159,7 @@ void Foam::fv::CodedSource::correct } updateLibrary(redirectType_); - redirectFvOption().correct(fld); + redirectFvOption().correct(field); } diff --git a/src/fvOptions/sources/general/codedSource/CodedSource.H b/src/fvOptions/sources/general/codedSource/CodedSource.H index 0de0d2e980..516ec81de7 100644 --- a/src/fvOptions/sources/general/codedSource/CodedSource.H +++ b/src/fvOptions/sources/general/codedSource/CodedSource.H @@ -31,7 +31,7 @@ Description codeCorrect ( - GeometricField& fld + GeometricField& field ) codeAddSup @@ -47,7 +47,7 @@ Description ) where : - fld is the field in fieldNames + field is the field in fieldNames eqn is the fvMatrix \heading Source usage