From 279be7cb8a44a315d57a192a469dc8873b36ed0f Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Fri, 13 Dec 2013 00:49:47 +0100
Subject: [PATCH] [Cleanup] Move common explicit templates to header

---
 src/assemblers_tmpl.cc      | 17 ++---------------
 src/explicitgrid.hh         |  7 +++++++
 src/explicitvectors.hh      | 10 ++++++++++
 src/friction_writer_tmpl.cc | 17 ++++++++---------
 src/solverfactory_tmpl.cc   | 21 +++------------------
 src/timestepping_tmpl.cc    | 10 ++--------
 src/vtk_tmpl.cc             | 19 ++-----------------
 7 files changed, 34 insertions(+), 67 deletions(-)
 create mode 100644 src/explicitgrid.hh
 create mode 100644 src/explicitvectors.hh

diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc
index 9d0d6d1b..35cddb4a 100644
--- a/src/assemblers_tmpl.cc
+++ b/src/assemblers_tmpl.cc
@@ -2,24 +2,11 @@
 #error DIM unset
 #endif
 
-#include <dune/common/fmatrix.hh>
-#include <dune/common/fvector.hh>
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wignored-qualifiers"
-#include <dune/grid/alugrid.hh>
-#pragma clang diagnostic pop
-#include <dune/istl/bvector.hh>
-#include <dune/istl/bcrsmatrix.hh>
-
 #include <dune/fufem/functionspacebases/p1nodalbasis.hh>
 
-using SmallVector = Dune::FieldVector<double, DIM>;
-using SmallMatrix = Dune::FieldMatrix<double, DIM, DIM>;
-using Matrix = Dune::BCRSMatrix<SmallMatrix>;
-using Vector = Dune::BlockVector<SmallVector>;
+#include "explicitgrid.hh"
+#include "explicitvectors.hh"
 
-using Grid = Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming>;
-using GridView = Grid::LeafGridView;
 using P1Basis = P1NodalBasis<GridView, double>;
 using MyAssembler = Assembler<P1Basis, P1Basis>;
 
diff --git a/src/explicitgrid.hh b/src/explicitgrid.hh
new file mode 100644
index 00000000..9100b3d3
--- /dev/null
+++ b/src/explicitgrid.hh
@@ -0,0 +1,7 @@
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wignored-qualifiers"
+#include <dune/grid/alugrid.hh>
+#pragma clang diagnostic pop
+
+using Grid = Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming>;
+using GridView = Grid::LeafGridView;
diff --git a/src/explicitvectors.hh b/src/explicitvectors.hh
new file mode 100644
index 00000000..84ec9cf7
--- /dev/null
+++ b/src/explicitvectors.hh
@@ -0,0 +1,10 @@
+#include <dune/common/fmatrix.hh>
+#include <dune/common/fvector.hh>
+#include <dune/istl/bcrsmatrix.hh>
+#include <dune/istl/bvector.hh>
+
+using SmallVector = Dune::FieldVector<double, DIM>;
+using SmallMatrix = Dune::FieldMatrix<double, DIM, DIM>;
+using Vector = Dune::BlockVector<SmallVector>;
+using Matrix = Dune::BCRSMatrix<SmallMatrix>;
+using ScalarVector = Dune::BlockVector<Dune::FieldVector<double, 1>>;
diff --git a/src/friction_writer_tmpl.cc b/src/friction_writer_tmpl.cc
index 4c907241..dbeb7b8b 100644
--- a/src/friction_writer_tmpl.cc
+++ b/src/friction_writer_tmpl.cc
@@ -1,16 +1,15 @@
+#ifndef DIM
+#error DIM unset
+#endif
+
 #include <dune/common/bitsetvector.hh>
-#include <dune/istl/bvector.hh>
+
+#include "explicitvectors.hh"
 
 using BitVector = Dune::BitSetVector<1>;
