From 806e793232d5470d7caca16b5751495f6918539b Mon Sep 17 00:00:00 2001
From: Ansgar Burchardt <ansgar.burchardt@tu-dresden.de>
Date: Mon, 11 Jul 2022 12:06:46 +0200
Subject: [PATCH] replace `enum` with `constexpr static int`

---
 dune/gfe/averageinterface.hh              |  2 +-
 dune/gfe/chiralskyrmionenergy.hh          |  4 ++--
 dune/gfe/cosseratenergystiffness.hh       |  4 ++--
 dune/gfe/cosseratrodenergy.hh             |  6 +++---
 dune/gfe/embeddedglobalgfefunction.hh     |  4 ++--
 dune/gfe/geodesicfeassembler.hh           |  4 ++--
 dune/gfe/geodesicfeassemblerwrapper.hh    |  8 ++++----
 dune/gfe/globalgeodesicfefunction.hh      |  4 ++--
 dune/gfe/harmonicenergy.hh                |  2 +-
 dune/gfe/l2distancesquaredenergy.hh       |  2 +-
 dune/gfe/localgeodesicfeadolcstiffness.hh |  6 +++---
 dune/gfe/localgeodesicfefdstiffness.hh    |  6 +++---
 dune/gfe/localgeodesicfestiffness.hh      |  6 +++---
 dune/gfe/localintegralenergy.hh           |  2 +-
 dune/gfe/mixedgfeassembler.hh             |  6 +++---
 dune/gfe/mixedlocalgeodesicfestiffness.hh |  6 +++---
 dune/gfe/mixedlocalgfeadolcstiffness.hh   | 10 +++++-----
 dune/gfe/neumannenergy.hh                 |  2 +-
 dune/gfe/nonplanarcosseratshellenergy.hh  |  4 ++--
 dune/gfe/periodic1dpq1nodalbasis.hh       |  2 +-
 dune/gfe/surfacecosseratenergy.hh         |  4 ++--
 dune/gfe/trustregionmmgbasesolver.hh      |  2 +-
 dune/gfe/weightedsumenergy.hh             |  2 +-
 test/adolctest.cc                         | 12 ++++++------
 24 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/dune/gfe/averageinterface.hh b/dune/gfe/averageinterface.hh
index c57c98a5..76c447ea 100644
--- a/dune/gfe/averageinterface.hh
+++ b/dune/gfe/averageinterface.hh
@@ -37,7 +37,7 @@ class PressureAverager : public Ipopt::TNLP
     typedef typename MatrixType::row_type RowType;
 
 
-    enum {dim=GridView::dimension};
+    constexpr static int dim = GridView::dimension;
 
 public:
     /** \brief Constructor */
diff --git a/dune/gfe/chiralskyrmionenergy.hh b/dune/gfe/chiralskyrmionenergy.hh
index 5756c3ec..69b4b7e2 100644
--- a/dune/gfe/chiralskyrmionenergy.hh
+++ b/dune/gfe/chiralskyrmionenergy.hh
@@ -27,7 +27,7 @@ class ChiralSkyrmionEnergy
   typedef typename GridView::template Codim<0>::Entity Entity;
 
   // some other sizes
-  enum {gridDim=GridView::dimension};
+  constexpr static int gridDim = GridView::dimension;
 
 public:
 
@@ -38,7 +38,7 @@ public:
   }
 
   //! Dimension of a tangent space
