diff --git a/applications/utilities/preProcessing/setExprFields/setExprFields.C b/applications/utilities/preProcessing/setExprFields/setExprFields.C index 88cbc149b3..9a7ba3dfcd 100644 --- a/applications/utilities/preProcessing/setExprFields/setExprFields.C +++ b/applications/utilities/preProcessing/setExprFields/setExprFields.C @@ -678,7 +678,7 @@ int main(int argc, char *argv[]) } // Disable dimension checking during operations - dimensionSet::debug = false; + dimensionSet::checking(false); #include "createNamedMesh.H" diff --git a/src/OpenFOAM/db/Time/TimePaths.H b/src/OpenFOAM/db/Time/TimePaths.H index 58dc264403..f1b72fecbf 100644 --- a/src/OpenFOAM/db/Time/TimePaths.H +++ b/src/OpenFOAM/db/Time/TimePaths.H @@ -197,7 +197,6 @@ public: //- Search the case for the time closest to the given time instant findClosestTime(const scalar t) const; - }; diff --git a/src/OpenFOAM/db/Time/TimeState.H b/src/OpenFOAM/db/Time/TimeState.H index 188cb4b7d7..34d3bc1697 100644 --- a/src/OpenFOAM/db/Time/TimeState.H +++ b/src/OpenFOAM/db/Time/TimeState.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -92,13 +92,13 @@ public: inline scalar timeOutputValue() const; //- Return current time index - inline label timeIndex() const; + inline label timeIndex() const noexcept; //- Return time step value - inline scalar deltaTValue() const; + inline scalar deltaTValue() const noexcept; //- Return old time step value - inline scalar deltaT0Value() const; + inline scalar deltaT0Value() const noexcept; //- Return time step inline dimensionedScalar deltaT() const; @@ -109,12 +109,12 @@ public: // Check - //- Return true if this is a write time - inline bool writeTime() const; + //- True if this is a write time + inline bool writeTime() const noexcept; //- Deprecated(2016-05) return true if this is a write time. // \deprecated(2016-05) - use writeTime() method - inline bool outputTime() const { return this->writeTime(); } + bool outputTime() const noexcept { return this->writeTime(); } }; diff --git a/src/OpenFOAM/db/Time/TimeStateI.H b/src/OpenFOAM/db/Time/TimeStateI.H index c26dc49f17..bf9dd0f5c4 100644 --- a/src/OpenFOAM/db/Time/TimeStateI.H +++ b/src/OpenFOAM/db/Time/TimeStateI.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -33,19 +34,19 @@ inline Foam::scalar Foam::TimeState::timeOutputValue() const } -inline Foam::label Foam::TimeState::timeIndex() const +inline Foam::label Foam::TimeState::timeIndex() const noexcept { return timeIndex_; } -inline Foam::scalar Foam::TimeState::deltaTValue() const +inline Foam::scalar Foam::TimeState::deltaTValue() const noexcept { return deltaT_; } -inline Foam::scalar Foam::TimeState::deltaT0Value() const +inline Foam::scalar Foam::TimeState::deltaT0Value() const noexcept { return deltaT0_; } @@ -63,7 +64,7 @@ inline Foam::dimensionedScalar Foam::TimeState::deltaT0() const } -inline bool Foam::TimeState::writeTime() const +inline bool Foam::TimeState::writeTime() const noexcept { return writeTime_; } diff --git a/src/OpenFOAM/db/Time/timeSelector.C b/src/OpenFOAM/db/Time/timeSelector.C index 37b199bb0d..7fcdc02263 100644 --- a/src/OpenFOAM/db/Time/timeSelector.C +++ b/src/OpenFOAM/db/Time/timeSelector.C @@ -33,12 +33,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::timeSelector::timeSelector() -: - scalarRanges() -{} - - Foam::timeSelector::timeSelector(const std::string& str) : scalarRanges(str) diff --git a/src/OpenFOAM/db/Time/timeSelector.H b/src/OpenFOAM/db/Time/timeSelector.H index f4a84e10be..b7280b4453 100644 --- a/src/OpenFOAM/db/Time/timeSelector.H +++ b/src/OpenFOAM/db/Time/timeSelector.H @@ -82,7 +82,7 @@ SourceFiles namespace Foam { -// Forward declarations +// Forward Declarations class argList; class Time; @@ -98,11 +98,11 @@ public: // Constructors - //- Construct null - timeSelector(); + //- Default construct + timeSelector() = default; //- Construct by parsing string for time ranges - timeSelector(const std::string& str); + explicit timeSelector(const std::string& str); // Member Functions @@ -165,7 +165,6 @@ public: Time& runTime, const argList& args ); - }; diff --git a/src/OpenFOAM/dimensionSet/dimensionSet.C b/src/OpenFOAM/dimensionSet/dimensionSet.C index 770af48b84..617b3439be 100644 --- a/src/OpenFOAM/dimensionSet/dimensionSet.C +++ b/src/OpenFOAM/dimensionSet/dimensionSet.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2017-2019 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -202,7 +202,7 @@ bool Foam::dimensionSet::operator!=(const dimensionSet& ds) const bool Foam::dimensionSet::operator=(const dimensionSet& ds) const { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("(a = b)", *this, ds); } @@ -213,7 +213,7 @@ bool Foam::dimensionSet::operator=(const dimensionSet& ds) const bool Foam::dimensionSet::operator+=(const dimensionSet& ds) const { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("(a += b)", *this, ds); } @@ -224,7 +224,7 @@ bool Foam::dimensionSet::operator+=(const dimensionSet& ds) const bool Foam::dimensionSet::operator-=(const dimensionSet& ds) const { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("(a -= b)", *this, ds); } @@ -253,7 +253,7 @@ bool Foam::dimensionSet::operator/=(const dimensionSet& ds) Foam::dimensionSet Foam::min(const dimensionSet& ds1, const dimensionSet& ds2) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("min(a, b)", ds1, ds2); } @@ -264,7 +264,7 @@ Foam::dimensionSet Foam::min(const dimensionSet& ds1, const dimensionSet& ds2) Foam::dimensionSet Foam::max(const dimensionSet& ds1, const dimensionSet& ds2) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("max(a, b)", ds1, ds2); } @@ -275,7 +275,7 @@ Foam::dimensionSet Foam::max(const dimensionSet& ds1, const dimensionSet& ds2) Foam::dimensionSet Foam::clip(const dimensionSet& ds1, const dimensionSet& ds2) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("clip(a, b)", ds1, ds2); } @@ -325,7 +325,7 @@ Foam::dimensionSet Foam::pow const dimensionedScalar& dS ) { - if (dimensionSet::debug && !dS.dimensions().dimensionless()) + if (dimensionSet::checking() && !dS.dimensions().dimensionless()) { FatalErrorInFunction << "Exponent of pow is not dimensionless" << endl @@ -344,7 +344,7 @@ Foam::dimensionSet Foam::pow { if ( - dimensionSet::debug + dimensionSet::checking() && !dS.dimensions().dimensionless() && !ds.dimensionless() ) @@ -483,7 +483,7 @@ Foam::dimensionSet Foam::inv(const dimensionSet& ds) Foam::dimensionSet Foam::trans(const dimensionSet& ds) { - if (dimensionSet::debug && !ds.dimensionless()) + if (dimensionSet::checking() && !ds.dimensionless()) { FatalErrorInFunction << "Argument of trancendental function not dimensionless" << nl @@ -496,7 +496,7 @@ Foam::dimensionSet Foam::trans(const dimensionSet& ds) Foam::dimensionSet Foam::atan2(const dimensionSet& ds1, const dimensionSet& ds2) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("atan2(a, b)", ds1, ds2); } @@ -507,7 +507,7 @@ Foam::dimensionSet Foam::atan2(const dimensionSet& ds1, const dimensionSet& ds2) Foam::dimensionSet Foam::hypot(const dimensionSet& ds1, const dimensionSet& ds2) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("hypot(a, b)", ds1, ds2); } @@ -548,7 +548,7 @@ Foam::dimensionSet Foam::operator+ const dimensionSet& ds2 ) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("(a + b)", ds1, ds2); } @@ -563,7 +563,7 @@ Foam::dimensionSet Foam::operator- const dimensionSet& ds2 ) { - if (dimensionSet::debug) + if (dimensionSet::checking()) { checkDims("(a - b)", ds1, ds2); } diff --git a/src/OpenFOAM/dimensionSet/dimensionSet.H b/src/OpenFOAM/dimensionSet/dimensionSet.H index 5302423634..34c3c00be8 100644 --- a/src/OpenFOAM/dimensionSet/dimensionSet.H +++ b/src/OpenFOAM/dimensionSet/dimensionSet.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2017-2019 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -54,7 +54,7 @@ SourceFiles namespace Foam { -// Forward declarations +// Forward Declarations class dimensionSet; class dimensionSets; @@ -97,17 +97,17 @@ public: private: - // Private data + // Private Data //- The array of dimension exponents list_type exponents_; - // Private classes + // Private Classes class tokeniser { - // Private data + // Private Data Istream& is_; @@ -171,6 +171,24 @@ public: ClassName("dimensionSet"); + // Static Functions + + //- Turn dimension checking on/off. + // \return the previous value + static bool checking(const bool on) noexcept + { + bool old(debug); + debug = static_cast(on); + return old; + } + + //- True if dimension checking is enabled (the usual default) + static bool checking() noexcept + { + return static_cast(debug); + } + + // Constructors //- Default construct (dimensionless). diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedMinMax/dimensionedMinMax.H b/src/OpenFOAM/dimensionedTypes/dimensionedMinMax/dimensionedMinMax.H index 3b4a7a069b..5a6446d534 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedMinMax/dimensionedMinMax.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedMinMax/dimensionedMinMax.H @@ -100,7 +100,7 @@ inline dimensioned> makeDimensionedMinMax const dimensioned& maxVal ) { - // Dimension check when (dimensionSet::debug) + // Dimension check when dimensionSet::checking() return dimensioned> ( name, diff --git a/src/finiteArea/faMatrices/faMatrix/faMatrix.C b/src/finiteArea/faMatrices/faMatrix/faMatrix.C index be37b965ac..01cd2e8812 100644 --- a/src/finiteArea/faMatrices/faMatrix/faMatrix.C +++ b/src/finiteArea/faMatrices/faMatrix/faMatrix.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2017 Wikki Ltd - Copyright (C) 2019-2020 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -1049,7 +1049,11 @@ void Foam::checkMethod << abort(FatalError); } - if (dimensionSet::debug && fam1.dimensions() != fam2.dimensions()) + if + ( + dimensionSet::checking() + && fam1.dimensions() != fam2.dimensions() + ) { FatalErrorInFunction << "incompatible dimensions for operation " @@ -1070,7 +1074,11 @@ void Foam::checkMethod const char* op ) { - if (dimensionSet::debug && fam.dimensions()/dimArea != vf.dimensions()) + if + ( + dimensionSet::checking() + && fam.dimensions()/dimArea != vf.dimensions() + ) { FatalErrorInFunction << "incompatible dimensions for operation " @@ -1091,7 +1099,11 @@ void Foam::checkMethod const char* op ) { - if (dimensionSet::debug && fam.dimensions()/dimArea != dt.dimensions()) + if + ( + dimensionSet::checking() + && fam.dimensions()/dimArea != dt.dimensions() + ) { FatalErrorInFunction << "incompatible dimensions for operation " diff --git a/src/finiteVolume/expressions/base/fvExprDriverTemplates.C b/src/finiteVolume/expressions/base/fvExprDriverTemplates.C index dc00ffebce..f77d251b87 100644 --- a/src/finiteVolume/expressions/base/fvExprDriverTemplates.C +++ b/src/finiteVolume/expressions/base/fvExprDriverTemplates.C @@ -405,8 +405,7 @@ Foam::tmp Foam::expressions::fvExprDriver::getOrReadFieldImpl } // Switch dimension checking off - const int oldDebug = dimensionSet::debug; - dimensionSet::debug = 0; + const bool oldDimChecking = dimensionSet::checking(false); // go through ALL old times GeomField* fp = &(fld); @@ -418,7 +417,7 @@ Foam::tmp Foam::expressions::fvExprDriver::getOrReadFieldImpl } // Restore old value of dimension checking - dimensionSet::debug = oldDebug; + dimensionSet::checking(oldDimChecking); } } else if (mandatory) diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C index 1aa4aa9ffb..96b3ff6c9f 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C @@ -1992,7 +1992,11 @@ void Foam::checkMethod << abort(FatalError); } - if (dimensionSet::debug && fvm1.dimensions() != fvm2.dimensions()) + if + ( + dimensionSet::checking() + && fvm1.dimensions() != fvm2.dimensions() + ) { FatalErrorInFunction << "incompatible dimensions for operation " @@ -2013,7 +2017,11 @@ void Foam::checkMethod const char* op ) { - if (dimensionSet::debug && fvm.dimensions()/dimVolume != df.dimensions()) + if + ( + dimensionSet::checking() + && fvm.dimensions()/dimVolume != df.dimensions() + ) { FatalErrorInFunction << endl << " " @@ -2033,7 +2041,11 @@ void Foam::checkMethod const char* op ) { - if (dimensionSet::debug && fvm.dimensions()/dimVolume != dt.dimensions()) + if + ( + dimensionSet::checking() + && fvm.dimensions()/dimVolume != dt.dimensions() + ) { FatalErrorInFunction << "incompatible dimensions for operation " diff --git a/src/functionObjects/field/log/log.C b/src/functionObjects/field/log/log.C index 70ff35eace..7ebdb96def 100644 --- a/src/functionObjects/field/log/log.C +++ b/src/functionObjects/field/log/log.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2018-2019 OpenFOAM Foundation - Copyright (C) 2020 OpenCFD Ltd. + Copyright (C) 2020-2021 OpenCFD Ltd. ------------------------------------------------------------------------------ License This file is part of OpenFOAM. @@ -50,13 +50,12 @@ bool Foam::functionObjects::log::calc() { const volScalarField& x = lookupObject(fieldName_); - // Cache the current debug setting for dimensionSet - const bool dimensionSetDebug = dimensionSet::debug; - // Switch-off dimension checking if requested + const bool oldDimChecking = dimensionSet::checking(); + if (!checkDimensions_) { - dimensionSet::debug = 0; + dimensionSet::checking(false); } bool stored = store @@ -68,7 +67,7 @@ bool Foam::functionObjects::log::calc() // Reinstate dimension checking if (!checkDimensions_) { - dimensionSet::debug = dimensionSetDebug; + dimensionSet::checking(oldDimChecking); } return stored; diff --git a/src/functionObjects/field/pow/pow.C b/src/functionObjects/field/pow/pow.C index 6315653f93..18a4c85a30 100644 --- a/src/functionObjects/field/pow/pow.C +++ b/src/functionObjects/field/pow/pow.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2020 OpenCFD Ltd. + Copyright (C) 2020-2021 OpenCFD Ltd. ------------------------------------------------------------------------------ License This file is part of OpenFOAM. @@ -49,13 +49,12 @@ bool Foam::functionObjects::pow::calc() { const volScalarField& x = lookupObject(fieldName_); - // Cache the current debug setting for dimensionSet - const bool dimensionSetDebug = dimensionSet::debug; - // Switch-off dimension checking if requested + const bool oldDimChecking = dimensionSet::checking(); + if (!checkDimensions_) { - dimensionSet::debug = 0; + dimensionSet::checking(false); } bool stored = store @@ -67,7 +66,7 @@ bool Foam::functionObjects::pow::calc() // Reinstate dimension checking if (!checkDimensions_) { - dimensionSet::debug = dimensionSetDebug; + dimensionSet::checking(oldDimChecking); } return stored;