diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.C index f699e17588..82a8df0cca 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.C +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.C @@ -220,7 +220,7 @@ void Foam::writeFuns::writePointDataHeader } -void Foam::writeFuns::insert(const scalar& pt, DynamicList& dest) +void Foam::writeFuns::insert(const scalar pt, DynamicList& dest) { dest.append(float(pt)); } diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.H b/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.H index cf7a4e992c..c38bbda669 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.H +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/writeFuns.H @@ -86,7 +86,7 @@ public: // Convert to VTK and store - static void insert(const scalar&, DynamicList&); + static void insert(const scalar, DynamicList&); static void insert(const point&, DynamicList&); static void insert(const sphericalTensor&, DynamicList&); static void insert(const symmTensor&, DynamicList&); diff --git a/src/OpenFOAM/db/scalarRange/scalarRange.C b/src/OpenFOAM/db/scalarRange/scalarRange.C index 7623e14c27..393b19bba4 100644 --- a/src/OpenFOAM/db/scalarRange/scalarRange.C +++ b/src/OpenFOAM/db/scalarRange/scalarRange.C @@ -42,7 +42,7 @@ Foam::scalarRange::scalarRange() {} -Foam::scalarRange::scalarRange(const scalar& lower, const scalar& upper) +Foam::scalarRange::scalarRange(const scalar lower, const scalar upper) : type_(RANGE), value_(lower), @@ -123,7 +123,7 @@ Foam::scalar Foam::scalarRange::upper() const } -bool Foam::scalarRange::selected(const scalar& value) const +bool Foam::scalarRange::selected(const scalar value) const { switch (type_) { diff --git a/src/OpenFOAM/db/scalarRange/scalarRange.H b/src/OpenFOAM/db/scalarRange/scalarRange.H index b996871664..f123809237 100644 --- a/src/OpenFOAM/db/scalarRange/scalarRange.H +++ b/src/OpenFOAM/db/scalarRange/scalarRange.H @@ -92,7 +92,7 @@ public: scalarRange(); //- Construct a Range - scalarRange(const scalar& lower, const scalar& upper); + scalarRange(const scalar lower, const scalar upper); //- Construct from Istream. // Since commas can be used as list delimiters, @@ -119,7 +119,7 @@ public: scalar upper() const; //- Return true if the value is within the range - bool selected(const scalar&) const; + bool selected(const scalar) const; // Member Operators diff --git a/src/OpenFOAM/db/scalarRange/scalarRanges.C b/src/OpenFOAM/db/scalarRange/scalarRanges.C index c59e2b5a9d..f8b3c077b1 100644 --- a/src/OpenFOAM/db/scalarRange/scalarRanges.C +++ b/src/OpenFOAM/db/scalarRange/scalarRanges.C @@ -57,7 +57,7 @@ Foam::scalarRanges::scalarRanges(Istream& is) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool Foam::scalarRanges::selected(const scalar& value) const +bool Foam::scalarRanges::selected(const scalar value) const { forAll(*this, i) { diff --git a/src/OpenFOAM/db/scalarRange/scalarRanges.H b/src/OpenFOAM/db/scalarRange/scalarRanges.H index 5483454ae6..c3bf1ea668 100644 --- a/src/OpenFOAM/db/scalarRange/scalarRanges.H +++ b/src/OpenFOAM/db/scalarRange/scalarRanges.H @@ -66,7 +66,7 @@ public: // Member Functions //- Return true if the given value is within the ranges - bool selected(const scalar&) const; + bool selected(const scalar) const; //- Return the set of selected entries in the given list // that are within the ranges diff --git a/src/OpenFOAM/global/unitConversion/unitConversion.H b/src/OpenFOAM/global/unitConversion/unitConversion.H index 0ab93f1a50..10cbd47b35 100644 --- a/src/OpenFOAM/global/unitConversion/unitConversion.H +++ b/src/OpenFOAM/global/unitConversion/unitConversion.H @@ -45,13 +45,13 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // //- Conversion from degrees to radians -inline scalar degToRad(const scalar& deg) +inline scalar degToRad(const scalar deg) { return (deg*pi/180.0); } //- Conversion from radians to degrees -inline scalar radToDeg(const scalar& rad) +inline scalar radToDeg(const scalar rad) { return (rad*180.0/pi); } diff --git a/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.C b/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.C index ecc094a840..f412f20ee0 100644 --- a/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.C +++ b/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.C @@ -32,7 +32,20 @@ template Foam::simpleMatrix::simpleMatrix(const label mSize) : scalarSquareMatrix(mSize), - source_(mSize, pTraits::zero) + source_(mSize) +{} + + +template +Foam::simpleMatrix::simpleMatrix +( + const label mSize, + const scalar coeffVal, + const Type& sourceVal +) +: + scalarSquareMatrix(mSize, mSize, coeffVal), + source_(mSize, sourceVal) {} diff --git a/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.H b/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.H index fd875281cc..0633cecc56 100644 --- a/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.H +++ b/src/OpenFOAM/matrices/simpleMatrix/simpleMatrix.H @@ -26,7 +26,7 @@ Class Foam::simpleMatrix Description - Foam::simpleMatrix + A simple square matrix solver with scalar coefficients. SourceFiles simpleMatrix.C @@ -75,8 +75,13 @@ public: // Constructors //- Construct given size + // Note: this does not initialise the coefficients or the source. simpleMatrix(const label); + //- Construct given size and initial values for the + // coefficients and source + simpleMatrix(const label, const scalar, const Type&); + //- Construct from components simpleMatrix(const scalarSquareMatrix&, const Field&); @@ -91,11 +96,13 @@ public: // Access + //- Return access to the source Field& source() { return source_; } + //- Return const-access to the source const Field& source() const { return source_; diff --git a/src/OpenFOAM/matrices/solution/solution.C b/src/OpenFOAM/matrices/solution/solution.C index c63dceec4e..ba0db67bd4 100644 --- a/src/OpenFOAM/matrices/solution/solution.C +++ b/src/OpenFOAM/matrices/solution/solution.C @@ -60,6 +60,7 @@ Foam::solution::solution(const objectRegistry& obr, const fileName& dictName) ) ), cache_(ITstream("cache", tokenList())()), + caching_(false), relaxationFactors_(ITstream("relaxationFactors", tokenList())()), defaultRelaxationFactor_(0), solvers_(ITstream("solvers", tokenList())()) @@ -150,12 +151,19 @@ Foam::label Foam::solution::upgradeSolverDict bool Foam::solution::cache(const word& name) const { - if (debug) + if (caching_) { - Info<< "Find cache entry for " << name << endl; - } + if (debug) + { + Info<< "Cache: find entry for " << name << endl; + } - return cache_.found(name); + return cache_.found(name); + } + else + { + return false; + } } @@ -248,6 +256,7 @@ bool Foam::solution::read() if (dict.found("cache")) { cache_ = dict.subDict("cache"); + caching_ = cache_.lookupOrDefault("active", true); } if (dict.found("relaxationFactors")) diff --git a/src/OpenFOAM/matrices/solution/solution.H b/src/OpenFOAM/matrices/solution/solution.H index 36724bf495..ac1304fedc 100644 --- a/src/OpenFOAM/matrices/solution/solution.H +++ b/src/OpenFOAM/matrices/solution/solution.H @@ -37,6 +37,7 @@ SourceFiles #define solution_H #include "IOdictionary.H" +#include "Switch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,6 +57,9 @@ class solution //- Dictionary of temporary fields to cache dictionary cache_; + //- Switch for the caching mechanism + Switch caching_; + //- Dictionary of relaxation factors for all the fields dictionary relaxationFactors_; diff --git a/src/OpenFOAM/meshes/primitiveShapes/objectHit/objectHit.H b/src/OpenFOAM/meshes/primitiveShapes/objectHit/objectHit.H index fe2bf09865..16e1fc3a22 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/objectHit/objectHit.H +++ b/src/OpenFOAM/meshes/primitiveShapes/objectHit/objectHit.H @@ -76,7 +76,7 @@ public: {} //- Construct from components - objectHit(const bool success, const label& obj) + objectHit(const bool success, const label obj) : hit_(success), hitObject_(obj) @@ -111,7 +111,7 @@ public: { return ((a.hit_ == b.hit_) && (a.hitObject_ == b.hitObject_)); } - + friend bool operator!=(const objectHit& a, const objectHit& b) { return (!(a == b)); diff --git a/src/OpenFOAM/primitives/hashes/Hash/Hash.H b/src/OpenFOAM/primitives/hashes/Hash/Hash.H index dd16517dfe..b998daea1b 100644 --- a/src/OpenFOAM/primitives/hashes/Hash/Hash.H +++ b/src/OpenFOAM/primitives/hashes/Hash/Hash.H @@ -107,7 +107,7 @@ public: //- Incrementally hash a label. // This will necessarily return a different value than the // non-incremental version. - unsigned operator()(const label& p, unsigned seed) const + unsigned operator()(const label p, unsigned seed) const { return Hasher(&p, sizeof(label), seed); } @@ -115,11 +115,10 @@ public: //- Return the unsigned representation of a label. // This helps if people have relied on the hash value corresponding to // the natural order. - unsigned operator()(const label& p) const + unsigned operator()(const label p) const { return p; } - }; diff --git a/src/OpenFOAM/primitives/random/Random.C b/src/OpenFOAM/primitives/random/Random.C index 848b3a5547..570817e692 100644 --- a/src/OpenFOAM/primitives/random/Random.C +++ b/src/OpenFOAM/primitives/random/Random.C @@ -47,8 +47,7 @@ namespace Foam // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -// construct given seed -Random::Random(const label& seed) +Random::Random(const label seed) { if (seed > 1) { diff --git a/src/OpenFOAM/primitives/random/Random.H b/src/OpenFOAM/primitives/random/Random.H index f611f90600..2339e607b5 100644 --- a/src/OpenFOAM/primitives/random/Random.H +++ b/src/OpenFOAM/primitives/random/Random.H @@ -61,7 +61,7 @@ public: // Constructors //- Construct given seed - Random(const label&); + Random(const label); // Member functions @@ -70,14 +70,19 @@ public: //- scalar [0..1] (so including 0,1) scalar scalar01(); + //- vector with every component scalar01 vector vector01(); + //- sphericalTensor with every component scalar01 sphericalTensor sphericalTensor01(); + //- symmTensor with every component scalar01 symmTensor symmTensor01(); + //- tensor with every component scalar01 tensor tensor01(); + //- label [lower..upper] label integer(const label lower, const label upper); diff --git a/src/conversion/ensight/file/ensightFile.C b/src/conversion/ensight/file/ensightFile.C index 8cb28f8c5e..095d2659f8 100644 --- a/src/conversion/ensight/file/ensightFile.C +++ b/src/conversion/ensight/file/ensightFile.C @@ -74,7 +74,7 @@ bool Foam::ensightFile::allowUndef(bool value) } -Foam::scalar Foam::ensightFile::undefValue(const scalar& value) +Foam::scalar Foam::ensightFile::undefValue(const scalar value) { // enable its use too allowUndef_ = true; @@ -133,7 +133,7 @@ Foam::Ostream& Foam::ensightFile::write(const string& value) } -Foam::Ostream& Foam::ensightFile::write(const label& value) +Foam::Ostream& Foam::ensightFile::write(const label value) { if (format() == IOstream::BINARY) { @@ -157,7 +157,7 @@ Foam::Ostream& Foam::ensightFile::write(const label& value) Foam::Ostream& Foam::ensightFile::write ( - const label& value, + const label value, const label fieldWidth ) { @@ -181,7 +181,7 @@ Foam::Ostream& Foam::ensightFile::write } -Foam::Ostream& Foam::ensightFile::write(const scalar& value) +Foam::Ostream& Foam::ensightFile::write(const scalar value) { if (format() == IOstream::BINARY) { diff --git a/src/conversion/ensight/file/ensightFile.H b/src/conversion/ensight/file/ensightFile.H index 1fa91f8561..ca62114160 100644 --- a/src/conversion/ensight/file/ensightFile.H +++ b/src/conversion/ensight/file/ensightFile.H @@ -103,7 +103,7 @@ public: //- Assign the value to represent undef in the results // Returns the previous value // NB: do not use values larger than floatScalarVGREAT - static scalar undefValue(const scalar&); + static scalar undefValue(const scalar); // Output @@ -124,13 +124,13 @@ public: Ostream& write(const string& value); //- write integer as "%10d" or as binary - Ostream& write(const label& value); + Ostream& write(const label value); //- write integer with specified width or as binary - Ostream& write(const label& value, const label fieldWidth); + Ostream& write(const label value, const label fieldWidth); //- write float as "%12.5e" or as binary - Ostream& write(const scalar& value); + Ostream& write(const scalar value); //- Add carriage return to ascii stream void newline(); diff --git a/src/conversion/meshTables/cellTable.C b/src/conversion/meshTables/cellTable.C index 6369f98d9d..a07cbaf96d 100644 --- a/src/conversion/meshTables/cellTable.C +++ b/src/conversion/meshTables/cellTable.C @@ -22,8 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - \*---------------------------------------------------------------------------*/ #include "cellTable.H" @@ -81,7 +79,7 @@ void Foam::cellTable::addDefaults() void Foam::cellTable::setEntry ( - const label& id, + const label id, const word& keyWord, const word& value ) @@ -192,7 +190,7 @@ Foam::Map Foam::cellTable::names } -Foam::word Foam::cellTable::name(const label& id) const +Foam::word Foam::cellTable::name(const label id) const { word theName("cellTable_" + Foam::name(id)); @@ -289,19 +287,19 @@ Foam::Map Foam::cellTable::shells() const -void Foam::cellTable::setMaterial(const label& id, const word& matlType) +void Foam::cellTable::setMaterial(const label id, const word& matlType) { setEntry(id, "MaterialType", matlType); } -void Foam::cellTable::setName(const label& id, const word& name) +void Foam::cellTable::setName(const label id, const word& name) { setEntry(id, "Label", name); } -void Foam::cellTable::setName(const label& id) +void Foam::cellTable::setName(const label id) { iterator iter = find(id); diff --git a/src/conversion/meshTables/cellTable.H b/src/conversion/meshTables/cellTable.H index 4d0079f032..ff8c1fafb6 100644 --- a/src/conversion/meshTables/cellTable.H +++ b/src/conversion/meshTables/cellTable.H @@ -96,7 +96,7 @@ class cellTable //- Add required entries - MaterialType void addDefaults(); - void setEntry(const label& id, const word& keyWord, const word& value); + void setEntry(const label id, const word& keyWord, const word& value); //- Disallow default bitwise copy construct cellTable(const cellTable&); @@ -133,7 +133,7 @@ public: //- Return the name corresponding to id // returns cellTable_ID if not otherwise defined - word name(const label& id) const; + word name(const label id) const; //- Return a Map of (id => name) Map names() const; @@ -157,13 +157,13 @@ public: Map materialTypes() const; //- Assign material Type - void setMaterial(const label&, const word&); + void setMaterial(const label, const word&); //- Assign name - void setName(const label&, const word&); + void setName(const label, const word&); //- Assign default name if not already set - void setName(const label&); + void setName(const label); //- Read constant/cellTable void readDict diff --git a/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C b/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C index 7820bcd70b..2be5111187 100644 --- a/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C +++ b/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C @@ -1536,7 +1536,7 @@ void Foam::faceCoupleInfo::perfectPointMatch FatalErrorIn ( "faceCoupleInfo::perfectPointMatch" - "(const scalar&, const bool)" + "(const scalar, const bool)" ) << "Did not match all of the master faces to the slave faces" << endl << "This usually means that the slave patch and master patch" diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C index 926f2f4913..f338c6cf06 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C @@ -55,7 +55,7 @@ namespace Foam class ifEqEqOp { public: - void operator()(label& x, const label& y) const + void operator()(label x, const label y) const { x = (x==y) ? x : value; } diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 7ecbf878a6..c387ac994d 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -285,6 +285,7 @@ $(divSchemes)/gaussDivScheme/gaussDivSchemes.C gradSchemes = finiteVolume/gradSchemes $(gradSchemes)/gradScheme/gradSchemes.C $(gradSchemes)/gaussGrad/gaussGrads.C + $(gradSchemes)/leastSquaresGrad/leastSquaresVectors.C $(gradSchemes)/leastSquaresGrad/leastSquaresGrads.C $(gradSchemes)/extendedLeastSquaresGrad/extendedLeastSquaresVectors.C diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/convectionScheme/convectionScheme.H b/src/finiteVolume/finiteVolume/convectionSchemes/convectionScheme/convectionScheme.H index c1e46a9e10..25dcbeb130 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/convectionScheme/convectionScheme.H +++ b/src/finiteVolume/finiteVolume/convectionSchemes/convectionScheme/convectionScheme.H @@ -177,7 +177,7 @@ public: virtual tmp > fvmDiv ( const surfaceScalarField&, - GeometricField& + const GeometricField& ) const = 0; virtual tmp > fvcDiv diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C index a219d80281..e2077d75ef 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C +++ b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C @@ -69,7 +69,7 @@ tmp > gaussConvectionScheme::fvmDiv ( const surfaceScalarField& faceFlux, - GeometricField& vf + const GeometricField& vf ) const { tmp tweights = tinterpScheme_().weights(vf); @@ -89,9 +89,9 @@ gaussConvectionScheme::fvmDiv fvm.upper() = fvm.lower() + faceFlux.internalField(); fvm.negSumDiag(); - forAll(fvm.psi().boundaryField(), patchI) + forAll(vf.boundaryField(), patchI) { - const fvPatchField& psf = fvm.psi().boundaryField()[patchI]; + const fvPatchField& psf = vf.boundaryField()[patchI]; const fvsPatchScalarField& patchFlux = faceFlux.boundaryField()[patchI]; const fvsPatchScalarField& pw = weights.boundaryField()[patchI]; diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H index 7a4e5da155..8202f270dc 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H +++ b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H @@ -124,7 +124,7 @@ public: tmp > fvmDiv ( const surfaceScalarField&, - GeometricField& + const GeometricField& ) const; tmp > fvcDiv diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.C b/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.C index d147d461ee..61cbba5ceb 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.C +++ b/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.C @@ -22,8 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - \*---------------------------------------------------------------------------*/ #include "multivariateGaussConvectionScheme.H" @@ -81,7 +79,7 @@ tmp > multivariateGaussConvectionScheme::fvmDiv ( const surfaceScalarField& faceFlux, - GeometricField& vf + const GeometricField& vf ) const { return gaussConvectionScheme diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.H b/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.H index b8ccb25ed5..419628ddfa 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.H +++ b/src/finiteVolume/finiteVolume/convectionSchemes/multivariateGaussConvectionScheme/multivariateGaussConvectionScheme.H @@ -114,7 +114,7 @@ public: tmp > fvmDiv ( const surfaceScalarField&, - GeometricField& + const GeometricField& ) const; tmp > fvcDiv diff --git a/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.C b/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.C index abc203a73b..0285084dff 100644 --- a/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.C +++ b/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "EulerD2dt2Scheme.H" @@ -181,7 +181,7 @@ EulerD2dt2Scheme::fvcD2dt2 coefft *(rho.boundaryField() + rho.oldTime().boundaryField()) *vf.boundaryField() - + - ( coefft *( @@ -232,7 +232,7 @@ template tmp > EulerD2dt2Scheme::fvmD2dt2 ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -292,7 +292,7 @@ tmp > EulerD2dt2Scheme::fvmD2dt2 ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -353,7 +353,7 @@ tmp > EulerD2dt2Scheme::fvmD2dt2 ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm diff --git a/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.H b/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.H index bca75562ed..0823f225dc 100644 --- a/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.H +++ b/src/finiteVolume/finiteVolume/d2dt2Schemes/EulerD2dt2Scheme/EulerD2dt2Scheme.H @@ -109,19 +109,19 @@ public: tmp > fvmD2dt2 ( - GeometricField& + const GeometricField& ); tmp > fvmD2dt2 ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmD2dt2 ( const volScalarField&, - GeometricField& + const GeometricField& ); }; diff --git a/src/finiteVolume/finiteVolume/d2dt2Schemes/d2dt2Scheme/d2dt2Scheme.H b/src/finiteVolume/finiteVolume/d2dt2Schemes/d2dt2Scheme/d2dt2Scheme.H index 9e5668ecf3..452373b501 100644 --- a/src/finiteVolume/finiteVolume/d2dt2Schemes/d2dt2Scheme/d2dt2Scheme.H +++ b/src/finiteVolume/finiteVolume/d2dt2Schemes/d2dt2Scheme/d2dt2Scheme.H @@ -153,19 +153,19 @@ public: virtual tmp > fvmD2dt2 ( - GeometricField& + const GeometricField& ) = 0; virtual tmp > fvmD2dt2 ( const dimensionedScalar&, - GeometricField& + const GeometricField& ) = 0; virtual tmp > fvmD2dt2 ( const volScalarField&, - GeometricField& + const GeometricField& ) = 0; }; diff --git a/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.C b/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.C index 121df11087..9d810c401c 100644 --- a/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.C +++ b/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "steadyStateD2dt2Scheme.H" @@ -107,7 +107,7 @@ template tmp > steadyStateD2dt2Scheme::fvmD2dt2 ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -128,7 +128,7 @@ tmp > steadyStateD2dt2Scheme::fvmD2dt2 ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -149,7 +149,7 @@ tmp > steadyStateD2dt2Scheme::fvmD2dt2 ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm diff --git a/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.H b/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.H index 004fb22a5e..9b9327ceee 100644 --- a/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.H +++ b/src/finiteVolume/finiteVolume/d2dt2Schemes/steadyStateD2dt2Scheme/steadyStateD2dt2Scheme.H @@ -108,19 +108,19 @@ public: tmp > fvmD2dt2 ( - GeometricField& + const GeometricField& ); tmp > fvmD2dt2 ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmD2dt2 ( const volScalarField&, - GeometricField& + const GeometricField& ); }; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C index 6928e20a2e..a63a644427 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "CoEulerDdtScheme.H" @@ -69,10 +69,10 @@ tmp CoEulerDdtScheme::CorDeltaT() const forAll(owner, faceI) { - corDeltaT[owner[faceI]] = + corDeltaT[owner[faceI]] = max(corDeltaT[owner[faceI]], cofrDeltaT[faceI]); - corDeltaT[neighbour[faceI]] = + corDeltaT[neighbour[faceI]] = max(corDeltaT[neighbour[faceI]], cofrDeltaT[faceI]); } @@ -127,7 +127,7 @@ tmp CoEulerDdtScheme::CofrDeltaT() const const volScalarField& rho = static_cast(mesh()) .lookupObject(rhoName_).oldTime(); - + surfaceScalarField Co ( mesh().surfaceInterpolation::deltaCoeffs() @@ -369,7 +369,7 @@ template tmp > CoEulerDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -386,7 +386,7 @@ CoEulerDdtScheme::fvmDdt scalarField rDeltaT = CorDeltaT()().internalField(); fvm.diag() = rDeltaT*mesh().V(); - + if (mesh().moving()) { fvm.source() = rDeltaT*vf.oldTime().internalField()*mesh().V0(); @@ -405,7 +405,7 @@ tmp > CoEulerDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -421,7 +421,7 @@ CoEulerDdtScheme::fvmDdt scalarField rDeltaT = CorDeltaT()().internalField(); fvm.diag() = rDeltaT*rho.value()*mesh().V(); - + if (mesh().moving()) { fvm.source() = rDeltaT @@ -442,7 +442,7 @@ tmp > CoEulerDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -588,7 +588,7 @@ CoEulerDdtScheme::fvcDdtPhiCorr ) ); } - else if + else if ( U.dimensions() == dimVelocity && phi.dimensions() == dimDensity*dimVelocity*dimArea @@ -617,7 +617,7 @@ CoEulerDdtScheme::fvcDdtPhiCorr ) ); } - else if + else if ( U.dimensions() == dimDensity*dimVelocity && phi.dimensions() == dimDensity*dimVelocity*dimArea diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H index f2b54169ed..65cd320d2d 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H @@ -142,19 +142,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C index 027f0a2b30..172bea60aa 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C @@ -625,7 +625,7 @@ template tmp > CrankNicholsonDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { DDt0Field >& ddt0 = @@ -709,7 +709,7 @@ tmp > CrankNicholsonDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { DDt0Field >& ddt0 = @@ -791,7 +791,7 @@ tmp > CrankNicholsonDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { DDt0Field >& ddt0 = diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.H index 87ca9a086d..d3177f6a95 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.H @@ -90,7 +90,7 @@ class CrankNicholsonDdtScheme //- Return the start-time index label startTimeIndex() const; - + //- Cast to the underlying GeoField GeoField& operator()(); @@ -213,19 +213,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C index 5b43623c61..91e4cb403a 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C @@ -262,7 +262,7 @@ template tmp > EulerDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -298,7 +298,7 @@ tmp > EulerDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -335,7 +335,7 @@ tmp > EulerDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H index b06ef32761..3d38050955 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H @@ -120,19 +120,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C index a06e30e725..4906f63567 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "SLTSDdtScheme.H" @@ -369,7 +369,7 @@ template tmp > SLTSDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -388,7 +388,7 @@ SLTSDdtScheme::fvmDdt Info<< "max/min rDeltaT " << max(rDeltaT) << " " << min(rDeltaT) << endl; fvm.diag() = rDeltaT*mesh().V(); - + if (mesh().moving()) { fvm.source() = rDeltaT*vf.oldTime().internalField()*mesh().V0(); @@ -407,7 +407,7 @@ tmp > SLTSDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -423,7 +423,7 @@ SLTSDdtScheme::fvmDdt scalarField rDeltaT = SLrDeltaT()().internalField(); fvm.diag() = rDeltaT*rho.value()*mesh().V(); - + if (mesh().moving()) { fvm.source() = rDeltaT @@ -444,7 +444,7 @@ tmp > SLTSDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -590,7 +590,7 @@ SLTSDdtScheme::fvcDdtPhiCorr ) ); } - else if + else if ( U.dimensions() == dimVelocity && phi.dimensions() == dimDensity*dimVelocity*dimArea @@ -619,7 +619,7 @@ SLTSDdtScheme::fvcDdtPhiCorr ) ); } - else if + else if ( U.dimensions() == dimDensity*dimVelocity && phi.dimensions() == dimDensity*dimVelocity*dimArea diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H index 850f358299..f300297e6c 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H @@ -143,19 +143,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C index 5b55f27a1e..6051903a9c 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C @@ -361,7 +361,7 @@ template tmp > backwardDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -413,7 +413,7 @@ tmp > backwardDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -464,7 +464,7 @@ tmp > backwardDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H index 374d05031a..7aceb79c89 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H @@ -131,19 +131,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C index c7b8d49866..236f66cc29 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "boundedBackwardDdtScheme.H" @@ -413,7 +413,7 @@ boundedBackwardDdtScheme::fvcDdt tmp boundedBackwardDdtScheme::fvmDdt ( - volScalarField& vf + const volScalarField& vf ) { tmp tfvm @@ -484,7 +484,7 @@ tmp boundedBackwardDdtScheme::fvmDdt ( const dimensionedScalar& rho, - volScalarField& vf + const volScalarField& vf ) { tmp tfvm @@ -554,7 +554,7 @@ tmp boundedBackwardDdtScheme::fvmDdt ( const volScalarField& rho, - volScalarField& vf + const volScalarField& vf ) { tmp tfvm diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.H index 7bff042a75..f1b4121f6e 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtScheme.H @@ -142,19 +142,19 @@ public: tmp fvmDdt ( - volScalarField& + const volScalarField& ); tmp fvmDdt ( const dimensionedScalar&, - volScalarField& + const volScalarField& ); tmp fvmDdt ( const volScalarField&, - volScalarField& + const volScalarField& ); tmp fvcDdtPhiCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C index 666cb2be3b..67a1d1f69c 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "boundedBackwardDdtScheme.H" diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H index 31f8fa090d..e454e9409a 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H @@ -164,19 +164,19 @@ public: virtual tmp > fvmDdt ( - GeometricField& + const GeometricField& ) = 0; virtual tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ) = 0; virtual tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ) = 0; diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C index 7bd7b6f8a8..3b5736adb8 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "steadyStateDdtScheme.H" @@ -162,7 +162,7 @@ template tmp > steadyStateDdtScheme::fvmDdt ( - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -183,7 +183,7 @@ tmp > steadyStateDdtScheme::fvmDdt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm @@ -204,7 +204,7 @@ tmp > steadyStateDdtScheme::fvmDdt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H index 54208441b4..0af9bb66db 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H @@ -119,19 +119,19 @@ public: tmp > fvmDdt ( - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); tmp > fvmDdt ( const volScalarField&, - GeometricField& + const GeometricField& ); typedef typename ddtScheme::fluxFieldType fluxFieldType; diff --git a/src/finiteVolume/finiteVolume/fvc/fvcGrad.C b/src/finiteVolume/finiteVolume/fvc/fvcGrad.C index 9d61a45e40..9f5c2bd98f 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcGrad.C +++ b/src/finiteVolume/finiteVolume/fvc/fvcGrad.C @@ -54,7 +54,7 @@ grad const GeometricField& ssf ) { - return fv::gaussGrad::grad(ssf); + return fv::gaussGrad::gradf(ssf, "grad(" + ssf.name() + ')'); } @@ -99,7 +99,7 @@ grad ( vf.mesh(), vf.mesh().gradScheme(name) - )().grad(vf); + )().grad(vf, name); } diff --git a/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.C b/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.C index 4df081cd07..81f37cd099 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - - \*---------------------------------------------------------------------------*/ #include "volFields.H" @@ -48,7 +45,7 @@ template tmp > d2dt2 ( - GeometricField& vf + const GeometricField& vf ) { return fv::d2dt2Scheme::New @@ -64,7 +61,7 @@ tmp > d2dt2 ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { return fv::d2dt2Scheme::New @@ -80,7 +77,7 @@ tmp > d2dt2 ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { return fv::d2dt2Scheme::New diff --git a/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.H b/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.H index b322391ade..3d7e2a716b 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmD2dt2.H @@ -54,20 +54,20 @@ namespace fvm tmp > d2dt2 ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); template tmp > d2dt2 ( - GeometricField& + const GeometricField& ); template tmp > d2dt2 ( const volScalarField&, - GeometricField& + const GeometricField& ); } diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDdt.C b/src/finiteVolume/finiteVolume/fvm/fvmDdt.C index c2e3e976af..d7610206d0 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDdt.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmDdt.C @@ -45,7 +45,7 @@ template tmp > ddt ( - GeometricField& vf + const GeometricField& vf ) { return fv::ddtScheme::New @@ -61,7 +61,7 @@ tmp > ddt ( const oneField&, - GeometricField& vf + const GeometricField& vf ) { return ddt(vf); @@ -73,7 +73,7 @@ tmp > ddt ( const dimensionedScalar& rho, - GeometricField& vf + const GeometricField& vf ) { return fv::ddtScheme::New @@ -89,7 +89,7 @@ tmp > ddt ( const volScalarField& rho, - GeometricField& vf + const GeometricField& vf ) { return fv::ddtScheme::New diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDdt.H b/src/finiteVolume/finiteVolume/fvm/fvmDdt.H index 5472f91f37..2b8124e559 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDdt.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmDdt.H @@ -54,28 +54,28 @@ namespace fvm template tmp > ddt ( - GeometricField& + const GeometricField& ); template tmp > ddt ( const oneField&, - GeometricField& + const GeometricField& ); template tmp > ddt ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); template tmp > ddt ( const volScalarField&, - GeometricField& + const GeometricField& ); } diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDiv.C b/src/finiteVolume/finiteVolume/fvm/fvmDiv.C index 25af21ef2a..2cc8d0e31f 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDiv.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmDiv.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - - \*---------------------------------------------------------------------------*/ #include "fvmDiv.H" @@ -49,7 +46,7 @@ tmp > div ( const surfaceScalarField& flux, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -66,7 +63,7 @@ tmp > div ( const tmp& tflux, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -81,7 +78,7 @@ tmp > div ( const surfaceScalarField& flux, - GeometricField& vf + const GeometricField& vf ) { return fvm::div(flux, vf, "div("+flux.name()+','+vf.name()+')'); @@ -92,7 +89,7 @@ tmp > div ( const tmp& tflux, - GeometricField& vf + const GeometricField& vf ) { tmp > Div(fvm::div(tflux(), vf)); diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDiv.H b/src/finiteVolume/finiteVolume/fvm/fvmDiv.H index c15fc72dec..9e45a883da 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDiv.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmDiv.H @@ -56,7 +56,7 @@ namespace fvm tmp > div ( const surfaceScalarField&, - GeometricField&, + const GeometricField&, const word& name ); @@ -64,7 +64,7 @@ namespace fvm tmp > div ( const tmp&, - GeometricField&, + const GeometricField&, const word& name ); @@ -73,14 +73,14 @@ namespace fvm tmp > div ( const surfaceScalarField&, - GeometricField& + const GeometricField& ); template tmp > div ( const tmp&, - GeometricField& + const GeometricField& ); } diff --git a/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.C b/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.C index 4a60eadd3d..501456da3c 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.C @@ -45,7 +45,7 @@ template tmp > laplacian ( - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -70,7 +70,7 @@ template tmp > laplacian ( - GeometricField& vf + const GeometricField& vf ) { surfaceScalarField Gamma @@ -100,7 +100,7 @@ tmp > laplacian ( const zeroField&, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -116,7 +116,7 @@ tmp > laplacian ( const zeroField&, - GeometricField& vf + const GeometricField& vf ) { return tmp > @@ -131,7 +131,7 @@ tmp > laplacian ( const oneField&, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -144,7 +144,7 @@ tmp > laplacian ( const oneField&, - GeometricField& vf + const GeometricField& vf ) { return fvm::laplacian(vf); @@ -156,11 +156,11 @@ tmp > laplacian ( const dimensioned& gamma, - GeometricField& vf, + const GeometricField& vf, const word& name ) { - GeometricField Gamma + const GeometricField Gamma ( IOobject ( @@ -182,10 +182,10 @@ tmp > laplacian ( const dimensioned& gamma, - GeometricField& vf + const GeometricField& vf ) { - GeometricField Gamma + const GeometricField Gamma ( IOobject ( @@ -209,7 +209,7 @@ tmp > laplacian ( const GeometricField& gamma, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -226,7 +226,7 @@ tmp > laplacian ( const tmp >& tgamma, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -241,7 +241,7 @@ tmp > laplacian ( const GeometricField& gamma, - GeometricField& vf + const GeometricField& vf ) { return fvm::laplacian @@ -258,7 +258,7 @@ tmp > laplacian ( const tmp >& tgamma, - GeometricField& vf + const GeometricField& vf ) { tmp > Laplacian(fvm::laplacian(tgamma(), vf)); @@ -274,7 +274,7 @@ tmp > laplacian ( const GeometricField& gamma, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -291,7 +291,7 @@ tmp > laplacian ( const tmp >& tgamma, - GeometricField& vf, + const GeometricField& vf, const word& name ) { @@ -306,7 +306,7 @@ tmp > laplacian ( const GeometricField& gamma, - GeometricField& vf + const GeometricField& vf ) { return fvm::laplacian @@ -323,7 +323,7 @@ tmp > laplacian ( const tmp >& tGamma, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm(fvm::laplacian(tGamma(), vf)); diff --git a/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.H b/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.H index cc06ec5008..c41774361f 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.H @@ -55,14 +55,14 @@ namespace fvm template tmp > laplacian ( - GeometricField&, + const GeometricField&, const word& ); template tmp > laplacian ( - GeometricField& + const GeometricField& ); @@ -70,7 +70,7 @@ namespace fvm tmp > laplacian ( const zeroField&, - GeometricField&, + const GeometricField&, const word& ); @@ -78,7 +78,7 @@ namespace fvm tmp > laplacian ( const zeroField&, - GeometricField& + const GeometricField& ); @@ -86,7 +86,7 @@ namespace fvm tmp > laplacian ( const oneField&, - GeometricField&, + const GeometricField&, const word& ); @@ -94,7 +94,7 @@ namespace fvm tmp > laplacian ( const oneField&, - GeometricField& + const GeometricField& ); @@ -102,7 +102,7 @@ namespace fvm tmp > laplacian ( const dimensioned&, - GeometricField&, + const GeometricField&, const word& ); @@ -110,7 +110,7 @@ namespace fvm tmp > laplacian ( const dimensioned&, - GeometricField& + const GeometricField& ); @@ -118,7 +118,7 @@ namespace fvm tmp > laplacian ( const GeometricField&, - GeometricField&, + const GeometricField&, const word& ); @@ -126,7 +126,7 @@ namespace fvm tmp > laplacian ( const GeometricField&, - GeometricField& + const GeometricField& ); @@ -134,7 +134,7 @@ namespace fvm tmp > laplacian ( const tmp >&, - GeometricField&, + const GeometricField&, const word& ); @@ -142,7 +142,7 @@ namespace fvm tmp > laplacian ( const tmp >&, - GeometricField& + const GeometricField& ); @@ -150,7 +150,7 @@ namespace fvm tmp > laplacian ( const GeometricField&, - GeometricField&, + const GeometricField&, const word& ); @@ -158,7 +158,7 @@ namespace fvm tmp > laplacian ( const tmp >&, - GeometricField&, + const GeometricField&, const word& ); @@ -166,14 +166,14 @@ namespace fvm tmp > laplacian ( const GeometricField&, - GeometricField& + const GeometricField& ); template tmp > laplacian ( const tmp >&, - GeometricField& + const GeometricField& ); } diff --git a/src/finiteVolume/finiteVolume/fvm/fvmSup.C b/src/finiteVolume/finiteVolume/fvm/fvmSup.C index 67c18d3c59..99e2d14746 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmSup.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmSup.C @@ -35,7 +35,7 @@ Foam::tmp > Foam::fvm::Su ( const DimensionedField& su, - GeometricField& vf + const GeometricField& vf ) { const fvMesh& mesh = vf.mesh(); @@ -60,7 +60,7 @@ Foam::tmp > Foam::fvm::Su ( const tmp >& tsu, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::Su(tsu(), vf); @@ -73,7 +73,7 @@ Foam::tmp > Foam::fvm::Su ( const tmp >& tsu, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::Su(tsu(), vf); @@ -86,7 +86,7 @@ Foam::zeroField Foam::fvm::Su ( const zeroField&, - GeometricField& vf + const GeometricField& vf ) { return zeroField(); @@ -98,7 +98,7 @@ Foam::tmp > Foam::fvm::Sp ( const DimensionedField& sp, - GeometricField& vf + const GeometricField& vf ) { const fvMesh& mesh = vf.mesh(); @@ -123,7 +123,7 @@ Foam::tmp > Foam::fvm::Sp ( const tmp >& tsp, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::Sp(tsp(), vf); @@ -136,7 +136,7 @@ Foam::tmp > Foam::fvm::Sp ( const tmp& tsp, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::Sp(tsp(), vf); @@ -150,7 +150,7 @@ Foam::tmp > Foam::fvm::Sp ( const dimensionedScalar& sp, - GeometricField& vf + const GeometricField& vf ) { const fvMesh& mesh = vf.mesh(); @@ -175,7 +175,7 @@ Foam::zeroField Foam::fvm::Sp ( const zeroField&, - GeometricField& + const GeometricField& ) { return zeroField(); @@ -187,7 +187,7 @@ Foam::tmp > Foam::fvm::SuSp ( const DimensionedField& susp, - GeometricField& vf + const GeometricField& vf ) { const fvMesh& mesh = vf.mesh(); @@ -215,7 +215,7 @@ Foam::tmp > Foam::fvm::SuSp ( const tmp >& tsusp, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::SuSp(tsusp(), vf); @@ -228,7 +228,7 @@ Foam::tmp > Foam::fvm::SuSp ( const tmp& tsusp, - GeometricField& vf + const GeometricField& vf ) { tmp > tfvm = fvm::SuSp(tsusp(), vf); @@ -241,7 +241,7 @@ Foam::zeroField Foam::fvm::SuSp ( const zeroField&, - GeometricField& vf + const GeometricField& vf ) { return zeroField(); diff --git a/src/finiteVolume/finiteVolume/fvm/fvmSup.H b/src/finiteVolume/finiteVolume/fvm/fvmSup.H index 425a57c6e3..a5662c1733 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmSup.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmSup.H @@ -56,28 +56,28 @@ namespace fvm tmp > Su ( const DimensionedField&, - GeometricField& + const GeometricField& ); template tmp > Su ( const tmp >&, - GeometricField& + const GeometricField& ); template tmp > Su ( const tmp >&, - GeometricField& + const GeometricField& ); template zeroField Su ( const zeroField&, - GeometricField& + const GeometricField& ); @@ -87,21 +87,21 @@ namespace fvm tmp > Sp ( const DimensionedField&, - GeometricField& + const GeometricField& ); template tmp > Sp ( const tmp >&, - GeometricField& + const GeometricField& ); template tmp > Sp ( const tmp&, - GeometricField& + const GeometricField& ); @@ -109,7 +109,7 @@ namespace fvm tmp > Sp ( const dimensionedScalar&, - GeometricField& + const GeometricField& ); @@ -117,7 +117,7 @@ namespace fvm zeroField Sp ( const zeroField&, - GeometricField& + const GeometricField& ); @@ -127,28 +127,28 @@ namespace fvm tmp > SuSp ( const DimensionedField&, - GeometricField& + const GeometricField& ); template tmp > SuSp ( const tmp >&, - GeometricField& + const GeometricField& ); template tmp > SuSp ( const tmp&, - GeometricField& + const GeometricField& ); template zeroField SuSp ( const zeroField&, - GeometricField& + const GeometricField& ); } diff --git a/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.C b/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.C index 24b7e8bae0..797e0f5b77 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "extendedLeastSquaresGrad.H" @@ -35,27 +35,20 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - template -tmp +Foam::tmp < - GeometricField + Foam::GeometricField < - typename outerProduct::type, fvPatchField, volMesh + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh > > -extendedLeastSquaresGrad::grad +Foam::fv::extendedLeastSquaresGrad::calcGrad ( - const GeometricField& vsf + const GeometricField& vsf, + const word& name ) const { typedef typename outerProduct::type GradType; @@ -68,7 +61,7 @@ extendedLeastSquaresGrad::grad ( IOobject ( - "grad("+vsf.name()+')', + name, vsf.instance(), mesh, IOobject::NO_READ, @@ -120,7 +113,7 @@ extendedLeastSquaresGrad::grad if (vsf.boundaryField()[patchi].coupled()) { - Field neiVsf = + Field neiVsf = vsf.boundaryField()[patchi].patchNeighbourField(); forAll(neiVsf, patchFaceI) @@ -162,12 +155,4 @@ extendedLeastSquaresGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.H index e8da1ca92f..40003aa703 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/extendedLeastSquaresGrad/extendedLeastSquaresGrad.H @@ -102,13 +102,16 @@ public: // Member Functions - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; diff --git a/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.C b/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.C index f8a4992bd1..c72525e881 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "fourthGrad.H" @@ -35,27 +35,20 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - template -tmp +Foam::tmp < - GeometricField + Foam::GeometricField < - typename outerProduct::type, fvPatchField, volMesh + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh > > -fourthGrad::grad +Foam::fv::fourthGrad::calcGrad ( - const GeometricField& vsf + const GeometricField& vsf, + const word& name ) const { // The fourth-order gradient is calculated in two passes. First, @@ -80,7 +73,7 @@ fourthGrad::grad ( IOobject ( - "grad("+vsf.name()+')', + name, vsf.instance(), mesh, IOobject::NO_READ, @@ -130,7 +123,7 @@ fourthGrad::grad const scalarField& lambdap = lambda.boundaryField()[patchi]; // Build the d-vectors - vectorField pd = + vectorField pd = mesh.Sf().boundaryField()[patchi] /( mesh.magSf().boundaryField()[patchi] @@ -171,12 +164,4 @@ fourthGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.H index 72e2d3b5ad..1698269b3e 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/fourthGrad/fourthGrad.H @@ -83,13 +83,16 @@ public: // Member Functions - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.C b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.C index 57dc262370..b8e06f4c55 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "gaussGrad.H" @@ -29,27 +29,20 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - template -tmp +Foam::tmp < - GeometricField + Foam::GeometricField < - typename outerProduct::type, fvPatchField, volMesh + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh > > -gaussGrad::grad +Foam::fv::gaussGrad::gradf ( - const GeometricField& ssf + const GeometricField& ssf, + const word& name ) { typedef typename outerProduct::type GradType; @@ -62,7 +55,7 @@ gaussGrad::grad ( IOobject ( - "grad("+ssf.name()+')', + name, ssf.instance(), mesh, IOobject::NO_READ, @@ -119,27 +112,29 @@ gaussGrad::grad template -tmp +Foam::tmp < - GeometricField + Foam::GeometricField < - typename outerProduct::type, fvPatchField, volMesh + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh > > -gaussGrad::grad +Foam::fv::gaussGrad::calcGrad ( - const GeometricField& vsf + const GeometricField& vsf, + const word& name ) const { typedef typename outerProduct::type GradType; tmp > tgGrad ( - grad(tinterpScheme_().interpolate(vsf)) + gradf(tinterpScheme_().interpolate(vsf), name) ); GeometricField& gGrad = tgGrad(); - gGrad.rename("grad(" + vsf.name() + ')'); correctBoundaryConditions(vsf, gGrad); return tgGrad; @@ -147,7 +142,7 @@ gaussGrad::grad template -void gaussGrad::correctBoundaryConditions +void Foam::fv::gaussGrad::correctBoundaryConditions ( const GeometricField& vsf, GeometricField @@ -174,12 +169,4 @@ void gaussGrad::correctBoundaryConditions } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.H index 8ddfe1bf7c..4b03d582f0 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.H @@ -89,7 +89,7 @@ public: tinterpScheme_(new linear(mesh)) {} - //- Construct from Istream + //- Construct from mesh and Istream gaussGrad(const fvMesh& mesh, Istream& is) : gradScheme(mesh), @@ -116,31 +116,31 @@ public: // Member Functions - //- Return the gradient of the given field + //- Return the gradient of the given field // calculated using Gauss' theorem on the given surface field static tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > gradf ( - const GeometricField& + const GeometricField&, + const word& name ); - - //- Return the gradient of the given field calculated - // using Gauss' theorem on the interpolated field - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; - //- Correct the boundary values of the gradient using the patchField // snGrad functions static void correctBoundaryConditions diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrads.C index 3aa827351e..2e98e7df2c 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrads.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrads.C @@ -22,8 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - \*---------------------------------------------------------------------------*/ #include "fvMesh.H" diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C index 6d7cc56560..267896603f 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C @@ -22,28 +22,16 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Abstract base class for finite volume calculus gradient schemes. - \*---------------------------------------------------------------------------*/ #include "fv.H" -#include "HashTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ +#include "objectRegistry.H" +#include "solution.H" // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // template -tmp > gradScheme::New +Foam::tmp > Foam::fv::gradScheme::New ( const fvMesh& mesh, Istream& schemeData @@ -51,7 +39,8 @@ tmp > gradScheme::New { if (fv::debug) { - Info<< "gradScheme::New(Istream& schemeData) : " + Info<< "gradScheme::New" + "(const fvMesh& mesh, Istream& schemeData) : " "constructing gradScheme" << endl; } @@ -60,7 +49,8 @@ tmp > gradScheme::New { FatalIOErrorIn ( - "gradScheme::New(Istream& schemeData)", + "gradScheme::New" + "(const fvMesh& mesh, Istream& schemeData)", schemeData ) << "Grad scheme not specified" << endl << endl << "Valid grad schemes are :" << endl @@ -77,7 +67,8 @@ tmp > gradScheme::New { FatalIOErrorIn ( - "gradScheme::New(Istream& schemeData)", + "gradScheme::New" + "(const fvMesh& mesh, Istream& schemeData)", schemeData ) << "unknown grad scheme " << schemeName << endl << endl << "Valid grad schemes are :" << endl @@ -92,16 +83,151 @@ tmp > gradScheme::New // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template -gradScheme::~gradScheme() +Foam::fv::gradScheme::~gradScheme() {} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace fv +namespace Foam +{ + template + inline void cachePrintMessage + ( + const char* message, + const word& name, + const GeometricField& vf + ) + { + if (solution::debug) + { + Info<< "Cache: " << message << token::SPACE << name + << ", " << vf.name() << " event No. " << vf.eventNo() + << endl; + } + } +} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +Foam::tmp +< + Foam::GeometricField + < + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh + > +> +Foam::fv::gradScheme::grad +( + const GeometricField& vsf, + const word& name +) const +{ + typedef typename outerProduct::type GradType; + typedef GeometricField GradFieldType; + + if (!this->mesh().changing() && this->mesh().cache(name)) + { + if (!mesh().objectRegistry::foundObject(name)) + { + cachePrintMessage("Calculating and caching", name, vsf); + tmp tgGrad = calcGrad(vsf, name); + regIOobject::store(tgGrad.ptr()); + } + + cachePrintMessage("Retreiving", name, vsf); + GradFieldType& gGrad = const_cast + ( + mesh().objectRegistry::lookupObject(name) + ); + + if (gGrad.upToDate(vsf)) + { + return gGrad; + } + else + { + cachePrintMessage("Deleting", name, vsf); + gGrad.release(); + delete &gGrad; + + cachePrintMessage("Recalculating", name, vsf); + tmp tgGrad = calcGrad(vsf, name); + + cachePrintMessage("Storing", name, vsf); + regIOobject::store(tgGrad.ptr()); + GradFieldType& gGrad = const_cast + ( + mesh().objectRegistry::lookupObject(name) + ); + + return gGrad; + } + } + else + { + if (mesh().objectRegistry::foundObject(name)) + { + GradFieldType& gGrad = const_cast + ( + mesh().objectRegistry::lookupObject(name) + ); + + if (gGrad.ownedByRegistry()) + { + cachePrintMessage("Deleting", name, vsf); + gGrad.release(); + delete &gGrad; + } + } + + cachePrintMessage("Calculating", name, vsf); + return calcGrad(vsf, name); + } +} + + +template +Foam::tmp +< + Foam::GeometricField + < + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh + > +> +Foam::fv::gradScheme::grad +( + const GeometricField& vsf +) const +{ + return grad(vsf, "grad(" + vsf.name() + ')'); +} + + +template +Foam::tmp +< + Foam::GeometricField + < + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh + > +> +Foam::fv::gradScheme::grad +( + const tmp >& tvsf +) const +{ + typedef typename outerProduct::type GradType; + typedef GeometricField GradFieldType; + + tmp tgrad = grad(tvsf()); + tvsf.clear(); + return tgrad; +} -} // End namespace Foam // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.H b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.H index e338c3dd9e..f1d3fa2262 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.H @@ -114,9 +114,8 @@ public: ); - // Destructor - - virtual ~gradScheme(); + //- Destructor + virtual ~gradScheme(); // Member Functions @@ -127,15 +126,54 @@ public: return mesh_; } - //- Calculate and return the grad of the given field + //- Calculate and return the grad of the given field. + // Used by grad either to recalculate the cached gradient when it is + // out of date with respect to the field or when it is not cached. virtual tmp + < + GeometricField + ::type, fvPatchField, volMesh> + > calcGrad + ( + const GeometricField&, + const word& name + ) const = 0; + + //- Calculate and return the grad of the given field + // which may have been cached + tmp + < + GeometricField + ::type, fvPatchField, volMesh> + > grad + ( + const GeometricField&, + const word& name + ) const; + + //- Calculate and return the grad of the given field + // with the default name + // which may have been cached + tmp < GeometricField ::type, fvPatchField, volMesh> > grad ( const GeometricField& - ) const = 0; + ) const; + + //- Calculate and return the grad of the given field + // with the default name + // which may have been cached + tmp + < + GeometricField + ::type, fvPatchField, volMesh> + > grad + ( + const tmp >& + ) const; }; diff --git a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.C b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.C index 2ccdcebfdd..581962315b 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "leastSquaresGrad.H" @@ -35,27 +35,20 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - template -tmp +Foam::tmp < - GeometricField + Foam::GeometricField < - typename outerProduct::type, fvPatchField, volMesh + typename Foam::outerProduct::type, + Foam::fvPatchField, + Foam::volMesh > > -leastSquaresGrad::grad +Foam::fv::leastSquaresGrad::calcGrad ( - const GeometricField& vsf + const GeometricField& vsf, + const word& name ) const { typedef typename outerProduct::type GradType; @@ -68,7 +61,7 @@ leastSquaresGrad::grad ( IOobject ( - "grad("+vsf.name()+')', + name, vsf.instance(), mesh, IOobject::NO_READ, @@ -116,7 +109,7 @@ leastSquaresGrad::grad if (vsf.boundaryField()[patchi].coupled()) { - Field neiVsf = + Field neiVsf = vsf.boundaryField()[patchi].patchNeighbourField(); forAll(neiVsf, patchFaceI) @@ -147,12 +140,4 @@ leastSquaresGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.H index 90606b83be..efb15a2465 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresGrad.H @@ -89,13 +89,16 @@ public: // Member Functions - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrad.H index 4599902885..22083de571 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrad.H @@ -117,18 +117,82 @@ public: const Type& extrapolate ); - - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; +// * * * * * * * * * * * * Inline Member Function * * * * * * * * * * * * * // + +template<> +inline void cellLimitedGrad::limitFace +( + scalar& limiter, + const scalar& maxDelta, + const scalar& minDelta, + const scalar& extrapolate +) +{ + if (extrapolate > maxDelta + VSMALL) + { + limiter = min(limiter, maxDelta/extrapolate); + } + else if (extrapolate < minDelta - VSMALL) + { + limiter = min(limiter, minDelta/extrapolate); + } +} + + +template +inline void cellLimitedGrad::limitFace +( + Type& limiter, + const Type& maxDelta, + const Type& minDelta, + const Type& extrapolate +) +{ + for(direction cmpt=0; cmpt::limitFace + ( + limiter.component(cmpt), + maxDelta.component(cmpt), + minDelta.component(cmpt), + extrapolate.component(cmpt) + ); + } +} + + +// * * * * * * * * Template Member Function Specialisations * * * * * * * * // + +template<> +tmp cellLimitedGrad::calcGrad +( + const volScalarField& vsf, + const word& name +) const; + + +template<> +tmp cellLimitedGrad::calcGrad +( + const volVectorField& vsf, + const word& name +) const; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C index c4f0bf524a..fbc2b8fba5 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/cellLimitedGrads.C @@ -36,70 +36,25 @@ License namespace Foam { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - namespace fv { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makeFvGradScheme(cellLimitedGrad) + makeFvGradScheme(cellLimitedGrad) +} +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<> -inline void cellLimitedGrad::limitFace +Foam::tmp +Foam::fv::cellLimitedGrad::calcGrad ( - scalar& limiter, - const scalar& maxDelta, - const scalar& minDelta, - const scalar& extrapolate -) -{ - if (extrapolate > maxDelta + VSMALL) - { - limiter = min(limiter, maxDelta/extrapolate); - } - else if (extrapolate < minDelta - VSMALL) - { - limiter = min(limiter, minDelta/extrapolate); - } -} - -template -inline void cellLimitedGrad::limitFace -( - Type& limiter, - const Type& maxDelta, - const Type& minDelta, - const Type& extrapolate -) -{ - for(direction cmpt=0; cmpt::limitFace - ( - limiter.component(cmpt), - maxDelta.component(cmpt), - minDelta.component(cmpt), - extrapolate.component(cmpt) - ); - } -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -template<> -tmp cellLimitedGrad::grad -( - const volScalarField& vsf + const volScalarField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -244,14 +199,16 @@ tmp cellLimitedGrad::grad template<> -tmp cellLimitedGrad::grad +Foam::tmp +Foam::fv::cellLimitedGrad::calcGrad ( - const volVectorField& vsf + const volVectorField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -402,12 +359,4 @@ tmp cellLimitedGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrad.H index 05953638b2..d9b389d0f5 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrad.H @@ -117,13 +117,16 @@ public: const vector& dcf ); - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; @@ -178,6 +181,24 @@ inline void cellMDLimitedGrad::limitFace } +// * * * * * * * * Template Member Function Specialisations * * * * * * * * // + +template<> +tmp cellMDLimitedGrad::calcGrad +( + const volScalarField& vsf, + const word& name +) const; + + +template<> +tmp cellMDLimitedGrad::calcGrad +( + const volVectorField& vsf, + const word& name +) const; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrads.C index 5a35033428..fffc74e97a 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrads.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellMDLimitedGrad/cellMDLimitedGrads.C @@ -36,27 +36,26 @@ License namespace Foam { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - namespace fv { + makeFvGradScheme(cellMDLimitedGrad) +} +} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makeFvGradScheme(cellMDLimitedGrad) // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<> -tmp cellMDLimitedGrad::grad +Foam::tmp +Foam::fv::cellMDLimitedGrad::calcGrad ( - const volScalarField& vsf + const volScalarField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -190,14 +189,16 @@ tmp cellMDLimitedGrad::grad template<> -tmp cellMDLimitedGrad::grad +Foam::tmp +Foam::fv::cellMDLimitedGrad::calcGrad ( - const volVectorField& vsf + const volVectorField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -329,12 +330,4 @@ tmp cellMDLimitedGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrad.H index 8af5298f42..96393c771e 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrad.H @@ -118,17 +118,63 @@ public: // Member Functions - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& - ) const; + const GeometricField& vsf, + const word& name + ) const + { + return grad(vsf); + } }; +// * * * * * * * * * * * * Inline Member Function * * * * * * * * * * * * * // + +template +inline void faceLimitedGrad::limitFace +( + scalar& limiter, + const scalar maxDelta, + const scalar minDelta, + const scalar extrapolate +) const +{ + if (extrapolate > maxDelta + VSMALL) + { + limiter = min(limiter, maxDelta/extrapolate); + } + else if (extrapolate < minDelta - VSMALL) + { + limiter = min(limiter, minDelta/extrapolate); + } +} + + +// * * * * * * * * Template Member Function Specialisations * * * * * * * * // + +template<> +tmp faceLimitedGrad::calcGrad +( + const volScalarField& vsf, + const word& name +) const; + + +template<> +tmp faceLimitedGrad::calcGrad +( + const volVectorField& vsf, + const word& name +) const; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrads.C index afaf398fbc..83c065fa54 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrads.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceLimitedGrad/faceLimitedGrads.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "faceLimitedGrad.H" @@ -36,49 +36,26 @@ License namespace Foam { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - namespace fv { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makeFvGradScheme(faceLimitedGrad) - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -template -inline void faceLimitedGrad::limitFace -( - scalar& limiter, - const scalar maxDelta, - const scalar minDelta, - const scalar extrapolate -) const -{ - if (extrapolate > maxDelta + VSMALL) - { - limiter = min(limiter, maxDelta/extrapolate); - } - else if (extrapolate < minDelta - VSMALL) - { - limiter = min(limiter, minDelta/extrapolate); - } + makeFvGradScheme(faceLimitedGrad) +} } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<> -tmp faceLimitedGrad::grad +Foam::tmp +Foam::fv::faceLimitedGrad::calcGrad ( - const volScalarField& vsf + const volScalarField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -205,14 +182,16 @@ tmp faceLimitedGrad::grad template<> -tmp faceLimitedGrad::grad +Foam::tmp +Foam::fv::faceLimitedGrad::calcGrad ( - const volVectorField& vvf + const volVectorField& vvf, + const word& name ) const { const fvMesh& mesh = vvf.mesh(); - tmp tGrad = basicGradScheme_().grad(vvf); + tmp tGrad = basicGradScheme_().calcGrad(vvf, name); if (k_ < SMALL) { @@ -363,12 +342,4 @@ tmp faceLimitedGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrad.H b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrad.H index f9c826452a..20177019d7 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrad.H +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrad.H @@ -118,17 +118,38 @@ public: // Member Functions - tmp + //- Return the gradient of the given field to the gradScheme::grad + // for optional caching + virtual tmp < GeometricField ::type, fvPatchField, volMesh> - > grad + > calcGrad ( - const GeometricField& + const GeometricField& vsf, + const word& name ) const; }; +// * * * * * * * * Template Member Function Specialisations * * * * * * * * // + +template<> +tmp faceMDLimitedGrad::calcGrad +( + const volScalarField& vsf, + const word& name +) const; + + +template<> +tmp faceMDLimitedGrad::calcGrad +( + const volVectorField& vsf, + const word& name +) const; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrads.C b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrads.C index 27124c4673..87ddd25096 100644 --- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrads.C +++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/faceMDLimitedGrad/faceMDLimitedGrads.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "faceMDLimitedGrad.H" @@ -37,28 +37,25 @@ License namespace Foam { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - namespace fv { + makeFvGradScheme(faceMDLimitedGrad) +} +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeFvGradScheme(faceMDLimitedGrad) - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// FaceLimited scalar gradient template<> -tmp faceMDLimitedGrad::grad +Foam::tmp +Foam::fv::faceMDLimitedGrad::calcGrad ( - const volScalarField& vsf + const volScalarField& vsf, + const word& name ) const { const fvMesh& mesh = vsf.mesh(); - tmp tGrad = basicGradScheme_().grad(vsf); + tmp tGrad = basicGradScheme_().calcGrad(vsf, name); if (k_ < SMALL) { @@ -189,14 +186,16 @@ tmp faceMDLimitedGrad::grad template<> -tmp faceMDLimitedGrad::grad +Foam::tmp +Foam::fv::faceMDLimitedGrad::calcGrad ( - const volVectorField& vvf + const volVectorField& vvf, + const word& name ) const { const fvMesh& mesh = vvf.mesh(); - tmp tGrad = basicGradScheme_().grad(vvf); + tmp tGrad = basicGradScheme_().calcGrad(vvf, name); if (k_ < SMALL) { @@ -327,12 +326,4 @@ tmp faceMDLimitedGrad::grad } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C index 1df55b7e17..b58c2bd41d 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C @@ -47,7 +47,7 @@ tmp > gaussLaplacianScheme::fvmLaplacianUncorrected ( const surfaceScalarField& gammaMagSf, - GeometricField& vf + const GeometricField& vf ) { tmp tdeltaCoeffs = @@ -67,9 +67,9 @@ gaussLaplacianScheme::fvmLaplacianUncorrected fvm.upper() = deltaCoeffs.internalField()*gammaMagSf.internalField(); fvm.negSumDiag(); - forAll(fvm.psi().boundaryField(), patchI) + forAll(vf.boundaryField(), patchI) { - const fvPatchField& psf = fvm.psi().boundaryField()[patchI]; + const fvPatchField& psf = vf.boundaryField()[patchI]; const fvsPatchScalarField& patchGamma = gammaMagSf.boundaryField()[patchI]; @@ -149,7 +149,7 @@ tmp > gaussLaplacianScheme::fvmLaplacian ( const GeometricField& gamma, - GeometricField& vf + const GeometricField& vf ) { const fvMesh& mesh = this->mesh(); diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.H b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.H index a6c3138833..12b33ae0e4 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.H +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.H @@ -62,7 +62,7 @@ class gaussLaplacianScheme tmp > fvmLaplacianUncorrected ( const surfaceScalarField& gammaMagSf, - GeometricField& + const GeometricField& ); tmp > gammaSnGradCorr @@ -126,7 +126,7 @@ public: tmp > fvmLaplacian ( const GeometricField&, - GeometricField& + const GeometricField& ); tmp > fvcLaplacian @@ -146,7 +146,7 @@ template<> \ tmp > gaussLaplacianScheme::fvmLaplacian \ ( \ const GeometricField&, \ - GeometricField& \ + const GeometricField& \ ); \ \ template<> \ diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianSchemes.C b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianSchemes.C index 5dab5ceef0..782f14ea4a 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianSchemes.C +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianSchemes.C @@ -21,7 +21,7 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - + \*---------------------------------------------------------------------------*/ #include "gaussLaplacianScheme.H" @@ -44,7 +44,7 @@ Foam::tmp > \ Foam::fv::gaussLaplacianScheme::fvmLaplacian \ ( \ const GeometricField& gamma, \ - GeometricField& vf \ + const GeometricField& vf \ ) \ { \ const fvMesh& mesh = this->mesh(); \ diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.C b/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.C index eb14f253ad..78ce0bc2c6 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.C +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.C @@ -102,7 +102,7 @@ tmp > laplacianScheme::fvmLaplacian ( const GeometricField& gamma, - GeometricField& vf + const GeometricField& vf ) { return fvmLaplacian(tinterpGammaScheme_().interpolate(gamma)(), vf); diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.H b/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.H index b36d87df9e..4bbe44ed9a 100644 --- a/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.H +++ b/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme/laplacianScheme.H @@ -173,13 +173,13 @@ public: virtual tmp > fvmLaplacian ( const GeometricField&, - GeometricField& + const GeometricField& ) = 0; virtual tmp > fvmLaplacian ( const GeometricField&, - GeometricField& + const GeometricField& ); virtual tmp > fvcLaplacian diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C index 0168bd626a..631d6a9c2f 100644 --- a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C +++ b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Simple central-difference snGrad scheme with non-orthogonal correction. - \*---------------------------------------------------------------------------*/ #include "correctedSnGrad.H" @@ -34,28 +31,44 @@ Description #include "fvcGrad.H" #include "gaussGrad.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace fv -{ - // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template -correctedSnGrad::~correctedSnGrad() +Foam::fv::correctedSnGrad::~correctedSnGrad() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -tmp > -correctedSnGrad::correction +Foam::tmp > +Foam::fv::correctedSnGrad::fullGradCorrection +( + const GeometricField& vf +) const +{ + const fvMesh& mesh = this->mesh(); + + // construct GeometricField + tmp > tssf = + mesh.correctionVectors() + & linear::type>(mesh).interpolate + ( + gradScheme::New + ( + mesh, + mesh.gradScheme(vf.name()) + )().grad(vf, "grad(" + vf.name() + ')') + ); + tssf().rename("snGradCorr(" + vf.name() + ')'); + + return tssf; +} + + +template +Foam::tmp > +Foam::fv::correctedSnGrad::correction ( const GeometricField& vf ) const @@ -89,7 +102,7 @@ correctedSnGrad::correction mesh.correctionVectors() & linear < - typename + typename outerProduct::cmptType>::type >(mesh).interpolate ( @@ -108,12 +121,4 @@ correctedSnGrad::correction } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace fv - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H index 2358867066..3eaa42bfdf 100644 --- a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H +++ b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H @@ -108,12 +108,36 @@ public: } //- Return the explicit correction to the correctedSnGrad - // for the given field + // for the given field using the gradient of the field + tmp > + fullGradCorrection + ( + const GeometricField& + ) const; + + //- Return the explicit correction to the correctedSnGrad + // for the given field using the gradients of the field components virtual tmp > correction(const GeometricField&) const; }; +// * * * * * * * * Template Member Function Specialisations * * * * * * * * // + +template<> +tmp correctedSnGrad::correction +( + const volScalarField& vsf +) const; + + +template<> +tmp correctedSnGrad::correction +( + const volVectorField& vvf +) const; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrads.C index b416a806fa..8377ba7ef4 100644 --- a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrads.C +++ b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrads.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Simple central-difference snGrad scheme with non-orthogonal correction. - \*---------------------------------------------------------------------------*/ #include "correctedSnGrad.H" @@ -40,4 +37,27 @@ namespace fv } } + +template<> +Foam::tmp +Foam::fv::correctedSnGrad::correction +( + const volScalarField& vsf +) const +{ + return fullGradCorrection(vsf); +} + + +template<> +Foam::tmp +Foam::fv::correctedSnGrad::correction +( + const volVectorField& vvf +) const +{ + return fullGradCorrection(vvf); +} + + // ************************************************************************* // diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C index 1e49de4683..74b4282638 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C @@ -183,7 +183,7 @@ void Foam::fvMatrix::addBoundarySource template Foam::fvMatrix::fvMatrix ( - GeometricField& psi, + const GeometricField& psi, const dimensionSet& ds ) : @@ -227,7 +227,13 @@ Foam::fvMatrix::fvMatrix ); } - psi_.boundaryField().updateCoeffs(); + // Update the boundary coefficients of psi without changing it's event No. + GeometricField& psiRef = + const_cast&>(psi_); + + label currentStatePsi = psiRef.eventNo(); + psiRef.boundaryField().updateCoeffs(); + psiRef.eventNo() = currentStatePsi; } @@ -322,7 +328,7 @@ Foam::fvMatrix::fvMatrix(const tmp >& tfvm) template Foam::fvMatrix::fvMatrix ( - GeometricField& psi, + const GeometricField& psi, Istream& is ) : @@ -404,12 +410,17 @@ void Foam::fvMatrix::setValues const unallocLabelList& nei = mesh.neighbour(); scalarField& Diag = diag(); + Field& psi = + const_cast + < + GeometricField& + >(psi_).internalField(); forAll(cellLabels, i) { label celli = cellLabels[i]; - psi_[celli] = values[i]; + psi[celli] = values[i]; source_[celli] = values[i]*Diag[celli]; if (symmetric() || asymmetric()) diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H index 4fbc2430d7..8569862e13 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H @@ -117,8 +117,9 @@ public: // Private data - // Reference to GeometricField - GeometricField& psi_; + //- Const reference to GeometricField + // Converted into a non-const reference at the point of solution. + const GeometricField& psi_; //- Dimension set dimensionSet dimensions_; @@ -237,7 +238,7 @@ public: //- Construct given a field to solve for fvMatrix ( - GeometricField&, + const GeometricField&, const dimensionSet& ); @@ -245,12 +246,12 @@ public: fvMatrix(const fvMatrix&); //- Construct as copy of tmp > deleting argument -# ifdef ConstructFromTmp + #ifdef ConstructFromTmp fvMatrix(const tmp >&); -# endif + #endif //- Construct from Istream given field to solve for - fvMatrix(GeometricField&, Istream&); + fvMatrix(const GeometricField&, Istream&); // Destructor @@ -267,11 +268,6 @@ public: return psi_; } - GeometricField& psi() - { - return psi_; - } - const dimensionSet& dimensions() const { return dimensions_; diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C index 21f3738a02..c56899bd62 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C @@ -63,10 +63,13 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve << endl; } + GeometricField& psi = + const_cast&>(psi_); + lduMatrix::solverPerformance solverPerfVec ( "fvMatrix::solve", - psi_.name() + psi.name() ); scalarField saveDiag = diag(); @@ -82,7 +85,7 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve ( pow ( - psi_.mesh().solutionD(), + psi.mesh().solutionD(), pTraits, Type::rank>::type>::zero ) ); @@ -93,7 +96,7 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve // copy field and source - scalarField psiCmpt = psi_.internalField().component(cmpt); + scalarField psiCmpt = psi.internalField().component(cmpt); addBoundaryDiag(diag(), cmpt); scalarField sourceCmpt = source.component(cmpt); @@ -109,7 +112,7 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve ); lduInterfaceFieldPtrsList interfaces = - psi_.boundaryField().interfaces(); + psi.boundaryField().interfaces(); // Use the initMatrixInterfaces and updateMatrixInterfaces to correct // bouCoeffsCmpt for the explicit part of the coupled boundary @@ -137,7 +140,7 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve // Solver call solverPerf = lduMatrix::solver::New ( - psi_.name() + pTraits::componentNames[cmpt], + psi.name() + pTraits::componentNames[cmpt], *this, bouCoeffsCmpt, intCoeffsCmpt, @@ -156,11 +159,11 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve solverPerfVec = solverPerf; } - psi_.internalField().replace(cmpt, psiCmpt); + psi.internalField().replace(cmpt, psiCmpt); diag() = saveDiag; } - psi_.correctBoundaryConditions(); + psi.correctBoundaryConditions(); return solverPerfVec; } diff --git a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C index 35e5c3ac35..5ea0ba6a17 100644 --- a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C +++ b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C @@ -99,6 +99,10 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::fvSolver::solve const dictionary& solverControls ) { + GeometricField& psi = + const_cast&> + (fvMat_.psi()); + scalarField saveDiag = fvMat_.diag(); fvMat_.addBoundaryDiag(fvMat_.diag(), 0); @@ -108,14 +112,17 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::fvSolver::solve // assign new solver controls solver_->read(solverControls); - lduMatrix::solverPerformance solverPerf = - solver_->solve(fvMat_.psi().internalField(), totalSource); + lduMatrix::solverPerformance solverPerf = solver_->solve + ( + psi.internalField(), + totalSource + ); solverPerf.print(); fvMat_.diag() = saveDiag; - fvMat_.psi().correctBoundaryConditions(); + psi.correctBoundaryConditions(); return solverPerf; } @@ -134,6 +141,9 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve << endl; } + GeometricField& psi = + const_cast&>(psi_); + scalarField saveDiag = diag(); addBoundaryDiag(diag(), 0); @@ -143,19 +153,19 @@ Foam::lduMatrix::solverPerformance Foam::fvMatrix::solve // Solver call lduMatrix::solverPerformance solverPerf = lduMatrix::solver::New ( - psi_.name(), + psi.name(), *this, boundaryCoeffs_, internalCoeffs_, - psi_.boundaryField().interfaces(), + psi.boundaryField().interfaces(), solverControls - )->solve(psi_.internalField(), totalSource); + )->solve(psi.internalField(), totalSource); solverPerf.print(); diag() = saveDiag; - psi_.correctBoundaryConditions(); + psi.correctBoundaryConditions(); return solverPerf; } diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C index 1465c2648e..ff2ecdbdc3 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C @@ -66,8 +66,10 @@ tmp LimitedScheme::limiter const GeometricField& lPhi = tlPhi(); - GeometricField - gradc(fvc::grad(lPhi)); + tmp > + tgradc(fvc::grad(lPhi)); + const GeometricField& + gradc = tgradc(); const surfaceScalarField& CDweights = mesh.surfaceInterpolation::weights(); @@ -116,7 +118,7 @@ tmp LimitedScheme::limiter gradc.boundaryField()[patchi].patchNeighbourField(); // Build the d-vectors - vectorField pd = + vectorField pd = mesh.Sf().boundaryField()[patchi] /( mesh.magSf().boundaryField()[patchi] diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.C index 4cda19451b..104cbdd29b 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.C @@ -67,9 +67,22 @@ Foam::linearUpwind::correction const volVectorField& C = mesh.C(); const surfaceVectorField& Cf = mesh.Cf(); - GeometricField - ::type, fvPatchField, volMesh> - gradVf = gradScheme_().grad(vf); + tmp + < + GeometricField + < + typename outerProduct::type, + fvPatchField, + volMesh + > + > tgradVf = gradScheme_().grad(vf, gradSchemeName_); + + const GeometricField + < + typename outerProduct::type, + fvPatchField, + volMesh + >& gradVf = tgradVf(); forAll(faceFlux, facei) { @@ -95,7 +108,7 @@ Foam::linearUpwind::correction if (pSfCorr.coupled()) { - const unallocLabelList& pOwner = + const unallocLabelList& pOwner = mesh.boundary()[patchi].faceCells(); const vectorField& pCf = Cf.boundaryField()[patchi]; @@ -106,7 +119,7 @@ Foam::linearUpwind::correction gradVf.boundaryField()[patchi].patchNeighbourField(); // Build the d-vectors - vectorField pd = + vectorField pd = mesh.Sf().boundaryField()[patchi] /( mesh.magSf().boundaryField()[patchi] @@ -129,7 +142,7 @@ Foam::linearUpwind::correction } else { - pSfCorr[facei] = + pSfCorr[facei] = (pCf[facei] - pd[facei] - C[own]) & pGradVfNei[facei]; } } diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.H b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.H index 2b51590f85..e5e278a7e9 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwind.H @@ -56,6 +56,7 @@ class linearUpwind { // Private Data + word gradSchemeName_; tmp > gradScheme_; @@ -84,6 +85,7 @@ public: ) : upwind(mesh, faceFlux), + gradSchemeName_("grad"), gradScheme_ ( new fv::gaussGrad(mesh) @@ -100,12 +102,13 @@ public: ) : upwind(mesh, schemeData), + gradSchemeName_(schemeData), gradScheme_ ( fv::gradScheme::New ( mesh, - schemeData + mesh.gradScheme(gradSchemeName_) ) ) {} @@ -119,12 +122,13 @@ public: ) : upwind(mesh, faceFlux, schemeData), + gradSchemeName_(schemeData), gradScheme_ ( fv::gradScheme::New ( mesh, - schemeData + mesh.gradScheme(gradSchemeName_) ) ) {} diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.C index 80a137b396..c4b52f4da0 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.C @@ -74,9 +74,22 @@ Foam::linearUpwindV::correction const vectorField& C = mesh.C(); const vectorField& Cf = mesh.Cf(); - GeometricField - ::type, fvPatchField, volMesh> - gradVf = gradScheme_().grad(vf); + tmp + < + GeometricField + < + typename outerProduct::type, + fvPatchField, + volMesh + > + > tgradVf = gradScheme_().grad(vf, gradSchemeName_); + + const GeometricField + < + typename outerProduct::type, + fvPatchField, + volMesh + >& gradVf = tgradVf(); forAll(faceFlux, facei) { diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.H b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.H index 7f8c9de742..9d477610a7 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.H @@ -56,6 +56,7 @@ class linearUpwindV { // Private Data + word gradSchemeName_; tmp > gradScheme_; @@ -84,6 +85,7 @@ public: ) : upwind(mesh, faceFlux), + gradSchemeName_("grad"), gradScheme_ ( new fv::gaussGrad(mesh) @@ -100,12 +102,13 @@ public: ) : upwind(mesh, schemeData), + gradSchemeName_(schemeData), gradScheme_ ( fv::gradScheme::New ( mesh, - schemeData + mesh.gradScheme(gradSchemeName_) ) ) {} @@ -119,12 +122,13 @@ public: ) : upwind(mesh, faceFlux, schemeData), + gradSchemeName_(schemeData), gradScheme_ ( fv::gradScheme::New ( mesh, - schemeData + mesh.gradScheme(gradSchemeName_) ) ) {} diff --git a/src/mesh/blockMesh/curvedEdges/BSpline.C b/src/mesh/blockMesh/curvedEdges/BSpline.C index 56e829eda5..8ce6695e94 100644 --- a/src/mesh/blockMesh/curvedEdges/BSpline.C +++ b/src/mesh/blockMesh/curvedEdges/BSpline.C @@ -48,7 +48,7 @@ Foam::pointField Foam::BSpline::findKnots register scalar oneSixth = 1.0/6.0; register scalar twoThird = 2.0/3.0; - simpleMatrix M(newnKnots); + simpleMatrix M(newnKnots, 0, vector::zero); // set up the matrix diff --git a/src/mesh/blockMesh/curvedEdges/spline.C b/src/mesh/blockMesh/curvedEdges/spline.C index 871c7f7db4..e95d5a9f36 100644 --- a/src/mesh/blockMesh/curvedEdges/spline.C +++ b/src/mesh/blockMesh/curvedEdges/spline.C @@ -36,7 +36,7 @@ Foam::spline::spline(const pointField& knotPoints) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::scalar Foam::spline::B(const scalar& tau) const +Foam::scalar Foam::spline::B(const scalar tau) const { if (tau <= -2.0 || tau >= 2.0) { @@ -60,7 +60,7 @@ Foam::scalar Foam::spline::B(const scalar& tau) const } else { - FatalErrorIn("spline::B(const scalar&)") + FatalErrorIn("spline::B(const scalar)") << "Programming error???, " << "tau = " << tau << abort(FatalError); diff --git a/src/mesh/blockMesh/curvedEdges/spline.H b/src/mesh/blockMesh/curvedEdges/spline.H index 5808770682..243ed35690 100644 --- a/src/mesh/blockMesh/curvedEdges/spline.H +++ b/src/mesh/blockMesh/curvedEdges/spline.H @@ -59,7 +59,7 @@ class spline // Private Member Functions //- Blending function for constructing spline - scalar B(const scalar&) const; + scalar B(const scalar) const; //- Disallow default bitwise copy construct spline(const spline&); diff --git a/src/meshTools/octree/treeBoundBox.H b/src/meshTools/octree/treeBoundBox.H index 69791e04a8..04b420a531 100644 --- a/src/meshTools/octree/treeBoundBox.H +++ b/src/meshTools/octree/treeBoundBox.H @@ -158,10 +158,6 @@ public: static const FixedList faceNormals; - //- Face on which neighbour is - static direction neighbourFaceBits(const label&); - - // Constructors //- Construct null setting points to zero diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.C b/src/surfMesh/MeshedSurface/MeshedSurface.C index 8bcab42089..1c1622c0eb 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -507,7 +507,7 @@ void Foam::MeshedSurface::movePoints(const pointField& newPoints) template -void Foam::MeshedSurface::scalePoints(const scalar& scaleFactor) +void Foam::MeshedSurface::scalePoints(const scalar scaleFactor) { // avoid bad scaling if (scaleFactor > 0 && scaleFactor != 1.0) diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.H b/src/surfMesh/MeshedSurface/MeshedSurface.H index 5677233e0b..ea7125fa83 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.H +++ b/src/surfMesh/MeshedSurface/MeshedSurface.H @@ -338,7 +338,7 @@ public: virtual void movePoints(const pointField&); //- Scale points. A non-positive factor is ignored - virtual void scalePoints(const scalar&); + virtual void scalePoints(const scalar); //- Reset primitive data (points, faces and zones) // Note, optimized to avoid overwriting data (with Xfer::null) diff --git a/src/triSurface/triSurface/triSurface.C b/src/triSurface/triSurface/triSurface.C index 3b8d2f9d5f..65258557e8 100644 --- a/src/triSurface/triSurface/triSurface.C +++ b/src/triSurface/triSurface/triSurface.C @@ -33,8 +33,6 @@ License #include "SortableList.H" #include "PackedBoolList.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { @@ -783,7 +781,6 @@ const Foam::labelList& Foam::triSurface::edgeOwner() const } -//- Move points void Foam::triSurface::movePoints(const pointField& newPoints) { // Remove all geometry dependent data @@ -797,8 +794,7 @@ void Foam::triSurface::movePoints(const pointField& newPoints) } -// scale points -void Foam::triSurface::scalePoints(const scalar& scaleFactor) +void Foam::triSurface::scalePoints(const scalar scaleFactor) { // avoid bad scaling if (scaleFactor > 0 && scaleFactor != 1.0) diff --git a/src/triSurface/triSurface/triSurface.H b/src/triSurface/triSurface/triSurface.H index 9ee5b5ca4d..7ef87db1ab 100644 --- a/src/triSurface/triSurface/triSurface.H +++ b/src/triSurface/triSurface/triSurface.H @@ -324,7 +324,7 @@ public: virtual void movePoints(const pointField&); //- Scale points. A non-positive factor is ignored - virtual void scalePoints(const scalar&); + virtual void scalePoints(const scalar); //- Check/remove duplicate/degenerate triangles void checkTriangles(const bool verbose);