-  enum { blocksize = TargetSpace::TangentVector::dimension };
+  constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
   /** \brief Assemble the energy for a single element */
   RT energy (const typename Basis::LocalView& localView,
diff --git a/dune/gfe/cosseratenergystiffness.hh b/dune/gfe/cosseratenergystiffness.hh
index 9d402a24..6f308de6 100644
--- a/dune/gfe/cosseratenergystiffness.hh
+++ b/dune/gfe/cosseratenergystiffness.hh
@@ -70,8 +70,8 @@ class CosseratEnergyLocalStiffness
     typedef typename GridView::template Codim<0>::Entity Entity;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
-    enum {dimworld=GridView::dimensionworld};
+    constexpr static int gridDim = GridView::dimension;
+    constexpr static int dimworld = GridView::dimensionworld;
 
     /** \brief Compute the (row-wise) curl of a matrix R \f$
         \param DR The partial derivatives of the matrix R
diff --git a/dune/gfe/cosseratrodenergy.hh b/dune/gfe/cosseratrodenergy.hh
index 6ccb14e2..3bd7adfa 100644
--- a/dune/gfe/cosseratrodenergy.hh
+++ b/dune/gfe/cosseratrodenergy.hh
@@ -33,13 +33,13 @@ class CosseratRodEnergy
     typedef typename GridView::template Codim<0>::Entity Entity;
 
     // some other sizes
-    enum {dim=GridView::dimension};
+    constexpr static int dim = GridView::dimension;
 
     // Quadrature order used for the extension and shear energy
-    enum {shearQuadOrder = 2};
+    constexpr static int shearQuadOrder = 2;
 
     // Quadrature order used for the bending and torsion energy
-    enum {bendingQuadOrder = 2};
+    constexpr static int bendingQuadOrder = 2;
 
 public:
 
diff --git a/dune/gfe/embeddedglobalgfefunction.hh b/dune/gfe/embeddedglobalgfefunction.hh
index 9e48b78d..3d770b15 100644
--- a/dune/gfe/embeddedglobalgfefunction.hh
+++ b/dune/gfe/embeddedglobalgfefunction.hh
@@ -32,12 +32,12 @@ public:
     typedef typename TargetSpace::EmbeddedTangentVector EmbeddedTangentVector;
 
     //! Dimension of the grid.
-    enum { gridDim = GridView::dimension };
+    constexpr static int gridDim = GridView::dimension;
 
     static constexpr auto dimworld = GridView::dimensionworld;
 
     //! Dimension of the embedded tanget space
-    enum { embeddedDim = EmbeddedTangentVector::dimension };
+    constexpr static int embeddedDim = EmbeddedTangentVector::dimension;
 
 
     //! Create global function by a global basis and the corresponding coefficient vector
diff --git a/dune/gfe/geodesicfeassembler.hh b/dune/gfe/geodesicfeassembler.hh
index cdd98f40..01d0d279 100644
--- a/dune/gfe/geodesicfeassembler.hh
+++ b/dune/gfe/geodesicfeassembler.hh
@@ -20,10 +20,10 @@ class GeodesicFEAssembler {
     using LocalStiffness = LocalGeodesicFEStiffness<Basis, TargetSpace>;
 
     //! Dimension of the grid.
-    enum { gridDim = GridView::dimension };
+    constexpr static int gridDim = GridView::dimension;
 
     //! Dimension of a tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     //!
     typedef Dune::FieldMatrix<double, blocksize, blocksize> MatrixBlock;
diff --git a/dune/gfe/geodesicfeassemblerwrapper.hh b/dune/gfe/geodesicfeassemblerwrapper.hh
index c42a1e3e..eb15d7dc 100644
--- a/dune/gfe/geodesicfeassemblerwrapper.hh
+++ b/dune/gfe/geodesicfeassemblerwrapper.hh
@@ -18,12 +18,12 @@ GeodesicFEAssemblerWrapper {
     typedef typename Basis::GridView GridView;
 
     //! Dimension of the grid.
-    enum { gridDim = GridView::dimension };
+    constexpr static int gridDim = GridView::dimension;
 
     //! Dimension of the tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
-    enum { blocksize0 = MixedSpace0::TangentVector::dimension };
-    enum { blocksize1 = MixedSpace1::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
+    constexpr static int blocksize0 = MixedSpace0::TangentVector::dimension;
+    constexpr static int blocksize1 = MixedSpace1::TangentVector::dimension;
 
     //!
     typedef Dune::FieldMatrix<double, blocksize, blocksize> MatrixBlock;
diff --git a/dune/gfe/globalgeodesicfefunction.hh b/dune/gfe/globalgeodesicfefunction.hh
index 1f5ea961..beba422c 100644
--- a/dune/gfe/globalgeodesicfefunction.hh
+++ b/dune/gfe/globalgeodesicfefunction.hh
@@ -44,10 +44,10 @@ public:
     typedef typename TargetSpace::EmbeddedTangentVector EmbeddedTangentVector;
 
     //! Dimension of the grid.
-    enum { gridDim = GridView::dimension };
+    constexpr static int gridDim = GridView::dimension;
 
     //! Dimension of the embedded tanget space
-    enum { embeddedDim = EmbeddedTangentVector::dimension };
+    constexpr static int embeddedDim = EmbeddedTangentVector::dimension;
 
 
     //! Create global function by a global basis and the corresponding coefficient vector
diff --git a/dune/gfe/harmonicenergy.hh b/dune/gfe/harmonicenergy.hh
index 457e3291..eaa0421d 100644
--- a/dune/gfe/harmonicenergy.hh
+++ b/dune/gfe/harmonicenergy.hh
@@ -16,7 +16,7 @@ class HarmonicEnergy
     typedef typename TargetSpace::ctype RT;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
diff --git a/dune/gfe/l2distancesquaredenergy.hh b/dune/gfe/l2distancesquaredenergy.hh
index 911abfab..2546e70d 100644
--- a/dune/gfe/l2distancesquaredenergy.hh
+++ b/dune/gfe/l2distancesquaredenergy.hh
@@ -18,7 +18,7 @@ class L2DistanceSquaredEnergy
   typedef typename TargetSpace::ctype RT;
 
   // some other sizes
-  enum {gridDim=GridView::dimension};
+  constexpr static int gridDim = GridView::dimension;
 
 public:
 
diff --git a/dune/gfe/localgeodesicfeadolcstiffness.hh b/dune/gfe/localgeodesicfeadolcstiffness.hh
index f7c4d27c..9bbf4c0c 100644
--- a/dune/gfe/localgeodesicfeadolcstiffness.hh
+++ b/dune/gfe/localgeodesicfeadolcstiffness.hh
@@ -32,15 +32,15 @@ class LocalGeodesicFEADOLCStiffness
     typedef typename TargetSpace::template rebind<adouble>::other ATargetSpace;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of a tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
 
     LocalGeodesicFEADOLCStiffness(const Dune::GFE::LocalEnergy<Basis, ATargetSpace>* energy)
     : localEnergy_(energy)
diff --git a/dune/gfe/localgeodesicfefdstiffness.hh b/dune/gfe/localgeodesicfefdstiffness.hh
index 01503abf..61d3cd25 100644
--- a/dune/gfe/localgeodesicfefdstiffness.hh
+++ b/dune/gfe/localgeodesicfefdstiffness.hh
@@ -21,15 +21,15 @@ class LocalGeodesicFEFDStiffness
     typedef typename TargetSpace::template rebind<field_type>::other ATargetSpace;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of a tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
 
     LocalGeodesicFEFDStiffness(const Dune::GFE::LocalEnergy<Basis, ATargetSpace>* energy)
     : localEnergy_(energy)
diff --git a/dune/gfe/localgeodesicfestiffness.hh b/dune/gfe/localgeodesicfestiffness.hh
index ca0205e0..ff3d17ab 100644
--- a/dune/gfe/localgeodesicfestiffness.hh
+++ b/dune/gfe/localgeodesicfestiffness.hh
@@ -17,15 +17,15 @@ class LocalGeodesicFEStiffness
     typedef typename GridView::template Codim<0>::Entity Entity;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of a tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
 
     /** \brief Assemble the local gradient and stiffness matrix at the current position
 
diff --git a/dune/gfe/localintegralenergy.hh b/dune/gfe/localintegralenergy.hh
index e6d85ef1..7e3e7b4e 100644
--- a/dune/gfe/localintegralenergy.hh
+++ b/dune/gfe/localintegralenergy.hh
@@ -29,7 +29,7 @@ class LocalIntegralEnergy
   using DT = typename GridView::Grid::ctype;
   using RT = typename Dune::GFE::LocalEnergy<Basis,TargetSpaces...>::RT;
 
-  enum {gridDim=GridView::dimension};
+  constexpr static int gridDim = GridView::dimension;
 
 public:
 
diff --git a/dune/gfe/mixedgfeassembler.hh b/dune/gfe/mixedgfeassembler.hh
index 883af00b..a2bf0432 100644
--- a/dune/gfe/mixedgfeassembler.hh
+++ b/dune/gfe/mixedgfeassembler.hh
@@ -19,11 +19,11 @@ class MixedGFEAssembler {
     typedef typename GridView::template Codim<0>::template Partition<Dune::Interior_Partition>::Iterator ElementIterator;
 
     //! Dimension of the grid.
-    enum { gridDim = GridView::dimension };
+    constexpr static int gridDim = GridView::dimension;
 
     //! Dimension of a tangent space
-    enum { blocksize0 = TargetSpace0::TangentVector::dimension };
-    enum { blocksize1 = TargetSpace1::TangentVector::dimension };
+    constexpr static int blocksize0 = TargetSpace0::TangentVector::dimension;
+    constexpr static int blocksize1 = TargetSpace1::TangentVector::dimension;
 
     //!
     typedef Dune::BCRSMatrix<Dune::FieldMatrix<double, blocksize0, blocksize0> > MatrixBlock00;
diff --git a/dune/gfe/mixedlocalgeodesicfestiffness.hh b/dune/gfe/mixedlocalgeodesicfestiffness.hh
index 68a6dbbb..d0245be4 100644
--- a/dune/gfe/mixedlocalgeodesicfestiffness.hh
+++ b/dune/gfe/mixedlocalgeodesicfestiffness.hh
@@ -15,13 +15,13 @@ class MixedLocalGeodesicFEStiffness
     typedef typename GridView::template Codim<0>::Entity Entity;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of a tangent space
-    enum { deformationBlocksize = DeformationTargetSpace::TangentVector::dimension };
-    enum { orientationBlocksize = OrientationTargetSpace::TangentVector::dimension };
+    constexpr static int deformationBlocksize = DeformationTargetSpace::TangentVector::dimension;
+    constexpr static int orientationBlocksize = OrientationTargetSpace::TangentVector::dimension;
 
     /** \brief Assemble the local stiffness matrix at the current position
 
diff --git a/dune/gfe/mixedlocalgfeadolcstiffness.hh b/dune/gfe/mixedlocalgfeadolcstiffness.hh
index 75a34a0a..3198cf05 100644
--- a/dune/gfe/mixedlocalgfeadolcstiffness.hh
+++ b/dune/gfe/mixedlocalgfeadolcstiffness.hh
@@ -33,17 +33,17 @@ class MixedLocalGFEADOLCStiffness
     typedef typename TargetSpace1::template rebind<adouble>::other ATargetSpace1;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of a tangent space
-    enum { blocksize0 = TargetSpace0::TangentVector::dimension };
-    enum { blocksize1 = TargetSpace1::TangentVector::dimension };
+    constexpr static int blocksize0 = TargetSpace0::TangentVector::dimension;
+    constexpr static int blocksize1 = TargetSpace1::TangentVector::dimension;
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize0 = TargetSpace0::EmbeddedTangentVector::dimension };
-    enum { embeddedBlocksize1 = TargetSpace1::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize0 = TargetSpace0::EmbeddedTangentVector::dimension;
+    constexpr static int embeddedBlocksize1 = TargetSpace1::EmbeddedTangentVector::dimension;
 
     MixedLocalGFEADOLCStiffness(const MixedLocalGeodesicFEStiffness<Basis, ATargetSpace0,
                                                                     ATargetSpace1>* energy)
diff --git a/dune/gfe/neumannenergy.hh b/dune/gfe/neumannenergy.hh
index dd8f61b1..1c16908a 100644
--- a/dune/gfe/neumannenergy.hh
+++ b/dune/gfe/neumannenergy.hh
@@ -24,7 +24,7 @@ class NeumannEnergy
   using DT = typename GridView::Grid::ctype;
   using RT = typename Dune::GFE::LocalEnergy<Basis,TargetSpaces...>::RT;
 
-  enum {dim=GridView::dimension};
+  constexpr static int dim = GridView::dimension;
 
 public:
 
diff --git a/dune/gfe/nonplanarcosseratshellenergy.hh b/dune/gfe/nonplanarcosseratshellenergy.hh
index f8d4b3bf..e8a3678e 100644
--- a/dune/gfe/nonplanarcosseratshellenergy.hh
+++ b/dune/gfe/nonplanarcosseratshellenergy.hh
@@ -44,8 +44,8 @@ class NonplanarCosseratShellEnergy
   typedef typename GridView::template Codim<0>::Entity Entity;
 
   // some other sizes
-  enum {gridDim=GridView::dimension};
-  enum {dimworld=GridView::dimensionworld};
+  constexpr static int gridDim = GridView::dimension;
+  constexpr static int dimworld = GridView::dimensionworld;
 
 public:
 
diff --git a/dune/gfe/periodic1dpq1nodalbasis.hh b/dune/gfe/periodic1dpq1nodalbasis.hh
index f1f415e7..caf79509 100644
--- a/dune/gfe/periodic1dpq1nodalbasis.hh
+++ b/dune/gfe/periodic1dpq1nodalbasis.hh
@@ -174,7 +174,7 @@ protected:
 template<typename GV, class MI>
 class Periodic1DPQ1NodeIndexSet
 {
-  enum {dim = GV::dimension};
+  constexpr static int dim = GV::dimension;
 
 public:
 
diff --git a/dune/gfe/surfacecosseratenergy.hh b/dune/gfe/surfacecosseratenergy.hh
index 393d8d89..0f4315c9 100644
--- a/dune/gfe/surfacecosseratenergy.hh
+++ b/dune/gfe/surfacecosseratenergy.hh
@@ -38,8 +38,8 @@ class SurfaceCosseratEnergy
   using RBM1 = Rotation<RT,GridView::dimensionworld> ;
   using RBM = RigidBodyMotion<RT,GridView::dimensionworld> ;
 
-  enum {dimWorld=GridView::dimensionworld};
-  enum {gridDim=GridView::dimension};
+  constexpr static int dimWorld = GridView::dimensionworld;
+  constexpr static int gridDim = GridView::dimension;
   static constexpr int boundaryDim = gridDim - 1;
 
   /** \brief Compute the derivative of the rotation (with respect to x), but wrt matrix coordinates
diff --git a/dune/gfe/trustregionmmgbasesolver.hh b/dune/gfe/trustregionmmgbasesolver.hh
index 7b4d9aa2..416087a8 100644
--- a/dune/gfe/trustregionmmgbasesolver.hh
+++ b/dune/gfe/trustregionmmgbasesolver.hh
@@ -31,7 +31,7 @@ class TrustRegionMMGBaseSolver
     // For complex-valued data
     typedef typename Dune::FieldTraits<field_type>::real_type real_type;
 
-    enum {blocksize = VectorType::value_type::dimension};
+    constexpr static int blocksize = VectorType::value_type::dimension;
     typedef Dune::BitSetVector<blocksize> BitVectorType;
 
 public:
diff --git a/dune/gfe/weightedsumenergy.hh b/dune/gfe/weightedsumenergy.hh
index 57795057..aebc046a 100644
--- a/dune/gfe/weightedsumenergy.hh
+++ b/dune/gfe/weightedsumenergy.hh
@@ -19,7 +19,7 @@ class WeightedSumEnergy
   typedef typename TargetSpace::ctype RT;
 
   // some other sizes
-  enum {gridDim=GridView::dimension};
+  constexpr static int gridDim = GridView::dimension;
 
 public:
 
diff --git a/test/adolctest.cc b/test/adolctest.cc
index 97c1bed7..550f61cc 100644
--- a/test/adolctest.cc
+++ b/test/adolctest.cc
@@ -66,12 +66,12 @@ class LocalADOLCStiffness
     typedef typename TargetSpace::template rebind<adouble>::other ATargetSpace;
 
     // some other sizes
-    enum {gridDim=GridView::dimension};
+    constexpr static int gridDim = GridView::dimension;
 
 public:
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
 
     LocalADOLCStiffness(const GFE::LocalEnergy<Basis, ATargetSpace>* energy)
     : localEnergy_(energy)
@@ -223,10 +223,10 @@ class LocalFDStiffness
 public:
 
     //! Dimension of a tangent space
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     //! Dimension of the embedding space
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
 
     LocalFDStiffness(const GFE::LocalEnergy<Basis, ATargetSpace>* energy)
     : localEnergy_(energy)
@@ -415,8 +415,8 @@ int main (int argc, char *argv[]) try
     MPIHelper::instance(argc, argv);
 
     typedef std::vector<TargetSpace> SolutionType;
-    enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
-    enum { blocksize = TargetSpace::TangentVector::dimension };
+    constexpr static int embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension;
+    constexpr static int blocksize = TargetSpace::TangentVector::dimension;
 
     // ///////////////////////////////////////
     //    Create the grid
-- 
GitLab