From e11a940e61d310382cd3fa454523abca818fdfec Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Thu, 23 Jul 2020 18:43:26 +0200
Subject: [PATCH] [PL] Reorder template args for deduction in initSM

Putting IntegrationMethod after GlobalDim enables automatic
template argument deduction for that type.
---
 .../GenericNaturalBoundaryConditionLocalAssembler.h      | 6 +++---
 .../NormalTractionBoundaryConditionLocalAssembler.h      | 4 ++--
 ProcessLib/ComponentTransport/ComponentTransportFEM.h    | 3 +--
 ProcessLib/HT/HTFEM.h                                    | 3 +--
 ProcessLib/HeatConduction/HeatConductionFEM.h            | 6 +++---
 .../HeatTransportBHELocalAssemblerBHE-impl.h             | 5 ++---
 .../HeatTransportBHELocalAssemblerSoil-impl.h            | 6 +++---
 ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h       | 9 ++++-----
 .../HydroMechanicsLocalAssemblerFracture-impl.h          | 9 ++++-----
 .../HydroMechanicsLocalAssemblerMatrix-impl.h            | 9 ++++-----
 .../SmallDeformationLocalAssemblerFracture-impl.h        | 6 +++---
 .../SmallDeformationLocalAssemblerMatrix-impl.h          | 5 ++---
 ...allDeformationLocalAssemblerMatrixNearFracture-impl.h | 9 +++------
 ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h         | 3 +--
 ProcessLib/PhaseField/PhaseFieldFEM.h                    | 4 ++--
 .../RichardsComponentTransportFEM-impl.h                 | 5 ++---
 ProcessLib/RichardsFlow/RichardsFlowFEM.h                | 3 +--
 ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h | 9 ++++-----
 ProcessLib/SmallDeformation/SmallDeformationFEM.h        | 4 ++--
 .../SmallDeformationNonlocalFEM.h                        | 4 ++--
 ProcessLib/SourceTerms/LineSourceTermFEM.h               | 3 +--
 .../SourceTerms/Python/PythonSourceTermLocalAssembler.h  | 3 +--
 ProcessLib/SourceTerms/VolumetricSourceTermFEM.h         | 3 +--
 .../SteadyStateDiffusion/SteadyStateDiffusionFEM.h       | 6 +++---
 ProcessLib/TES/TESLocalAssembler-impl.h                  | 6 +++---
 .../ThermalTwoPhaseFlowWithPPLocalAssembler.h            | 3 +--
 .../ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h  | 9 ++++-----
 .../ThermoMechanicalPhaseFieldFEM.h                      | 5 ++---
 ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h     | 5 ++---
 .../TwoPhaseFlowWithPPLocalAssembler.h                   | 3 +--
 .../TwoPhaseFlowWithPrhoLocalAssembler.h                 | 6 +++---
 ProcessLib/Utils/InitShapeMatrices.h                     | 4 ++--
 Tests/MathLib/TestGaussLegendreIntegration.cpp           | 2 +-
 Tests/NumLib/TestExtrapolation.cpp                       | 8 +++-----
 34 files changed, 77 insertions(+), 101 deletions(-)

diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
index 40a29e985c2..6acaa079fc3 100644
--- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
@@ -60,9 +60,9 @@ private:
             ns_and_weights;
         ns_and_weights.reserve(integration_method.getNumberOfPoints());
 
-        auto sms = initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                     IntegrationMethod, GlobalDim>(
-            e, is_axially_symmetric, integration_method);
+        auto sms =
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+                e, is_axially_symmetric, integration_method);
         for (unsigned ip = 0; ip < sms.size(); ++ip)
         {
             auto& sm = sms[ip];
diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
index 8ed02b06f01..7d2c9715094 100644
--- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h
@@ -78,8 +78,8 @@ public:
 
         auto const shape_matrices_u =
             initShapeMatrices<ShapeFunctionDisplacement, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
-                e, is_axially_symmetric, _integration_method);
+                              GlobalDim>(e, is_axially_symmetric,
+                                         _integration_method);
 
         GlobalDimVectorType element_normal(GlobalDim);
 
diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h
index 2425bfefe41..248bf7f5458 100644
--- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h
+++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h
@@ -146,8 +146,7 @@ public:
         _ip_data.reserve(n_integration_points);
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h
index a48d136b84f..9e0b01a8b66 100644
--- a/ProcessLib/HT/HTFEM.h
+++ b/ProcessLib/HT/HTFEM.h
@@ -69,8 +69,7 @@ public:
         _ip_data.reserve(n_integration_points);
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/HeatConduction/HeatConductionFEM.h b/ProcessLib/HeatConduction/HeatConductionFEM.h
index dc676f52149..0b2189bed4a 100644
--- a/ProcessLib/HeatConduction/HeatConductionFEM.h
+++ b/ProcessLib/HeatConduction/HeatConductionFEM.h
@@ -79,9 +79,9 @@ public:
         : _element(element),
           _process_data(process_data),
           _integration_method(integration_order),
-          _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                            IntegrationMethod, GlobalDim>(
-              element, is_axially_symmetric, _integration_method)),
+          _shape_matrices(
+              initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+                  element, is_axially_symmetric, _integration_method)),
           _heat_fluxes(
               GlobalDim,
               std::vector<double>(_integration_method.getNumberOfPoints()))
diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h
index 548e2efa719..a35b8f72df7 100644
--- a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h
+++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h
@@ -40,9 +40,8 @@ HeatTransportBHELocalAssemblerBHE<ShapeFunction, IntegrationMethod, BHEType>::
     _secondary_data.N.resize(n_integration_points);
 
     auto const shape_matrices =
-        initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod,
-                          3 /* GlobalDim */>(e, is_axially_symmetric,
-                                             _integration_method);
+        initShapeMatrices<ShapeFunction, ShapeMatricesType, 3 /* GlobalDim */>(
+            e, is_axially_symmetric, _integration_method);
 
     // ip data initialization
     for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h
index 2a796f104d9..acd741623f9 100644
--- a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h
+++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h
@@ -45,9 +45,9 @@ HeatTransportBHELocalAssemblerSoil<ShapeFunction, IntegrationMethod>::
     _ip_data.reserve(n_integration_points);
     _secondary_data.N.resize(n_integration_points);
 
-    _shape_matrices = initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                        IntegrationMethod, 3 /* GlobalDim */>(
-        e, is_axially_symmetric, _integration_method);
+    _shape_matrices =
+        initShapeMatrices<ShapeFunction, ShapeMatricesType, 3 /* GlobalDim */>(
+            e, is_axially_symmetric, _integration_method);
 
     ParameterLib::SpatialPosition x_position;
     x_position.setElementID(_element_id);
diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
index 90401c56190..6c2ed982db6 100644
--- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
+++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h
@@ -51,14 +51,13 @@ HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
 
     auto const shape_matrices_u =
         initShapeMatrices<ShapeFunctionDisplacement,
-                          ShapeMatricesTypeDisplacement, IntegrationMethod,
-                          DisplacementDim>(e, is_axially_symmetric,
-                                           _integration_method);
+                          ShapeMatricesTypeDisplacement, DisplacementDim>(
+            e, is_axially_symmetric, _integration_method);
 
     auto const shape_matrices_p =
         initShapeMatrices<ShapeFunctionPressure, ShapeMatricesTypePressure,
