From af90e0dc8b67bbaecb759efeca3fa42e9cd19845 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Mon, 20 Jul 2020 18:04:51 +0200
Subject: [PATCH] [PL] Move a createLocalAsms() impl. from detail ns

This allows the function to be called from outside,
given the GlobalDim template parameter is known.
---
 ProcessLib/Utils/CreateLocalAssemblers.h | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/ProcessLib/Utils/CreateLocalAssemblers.h b/ProcessLib/Utils/CreateLocalAssemblers.h
index df4798282cb..203564db430 100644
--- a/ProcessLib/Utils/CreateLocalAssemblers.h
+++ b/ProcessLib/Utils/CreateLocalAssemblers.h
@@ -21,8 +21,6 @@
 namespace ProcessLib
 {
 
-namespace detail
-{
 template <unsigned GlobalDim, template <typename, typename, unsigned>
                               class LocalAssemblerImplementation,
           typename LocalAssemblerInterface, typename... ExtraCtorArgs>
@@ -33,6 +31,9 @@ void createLocalAssemblers(
     std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
     ExtraCtorArgs&&... extra_ctor_args)
 {
+    static_assert(
+        GlobalDim == 1 || GlobalDim == 2 || GlobalDim == 3,
+        "Meshes with dimension greater than three are not supported.");
     // Shape matrices initializer
     using LocalDataInitializer =
         LocalDataInitializer<LocalAssemblerInterface,
@@ -51,8 +52,6 @@ void createLocalAssemblers(
         std::forward<ExtraCtorArgs>(extra_ctor_args)...);
 }
 
-}  // namespace detail
-
 /*! Creates local assemblers for each element of the given \c mesh.
  *
  * \tparam LocalAssemblerImplementation the individual local assembler type
@@ -80,17 +79,17 @@ void createLocalAssemblers(
     switch (dimension)
     {
         case 1:
-            detail::createLocalAssemblers<1, LocalAssemblerImplementation>(
+            createLocalAssemblers<1, LocalAssemblerImplementation>(
                 dof_table, shapefunction_order, mesh_elements, local_assemblers,
                 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
             break;
         case 2:
-            detail::createLocalAssemblers<2, LocalAssemblerImplementation>(
+            createLocalAssemblers<2, LocalAssemblerImplementation>(
                 dof_table, shapefunction_order, mesh_elements, local_assemblers,
                 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
             break;
         case 3:
-            detail::createLocalAssemblers<3, LocalAssemblerImplementation>(
+            createLocalAssemblers<3, LocalAssemblerImplementation>(
                 dof_table, shapefunction_order, mesh_elements, local_assemblers,
                 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
             break;
-- 
GitLab