From dee5b8e4ebff722bc92121a46a8a7142283b0c9c Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Thu, 30 Aug 2018 13:02:18 +0100 Subject: [PATCH] src/OpenFOAM: Rationalised use of enumerations by using the C++11 scoped form for polynomialEqns --- applications/test/cubicEqn/Test-cubicEqn.C | 10 +++---- .../primitives/Tensor/tensor/tensor.C | 10 +++---- .../primitives/Tensor2D/tensor2D/tensor2D.C | 10 +++---- .../primitives/polynomialEqns/Roots.H | 16 +++++------- .../primitives/polynomialEqns/RootsI.H | 16 ++++++------ .../polynomialEqns/cubicEqn/cubicEqn.C | 2 +- .../polynomialEqns/cubicEqn/cubicEqn.H | 7 +++-- .../polynomialEqns/cubicEqn/cubicEqnI.H | 24 ++++++++--------- .../polynomialEqns/linearEqn/linearEqn.H | 7 +++-- .../polynomialEqns/linearEqn/linearEqnI.H | 26 ++++++++++++------- .../quadraticEqn/quadraticEqn.C | 4 +-- .../quadraticEqn/quadraticEqn.H | 7 +++-- .../quadraticEqn/quadraticEqnI.H | 18 ++++++------- src/lagrangian/basic/particle/particle.C | 2 +- .../sweptFaceAreaWeightAMI.C | 2 +- 15 files changed, 86 insertions(+), 75 deletions(-) diff --git a/applications/test/cubicEqn/Test-cubicEqn.C b/applications/test/cubicEqn/Test-cubicEqn.C index aa0579a419..3bb2005d06 100644 --- a/applications/test/cubicEqn/Test-cubicEqn.C +++ b/applications/test/cubicEqn/Test-cubicEqn.C @@ -39,7 +39,7 @@ void test(const Type& polynomialEqn, const scalar tol) const scalar nan = std::numeric_limits::quiet_NaN(); const scalar inf = std::numeric_limits::infinity(); - FixedList t; + FixedList t; FixedList v(nan); FixedList e(nan); bool ok = true; @@ -48,16 +48,16 @@ void test(const Type& polynomialEqn, const scalar tol) t[i] = r.type(i); switch (t[i]) { - case roots::real: + case rootType::real: v[i] = polynomialEqn.value(r[i]); e[i] = polynomialEqn.error(r[i]); ok = ok && mag(v[i]) <= tol*mag(e[i]); break; - case roots::posInf: + case rootType::posInf: v[i] = + inf; e[i] = nan; break; - case roots::negInf: + case rootType::negInf: v[i] = - inf; e[i] = nan; break; @@ -70,7 +70,7 @@ void test(const Type& polynomialEqn, const scalar tol) if (!ok) { Info<< "Coeffs: " << polynomialEqn << endl - << " Types: " << t << endl + // << " Types: " << t << endl << " Roots: " << r << endl << "Values: " << v << endl << "Errors: " << e << endl << endl; diff --git a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C index c2307eea31..86e00b4cf9 100644 --- a/src/OpenFOAM/primitives/Tensor/tensor/tensor.C +++ b/src/OpenFOAM/primitives/Tensor/tensor/tensor.C @@ -93,22 +93,22 @@ Foam::vector Foam::eigenValues(const tensor& t) { switch (roots.type(i)) { - case roots::real: + case rootType::real: lambda[i] = roots[i]; break; - case roots::complex: + case rootType::complex: WarningInFunction << "Complex eigenvalues detected for tensor: " << t << endl; lambda[i] = 0; break; - case roots::posInf: + case rootType::posInf: lambda[i] = vGreat; break; - case roots::negInf: + case rootType::negInf: lambda[i] = - vGreat; break; - case roots::nan: + case rootType::nan: FatalErrorInFunction << "Eigenvalue calculation failed for tensor: " << t << exit(FatalError); diff --git a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C index df963710d6..f43faa649d 100644 --- a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C +++ b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.C @@ -99,22 +99,22 @@ Foam::vector2D Foam::eigenValues(const tensor2D& t) { switch (roots.type(i)) { - case roots::real: + case rootType::real: lambda[i] = roots[i]; break; - case roots::complex: + case rootType::complex: WarningInFunction << "Complex eigenvalues detected for tensor: " << t << endl; lambda[i] = 0; break; - case roots::posInf: + case rootType::posInf: lambda[i] = vGreat; break; - case roots::negInf: + case rootType::negInf: lambda[i] = - vGreat; break; - case roots::nan: + case rootType::nan: FatalErrorInFunction << "Eigenvalue calculation failed for tensor: " << t << exit(FatalError); diff --git a/src/OpenFOAM/primitives/polynomialEqns/Roots.H b/src/OpenFOAM/primitives/polynomialEqns/Roots.H index bffc670539..e11c2de7e0 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/Roots.H +++ b/src/OpenFOAM/primitives/polynomialEqns/Roots.H @@ -46,11 +46,8 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace roots -{ - //- Types of root -enum type +enum class rootType { real = 0, complex, @@ -59,7 +56,6 @@ enum type nan }; -} /*---------------------------------------------------------------------------*\ Class Roots Declaration @@ -83,12 +79,12 @@ public: inline Roots(); //- Construct with a uniform value - inline Roots(const roots::type t, const scalar x); + inline Roots(const rootType t, const scalar x); //- Construct by concatenation inline Roots ( - const roots::type t, + const rootType t, const scalar x, const Roots& xs ); @@ -97,7 +93,7 @@ public: inline Roots ( const Roots& xs, - const roots::type t, + const rootType t, const scalar x ); @@ -109,10 +105,10 @@ public: // Member Functions //- Set the type of the i-th root - inline void type(const direction i, const roots::type t); + inline void type(const direction i, const rootType t); //- Return the type of the i-th root - inline roots::type type(const direction i) const; + inline rootType type(const direction i) const; }; diff --git a/src/OpenFOAM/primitives/polynomialEqns/RootsI.H b/src/OpenFOAM/primitives/polynomialEqns/RootsI.H index 81a2da3512..4616ed20f7 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/RootsI.H +++ b/src/OpenFOAM/primitives/polynomialEqns/RootsI.H @@ -32,13 +32,13 @@ inline Foam::Roots::Roots() { forAll(*this, i) { - type(i, roots::nan); + type(i, rootType::nan); } } template -inline Foam::Roots::Roots(const roots::type t, const scalar x) +inline Foam::Roots::Roots(const rootType t, const scalar x) : types_(0) { @@ -53,7 +53,7 @@ inline Foam::Roots::Roots(const roots::type t, const scalar x) template inline Foam::Roots::Roots ( - const roots::type t, + const rootType t, const scalar x, const Roots& xs ) @@ -74,7 +74,7 @@ template inline Foam::Roots::Roots ( const Roots& xs, - const roots::type t, + const rootType t, const scalar x ) : @@ -119,17 +119,17 @@ template inline void Foam::Roots::type ( const direction i, - const roots::type t + const rootType t ) { - types_ += (t - type(i)) << 3*i; + types_ += (static_cast(t) - static_cast(type(i))) << 3*i; } template -inline Foam::roots::type Foam::Roots::type(const direction i) const +inline Foam::rootType Foam::Roots::type(const direction i) const { - return static_cast((types_ >> 3*i) & 7); + return static_cast((types_ >> 3*i) & 7); } diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C index f45663912b..d846f78892 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.C @@ -76,7 +76,7 @@ Foam::Roots<3> Foam::cubicEqn::roots() const if (a == 0) { - return Roots<3>(quadraticEqn(b, c, d).roots(), roots::nan, 0); + return Roots<3>(quadraticEqn(b, c, d).roots(), rootType::nan, 0); } // This is assumed not to over- or under-flow. If it does, all bets are off. diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H index 5404f5e8df..d4e874f545 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqn.H @@ -53,8 +53,11 @@ class cubicEqn { public: - //- Component labeling enumeration - enum components { A, B, C, D }; + //- Coefficient indexing enumeration + struct coefficient + { + enum {a, b, c, d}; + }; // Constructors diff --git a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H index 2519c124af..cdcdb8b36a 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H +++ b/src/OpenFOAM/primitives/polynomialEqns/cubicEqn/cubicEqnI.H @@ -43,10 +43,10 @@ inline Foam::cubicEqn::cubicEqn const scalar d ) { - this->v_[A] = a; - this->v_[B] = b; - this->v_[C] = c; - this->v_[D] = d; + this->v_[coefficient::a] = a; + this->v_[coefficient::b] = b; + this->v_[coefficient::c] = c; + this->v_[coefficient::d] = d; } @@ -54,49 +54,49 @@ inline Foam::cubicEqn::cubicEqn inline Foam::scalar Foam::cubicEqn::a() const { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar Foam::cubicEqn::b() const { - return this->v_[B]; + return this->v_[coefficient::b]; } inline Foam::scalar Foam::cubicEqn::c() const { - return this->v_[C]; + return this->v_[coefficient::c]; } inline Foam::scalar Foam::cubicEqn::d() const { - return this->v_[D]; + return this->v_[coefficient::d]; } inline Foam::scalar& Foam::cubicEqn::a() { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar& Foam::cubicEqn::b() { - return this->v_[B]; + return this->v_[coefficient::b]; } inline Foam::scalar& Foam::cubicEqn::c() { - return this->v_[C]; + return this->v_[coefficient::c]; } inline Foam::scalar& Foam::cubicEqn::d() { - return this->v_[D]; + return this->v_[coefficient::d]; } diff --git a/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H index 0944cf437e..a472cc6975 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H +++ b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqn.H @@ -52,8 +52,11 @@ class linearEqn { public: - //- Component labeling enumeration - enum components { A, B }; + //- Coefficient indexing enumeration + struct coefficient + { + enum {a, b}; + }; // Constructors diff --git a/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H index 0f1ad3d106..5dce8d2be8 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H +++ b/src/OpenFOAM/primitives/polynomialEqns/linearEqn/linearEqnI.H @@ -37,8 +37,8 @@ inline Foam::linearEqn::linearEqn(const Foam::zero) inline Foam::linearEqn::linearEqn(const scalar a, const scalar b) { - this->v_[A] = a; - this->v_[B] = b; + this->v_[coefficient::a] = a; + this->v_[coefficient::b] = b; } @@ -46,25 +46,25 @@ inline Foam::linearEqn::linearEqn(const scalar a, const scalar b) inline Foam::scalar Foam::linearEqn::a() const { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar Foam::linearEqn::b() const { - return this->v_[B]; + return this->v_[coefficient::b]; } inline Foam::scalar& Foam::linearEqn::a() { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar& Foam::linearEqn::b() { - return this->v_[B]; + return this->v_[coefficient::b]; } @@ -93,7 +93,7 @@ inline Foam::Roots<1> Foam::linearEqn::roots() const This function solves a linear equation of the following form: a*x + b = 0 - x + B = 0 + x + b = 0 */ @@ -102,15 +102,21 @@ inline Foam::Roots<1> Foam::linearEqn::roots() const if (a == 0) { - return Roots<1>(roots::nan, 0); + return Roots<1>(rootType::nan, 0); } if (mag(b/vGreat) >= mag(a)) { - return Roots<1>(sign(a) == sign(b) ? roots::negInf : roots::posInf, 0); + return Roots<1> + ( + sign(a) == sign(b) + ? rootType::negInf + : rootType::posInf, + 0 + ); } - return Roots<1>(roots::real, - b/a); + return Roots<1>(rootType::real, -b/a); } diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C index cfcfceafac..482371bde8 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.C @@ -58,7 +58,7 @@ Foam::Roots<2> Foam::quadraticEqn::roots() const if (a == 0) { - return Roots<2>(linearEqn(b, c).roots(), roots::nan, 0); + return Roots<2>(linearEqn(b, c).roots(), rootType::nan, 0); } // This is assumed not to over- or under-flow. If it does, all bets are off. @@ -81,7 +81,7 @@ Foam::Roots<2> Foam::quadraticEqn::roots() const } else // if (twoComplex) { - return Roots<2>(roots::complex, 0); + return Roots<2>(rootType::complex, 0); } } diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H index 023f566ce6..38c7d68e5c 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqn.H @@ -53,8 +53,11 @@ class quadraticEqn { public: - //- Component labeling enumeration - enum components { A, B, C }; + //- Coefficient indexing enumeration + struct coefficient + { + enum {a, b, c}; + }; // Constructors diff --git a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H index 9b9a8b79f0..271cc24a93 100644 --- a/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H +++ b/src/OpenFOAM/primitives/polynomialEqns/quadraticEqn/quadraticEqnI.H @@ -42,9 +42,9 @@ inline Foam::quadraticEqn::quadraticEqn const scalar c ) { - this->v_[A] = a; - this->v_[B] = b; - this->v_[C] = c; + this->v_[coefficient::a] = a; + this->v_[coefficient::b] = b; + this->v_[coefficient::c] = c; } @@ -52,37 +52,37 @@ inline Foam::quadraticEqn::quadraticEqn inline Foam::scalar Foam::quadraticEqn::a() const { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar Foam::quadraticEqn::b() const { - return this->v_[B]; + return this->v_[coefficient::b]; } inline Foam::scalar Foam::quadraticEqn::c() const { - return this->v_[C]; + return this->v_[coefficient::c]; } inline Foam::scalar& Foam::quadraticEqn::a() { - return this->v_[A]; + return this->v_[coefficient::a]; } inline Foam::scalar& Foam::quadraticEqn::b() { - return this->v_[B]; + return this->v_[coefficient::b]; } inline Foam::scalar& Foam::quadraticEqn::c() { - return this->v_[C]; + return this->v_[coefficient::c]; } diff --git a/src/lagrangian/basic/particle/particle.C b/src/lagrangian/basic/particle/particle.C index 9ac3e13218..79640c09a6 100644 --- a/src/lagrangian/basic/particle/particle.C +++ b/src/lagrangian/basic/particle/particle.C @@ -858,7 +858,7 @@ Foam::scalar Foam::particle::trackToMovingTri for (label j = 0; j < 3; ++ j) { - if (mu.type(j) == roots::real && hitEqn[i].derivative(mu[j]) < 0) + if (mu.type(j) == rootType::real && hitEqn[i].derivative(mu[j]) < 0) { if (debug) { diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/sweptFaceAreaWeightAMI/sweptFaceAreaWeightAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/sweptFaceAreaWeightAMI/sweptFaceAreaWeightAMI.C index 9727ef37cd..b4c504d988 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/sweptFaceAreaWeightAMI/sweptFaceAreaWeightAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/sweptFaceAreaWeightAMI/sweptFaceAreaWeightAMI.C @@ -314,7 +314,7 @@ Foam::plane Foam::sweptFaceAreaWeightAMI::getCutPlane Pair cuts(false, false); for (label j = 0; j < 2; ++ j) { - if (us.type(j) == roots::real) + if (us.type(j) == rootType::real) { const vector den = ca + da*us[j]; if (magSqr(den) > vSmall)