From c24def543a14626fe518a7d536bb188f9bc97d66 Mon Sep 17 00:00:00 2001
From: "Praetorius, Simon" <simon.praetorius@tu-dresden.de>
Date: Tue, 26 Mar 2019 17:18:45 +0100
Subject: [PATCH] Instantiate ProblemStat and ProblemInstat for YaspGridBasis
 explicitly

---
 src/amdis/CMakeLists.txt    | 2 +-
 src/amdis/ProblemInstat.cpp | 8 ++++----
 src/amdis/ProblemInstat.hpp | 4 ++++
 src/amdis/ProblemStat.cpp   | 7 ++++---
 src/amdis/ProblemStat.hpp   | 5 ++++-
 5 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/amdis/CMakeLists.txt b/src/amdis/CMakeLists.txt
index 706ce91d..d13f7292 100644
--- a/src/amdis/CMakeLists.txt
+++ b/src/amdis/CMakeLists.txt
@@ -8,7 +8,7 @@ dune_library_add_sources(amdis SOURCES
     Initfile.cpp
     InitfileParser.cpp
     ProblemInstatBase.cpp
-    # ProblemInstat.cpp
+    ProblemInstat.cpp
     ProblemStat.cpp
     StandardProblemIteration.cpp
 )
diff --git a/src/amdis/ProblemInstat.cpp b/src/amdis/ProblemInstat.cpp
index 40f64261..afbf06e0 100644
--- a/src/amdis/ProblemInstat.cpp
+++ b/src/amdis/ProblemInstat.cpp
@@ -1,10 +1,10 @@
-#define AMDIS_NO_EXTERN_PROBLEMINSTAT
+#include "config.h"
 #include "ProblemInstat.hpp"
-#undef AMDIS_NO_EXTERN_PROBLEMINSTAT
-
 
 namespace AMDiS
 {
   // explicit template instatiation
-  // template class ProblemInstat<YaspGridBasis<2,1>>;
+  template class ProblemInstat<YaspGridBasis<2,1>>;
+  template class ProblemInstat<YaspGridBasis<2,2>>;
+
 } // end namespace AMDiS
diff --git a/src/amdis/ProblemInstat.hpp b/src/amdis/ProblemInstat.hpp
index a45f0c0d..f9040435 100644
--- a/src/amdis/ProblemInstat.hpp
+++ b/src/amdis/ProblemInstat.hpp
@@ -110,6 +110,10 @@ namespace AMDiS
     return {name, prob, initialProb};
   }
 
+  // mark template as explicitly instantiated in cpp file
+  extern template class ProblemInstat<YaspGridBasis<2,1>>;
+  extern template class ProblemInstat<YaspGridBasis<2,2>>;
+
 } // end namespace AMDiS
 
 #include "ProblemInstat.inc.hpp"
diff --git a/src/amdis/ProblemStat.cpp b/src/amdis/ProblemStat.cpp
index 691db325..fabf702f 100644
--- a/src/amdis/ProblemStat.cpp
+++ b/src/amdis/ProblemStat.cpp
@@ -1,9 +1,10 @@
-#define AMDIS_NO_EXTERN_PROBLEMSTAT
+#include "config.h"
 #include "ProblemStat.hpp"
-#undef AMDIS_NO_EXTERN_PROBLEMSTAT
-
 
 namespace AMDiS
 {
+  // explicit template instatiation
+  template class ProblemStat<YaspGridBasis<2,1>>;
+  template class ProblemStat<YaspGridBasis<2,2>>;
 
 } // end namespace AMDiS
diff --git a/src/amdis/ProblemStat.hpp b/src/amdis/ProblemStat.hpp
index 050ef6af..b4578993 100644
--- a/src/amdis/ProblemStat.hpp
+++ b/src/amdis/ProblemStat.hpp
@@ -499,7 +499,10 @@ namespace AMDiS
     return {name, grid, globalBasis};
   }
 
+  // mark templates as explicitly instantiated in cpp file
+  extern template class ProblemStat<YaspGridBasis<2,1>>;
+  extern template class ProblemStat<YaspGridBasis<2,2>>;
+
 } // end namespace AMDiS
 
 #include "ProblemStat.inc.hpp"
-
-- 
GitLab