-                          IntegrationMethod, DisplacementDim>(
-            e, is_axially_symmetric, _integration_method);
+                          DisplacementDim>(e, is_axially_symmetric,
+                                           _integration_method);
 
     auto const& solid_material =
         MaterialLib::Solids::selectSolidConstitutiveRelation(
diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
index ad016b1f60b..f1b256c2649 100644
--- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
+++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
@@ -63,14 +63,13 @@ HydroMechanicsLocalAssemblerFracture<ShapeFunctionDisplacement,
 
     auto const shape_matrices_u =
         initShapeMatrices<ShapeFunctionDisplacement,
-                          ShapeMatricesTypeDisplacement, IntegrationMethod,
-                          GlobalDim>(e, is_axially_symmetric,
-                                     integration_method);
+                          ShapeMatricesTypeDisplacement, GlobalDim>(
+            e, is_axially_symmetric, integration_method);
 
     auto const shape_matrices_p =
         initShapeMatrices<ShapeFunctionPressure, ShapeMatricesTypePressure,
-                          IntegrationMethod, GlobalDim>(e, is_axially_symmetric,
-                                                        integration_method);
+                          GlobalDim>(e, is_axially_symmetric,
+                                     integration_method);
 
     auto const& frac_prop = *_process_data.fracture_property;
 
diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h
index 6a9c5211dd6..f3d4e064bf4 100644
--- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h
+++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h
@@ -54,14 +54,13 @@ HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
 
     auto const shape_matrices_u =
         initShapeMatrices<ShapeFunctionDisplacement,
-                          ShapeMatricesTypeDisplacement, IntegrationMethod,
-                          GlobalDim>(e, is_axially_symmetric,
-                                     integration_method);
+                          ShapeMatricesTypeDisplacement, GlobalDim>(
+            e, is_axially_symmetric, integration_method);
 
     auto const shape_matrices_p =
         initShapeMatrices<ShapeFunctionPressure, ShapeMatricesTypePressure,
-                          IntegrationMethod, GlobalDim>(e, is_axially_symmetric,
-                                                        integration_method);
+                          GlobalDim>(e, is_axially_symmetric,
+                                     integration_method);
 
     auto& solid_material = MaterialLib::Solids::selectSolidConstitutiveRelation(
         _process_data.solid_materials, _process_data.material_ids, e.getID());
diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h
index e1c7c7490d6..1b2339b2504 100644
--- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h
+++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h
@@ -43,9 +43,9 @@ SmallDeformationLocalAssemblerFracture<ShapeFunction, IntegrationMethod,
           dofIndex_to_localIndex),
       _process_data(process_data),
       _integration_method(integration_order),