-using ScalarVector = Dune::BlockVector<Dune::FieldVector<double, 1>>;
-using Vector2 = Dune::BlockVector<Dune::FieldVector<double, 2>>;
-using Vector3 = Dune::BlockVector<Dune::FieldVector<double, 3>>;
 
 template class FrictionWriter<BitVector>;
 
 template void FrictionWriter<BitVector>::writeInfo(ScalarVector const &alpha,
-                                                   Vector2 const &u,
-                                                   Vector2 const &v);
-template void FrictionWriter<BitVector>::writeInfo(ScalarVector const &alpha,
-                                                   Vector3 const &u,
-                                                   Vector3 const &v);
+                                                   Vector const &u,
+                                                   Vector const &v);
diff --git a/src/solverfactory_tmpl.cc b/src/solverfactory_tmpl.cc
index 5d94c660..7f394c01 100644
--- a/src/solverfactory_tmpl.cc
+++ b/src/solverfactory_tmpl.cc
@@ -2,30 +2,15 @@
 #error DIM unset
 #endif
 
-#include <dune/common/fmatrix.hh>
-#include <dune/common/fvector.hh>
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wignored-qualifiers"
-#include <dune/grid/alugrid.hh>
-#pragma clang diagnostic pop
-
-#include <dune/istl/bcrsmatrix.hh>
-#include <dune/istl/bvector.hh>
+#include "explicitgrid.hh"
+#include "explicitvectors.hh"
 
 #include <dune/tnnmg/nonlinearities/zerononlinearity.hh>
+#include <dune/tnnmg/problem-classes/blocknonlineartnnmgproblem.hh>
 #include <dune/tnnmg/problem-classes/convexproblem.hh>
 
 #include <dune/tectonic/globalnonlinearity.hh>
 #include <dune/tectonic/myblockproblem.hh>
-#include <dune/tnnmg/problem-classes/blocknonlineartnnmgproblem.hh>
-
-using SmallVector = Dune::FieldVector<double, DIM>;
-using SmallMatrix = Dune::FieldMatrix<double, DIM, DIM>;
-using Vector = Dune::BlockVector<SmallVector>;
-using Matrix = Dune::BCRSMatrix<SmallMatrix>;
-
-using Grid = Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming>;
 
 template class SolverFactory<
     DIM, MyBlockProblem<
diff --git a/src/timestepping_tmpl.cc b/src/timestepping_tmpl.cc
index ce3dad02..7c63e759 100644
--- a/src/timestepping_tmpl.cc
+++ b/src/timestepping_tmpl.cc
@@ -2,16 +2,10 @@
 #error DIM unset
 #endif
 
-#include <dune/common/fmatrix.hh>
 #include <dune/common/function.hh>
-#include <dune/common/fvector.hh>
-#include <dune/istl/bcrsmatrix.hh>
-#include <dune/istl/bvector.hh>
 
-using SmallVector = Dune::FieldVector<double, DIM>;
-using SmallMatrix = Dune::FieldMatrix<double, DIM, DIM>;
-using Matrix = Dune::BCRSMatrix<SmallMatrix>;
-using Vector = Dune::BlockVector<SmallVector>;
+#include "explicitvectors.hh"
+
 using Function = Dune::VirtualFunction<double, double>;
 
 template class Newmark<Vector, Matrix, Function, DIM>;
diff --git a/src/vtk_tmpl.cc b/src/vtk_tmpl.cc
index 6d2c9688..bad777b6 100644
--- a/src/vtk_tmpl.cc
+++ b/src/vtk_tmpl.cc
@@ -2,27 +2,12 @@
 #error DIM unset
 #endif
 
-#include <dune/common/fmatrix.hh>
-#include <dune/common/fvector.hh>
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wignored-qualifiers"
-#include <dune/grid/alugrid.hh>
-#pragma clang diagnostic pop
-
-#include <dune/istl/bvector.hh>
+#include "explicitgrid.hh"
+#include "explicitvectors.hh"
 
 #include <dune/fufem/functionspacebases/p0basis.hh>
 #include <dune/fufem/functionspacebases/p1nodalbasis.hh>
 
-using ScalarVector = Dune::BlockVector<Dune::FieldVector<double, 1>>;
-
-using SmallVector = Dune::FieldVector<double, DIM>;
-using SmallMatrix = Dune::FieldMatrix<double, DIM, DIM>;
-using Vector = Dune::BlockVector<SmallVector>;
-
-using Grid = Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming>;
-using GridView = Grid::LeafGridView;
 using P1Basis = P1NodalBasis<GridView, double>;
 using MyP0Basis = P0Basis<GridView, double>;
 
-- 
GitLab