-      _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                        IntegrationMethod, DisplacementDim>(
-          e, is_axially_symmetric, _integration_method)),
+      _shape_matrices(
+          initShapeMatrices<ShapeFunction, ShapeMatricesType, DisplacementDim>(
+              e, is_axially_symmetric, _integration_method)),
       _element(e)
 {
     assert(_element.getDimension() == DisplacementDim - 1);
diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h
index 85039a99fc5..e6f7f4835dd 100644
--- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h
+++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h
@@ -60,9 +60,8 @@ SmallDeformationLocalAssemblerMatrix<ShapeFunction, IntegrationMethod,
     _secondary_data.N.resize(n_integration_points);
 
     auto const shape_matrices =
-        initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod,
-                          DisplacementDim>(e, is_axially_symmetric,
-                                           _integration_method);
+        initShapeMatrices<ShapeFunction, ShapeMatricesType, DisplacementDim>(
+            e, is_axially_symmetric, _integration_method);
 
     auto& solid_material = MaterialLib::Solids::selectSolidConstitutiveRelation(
         _process_data.solid_materials, _process_data.material_ids, e.getID());
diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h
index 06b49f64877..f413a118973 100644
--- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h
+++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h
@@ -67,12 +67,9 @@ SmallDeformationLocalAssemblerMatrixNearFracture<ShapeFunction,
       _element(e),
       _is_axially_symmetric(is_axially_symmetric)
 {
-    std::vector<
-        ShapeMatrices,
-        Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
-        shape_matrices = initShapeMatrices<ShapeFunction,
-                                           ShapeMatricesType,
-                                           IntegrationMethod,
+    std::vector<ShapeMatrices, Eigen::aligned_allocator<
+                                   typename ShapeMatricesType::ShapeMatrices>>
+        shape_matrices = initShapeMatrices<ShapeFunction, ShapeMatricesType,
                                            DisplacementDim>(
             e, is_axially_symmetric, _integration_method);
 
diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
index 674e2cd2466..0f4f01348eb 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
@@ -100,8 +100,7 @@ public:
         _ip_data.reserve(n_integration_points);
 
         auto const& shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/PhaseField/PhaseFieldFEM.h b/ProcessLib/PhaseField/PhaseFieldFEM.h
index 58d02d3d817..759607d7308 100644
--- a/ProcessLib/PhaseField/PhaseFieldFEM.h
+++ b/ProcessLib/PhaseField/PhaseFieldFEM.h
@@ -170,8 +170,8 @@ public:
 
         auto const shape_matrices =
             initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, DisplacementDim>(
-                e, is_axially_symmetric, _integration_method);
+                              DisplacementDim>(e, is_axially_symmetric,
+                                               _integration_method);
 
         ParameterLib::SpatialPosition x_position;
         x_position.setElementID(_element.getID());
diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h
index a1ab6fee86e..4f261818a43 100644
--- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h
+++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h
@@ -37,9 +37,8 @@ LocalAssemblerData<ShapeFunction, IntegrationMethod, GlobalDim>::
     _ip_data.reserve(n_integration_points);
 
     auto const shape_matrices =
-        initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod,
-                          GlobalDim>(element, is_axially_symmetric,
-                                     _integration_method);
+        initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+            element, is_axially_symmetric, _integration_method);
 
     for (unsigned ip = 0; ip < n_integration_points; ip++)
     {
diff --git a/ProcessLib/RichardsFlow/RichardsFlowFEM.h b/ProcessLib/RichardsFlow/RichardsFlowFEM.h
index dd83b3c417b..7096a0212f0 100644
--- a/ProcessLib/RichardsFlow/RichardsFlowFEM.h
+++ b/ProcessLib/RichardsFlow/RichardsFlowFEM.h
@@ -115,8 +115,7 @@ public:
         _ip_data.reserve(n_integration_points);
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h
index da82b8ef3ff..a3918d38e02 100644
--- a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h
+++ b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h
@@ -50,14 +50,13 @@ RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement,
 
     auto const shape_matrices_u =
         initShapeMatrices<ShapeFunctionDisplacement,
-                          ShapeMatricesTypeDisplacement, IntegrationMethod,
-                          DisplacementDim>(e, is_axially_symmetric,
-                                           _integration_method);
+                          ShapeMatricesTypeDisplacement, DisplacementDim>(
+            e, is_axially_symmetric, _integration_method);
 
     auto const shape_matrices_p =
         initShapeMatrices<ShapeFunctionPressure, ShapeMatricesTypePressure,
-                          IntegrationMethod, DisplacementDim>(
-            e, is_axially_symmetric, _integration_method);
+                          DisplacementDim>(e, is_axially_symmetric,
+                                           _integration_method);
 
     auto const& solid_material =
         MaterialLib::Solids::selectSolidConstitutiveRelation(
diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h
index fcc28dc600a..9c3a21c369b 100644
--- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h
+++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h
@@ -126,8 +126,8 @@ public:
 
         auto const shape_matrices =
             initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, DisplacementDim>(
-                e, is_axially_symmetric, _integration_method);
+                              DisplacementDim>(e, is_axially_symmetric,
+                                               _integration_method);
 
         auto& solid_material =
             MaterialLib::Solids::selectSolidConstitutiveRelation(
diff --git a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h
index 525053841db..50c8a0e5cdb 100644
--- a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h
+++ b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h
@@ -92,8 +92,8 @@ public:
 
         auto const shape_matrices =
             initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, DisplacementDim>(
-                e, is_axially_symmetric, _integration_method);
+                              DisplacementDim>(e, is_axially_symmetric,
+                                               _integration_method);
 
         auto& solid_material =
             MaterialLib::Solids::selectSolidConstitutiveRelation(
diff --git a/ProcessLib/SourceTerms/LineSourceTermFEM.h b/ProcessLib/SourceTerms/LineSourceTermFEM.h
index f811a406f7a..aac0fbf50b5 100644
--- a/ProcessLib/SourceTerms/LineSourceTermFEM.h
+++ b/ProcessLib/SourceTerms/LineSourceTermFEM.h
@@ -63,8 +63,7 @@ public:
             _integration_method.getNumberOfPoints();
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 _element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h b/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h
index afa1c555a3f..1ef23f796a7 100644
--- a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h
+++ b/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h
@@ -72,8 +72,7 @@ public:
             _integration_method.getNumberOfPoints();
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 _element, _is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h b/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
index fbeb33d42c8..88e45152513 100644
--- a/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
+++ b/ProcessLib/SourceTerms/VolumetricSourceTermFEM.h
@@ -63,8 +63,7 @@ public:
             _integration_method.getNumberOfPoints();
 
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 _element, is_axially_symmetric, _integration_method);
 
         for (unsigned ip = 0; ip < n_integration_points; ip++)
diff --git a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h
index 834b1cf49a5..84aff33d92a 100644
--- a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h
+++ b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h
@@ -70,9 +70,9 @@ public:
         : _element(element),
           _process_data(process_data),
           _integration_method(integration_order),
-          _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                            IntegrationMethod, GlobalDim>(
-              element, is_axially_symmetric, _integration_method))
+          _shape_matrices(
+              initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+                  element, is_axially_symmetric, _integration_method))
     {
     }
 
diff --git a/ProcessLib/TES/TESLocalAssembler-impl.h b/ProcessLib/TES/TESLocalAssembler-impl.h
index 2e53aa07e20..00f0a7b88b3 100644
--- a/ProcessLib/TES/TESLocalAssembler-impl.h
+++ b/ProcessLib/TES/TESLocalAssembler-impl.h
@@ -126,9 +126,9 @@ TESLocalAssembler<ShapeFunction_, IntegrationMethod_, GlobalDim>::
                       AssemblyParams const& asm_params)
     : _element(e),
       _integration_method(integration_order),
-      _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                        IntegrationMethod_, GlobalDim>(
-          e, is_axially_symmetric, _integration_method)),
+      _shape_matrices(
+          initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+              e, is_axially_symmetric, _integration_method)),
       _d(asm_params, _integration_method.getNumberOfPoints(), GlobalDim)
 {
 }
diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler.h b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler.h
index 298252db517..ee17ddf92c0 100644
--- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler.h
+++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler.h
@@ -114,8 +114,7 @@ public:
             _integration_method.getNumberOfPoints();
         _ip_data.reserve(n_integration_points);
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
         for (unsigned ip = 0; ip < n_integration_points; ip++)
         {
diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h
index 13c00ac9a70..792363924c7 100644
--- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h
+++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h
@@ -52,14 +52,13 @@ ThermoHydroMechanicsLocalAssembler<ShapeFunctionDisplacement,
 
     auto const shape_matrices_u =
         initShapeMatrices<ShapeFunctionDisplacement,
-                          ShapeMatricesTypeDisplacement, IntegrationMethod,
-                          DisplacementDim>(e, is_axially_symmetric,
-                                           _integration_method);
+                          ShapeMatricesTypeDisplacement, DisplacementDim>(
+            e, is_axially_symmetric, _integration_method);
 
     auto const shape_matrices_p =
         initShapeMatrices<ShapeFunctionPressure, ShapeMatricesTypePressure,
-                          IntegrationMethod, DisplacementDim>(
-            e, is_axially_symmetric, _integration_method);
+                          DisplacementDim>(e, is_axially_symmetric,
+                                           _integration_method);
 
     auto const& solid_material =
         MaterialLib::Solids::selectSolidConstitutiveRelation(
diff --git a/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldFEM.h b/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldFEM.h
index 0df4e3d795e..5cad34688fc 100644
--- a/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldFEM.h
+++ b/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldFEM.h
@@ -184,11 +184,10 @@ public:
                 "support is implemented.");
         }
 
-
         auto const shape_matrices =
             initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, DisplacementDim>(
-                e, is_axially_symmetric, _integration_method);
+                              DisplacementDim>(e, is_axially_symmetric,
+                                               _integration_method);
 
         ParameterLib::SpatialPosition x_position;
         x_position.setElementID(_element.getID());
diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h
index 2ea0cd0fe07..5a77f5dbeb6 100644
--- a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h
+++ b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h
@@ -41,9 +41,8 @@ ThermoMechanicsLocalAssembler<ShapeFunction, IntegrationMethod,
     _secondary_data.N.resize(n_integration_points);
 
     auto const shape_matrices =
-        initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod,
-                          DisplacementDim>(e, is_axially_symmetric,
-                                           _integration_method);
+        initShapeMatrices<ShapeFunction, ShapeMatricesType, DisplacementDim>(
+            e, is_axially_symmetric, _integration_method);
 
     auto& solid_material = MaterialLib::Solids::selectSolidConstitutiveRelation(
         _process_data.solid_materials, _process_data.material_ids, e.getID());
diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler.h b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler.h
index f695f6e5bb3..18d0ea8fdca 100644
--- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler.h
+++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler.h
@@ -109,8 +109,7 @@ public:
             _integration_method.getNumberOfPoints();
         _ip_data.reserve(n_integration_points);
         auto const shape_matrices =
-            initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                              IntegrationMethod, GlobalDim>(
+            initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
                 element, is_axially_symmetric, _integration_method);
         for (unsigned ip = 0; ip < n_integration_points; ip++)
         {
diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoLocalAssembler.h b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoLocalAssembler.h
index 023a5d9a420..2a42aa3ed8a 100644
--- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoLocalAssembler.h
+++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoLocalAssembler.h
@@ -103,9 +103,9 @@ public:
         TwoPhaseFlowWithPrhoProcessData const& process_data)
         : _element(element),
           _integration_method(integration_order),
-          _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                            IntegrationMethod, GlobalDim>(
-              element, is_axially_symmetric, _integration_method)),
+          _shape_matrices(
+              initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>(
+                  element, is_axially_symmetric, _integration_method)),
           _process_data(process_data),
           _saturation(
               std::vector<double>(_integration_method.getNumberOfPoints())),
diff --git a/ProcessLib/Utils/InitShapeMatrices.h b/ProcessLib/Utils/InitShapeMatrices.h
index fe31adc7afa..2bd8099fd28 100644
--- a/ProcessLib/Utils/InitShapeMatrices.h
+++ b/ProcessLib/Utils/InitShapeMatrices.h
@@ -17,8 +17,8 @@
 
 namespace ProcessLib
 {
-template <typename ShapeFunction, typename ShapeMatricesType,
-          typename IntegrationMethod, unsigned GlobalDim>
+template <typename ShapeFunction, typename ShapeMatricesType, int GlobalDim,
+          typename IntegrationMethod>
 std::vector<typename ShapeMatricesType::ShapeMatrices,
             Eigen::aligned_allocator<typename ShapeMatricesType::ShapeMatrices>>
 initShapeMatrices(MeshLib::Element const& e, bool is_axially_symmetric,
diff --git a/Tests/MathLib/TestGaussLegendreIntegration.cpp b/Tests/MathLib/TestGaussLegendreIntegration.cpp
index 42c9f01311c..0d2413abdcc 100644
--- a/Tests/MathLib/TestGaussLegendreIntegration.cpp
+++ b/Tests/MathLib/TestGaussLegendreIntegration.cpp
@@ -90,7 +90,7 @@ public:
 
         auto const sms =
             ProcessLib::initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                          IntegrationMethod, GlobalDim>(
+                                          GlobalDim>(
                 _e, false /*is_axially_symmetric*/,
                 IntegrationMethod{integration_order});
         IntegrationMethod integration_method{integration_order};
diff --git a/Tests/NumLib/TestExtrapolation.cpp b/Tests/NumLib/TestExtrapolation.cpp
index e32f6867d4d..71d3ad0156c 100644
--- a/Tests/NumLib/TestExtrapolation.cpp
+++ b/Tests/NumLib/TestExtrapolation.cpp
@@ -86,11 +86,9 @@ public:
                        std::size_t const /*local_matrix_size*/,
                        bool is_axially_symmetric,
                        unsigned const integration_order)
-        : _shape_matrices(
-              ProcessLib::initShapeMatrices<ShapeFunction, ShapeMatricesType,
-                                            IntegrationMethod, GlobalDim>(
-                  e, is_axially_symmetric,
-                  IntegrationMethod{integration_order})),
+        : _shape_matrices(ProcessLib::initShapeMatrices<
+                          ShapeFunction, ShapeMatricesType, GlobalDim>(
+              e, is_axially_symmetric, IntegrationMethod{integration_order})),
           _int_pt_values(_shape_matrices.size())
     {
     }
-- 
GitLab