From 90d8423f7e1d11a2dc6b238075029a55c33f7f85 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 30 Jan 2014 13:12:49 +0100
Subject: [PATCH] [Cleanup] Friction writing: Move templates around

---
 src/friction_writer.cc      | 15 ++++++++-------
 src/friction_writer.hh      |  9 +++++----
 src/friction_writer_tmpl.cc | 10 +---------
 src/one-body-sample.cc      |  2 +-
 4 files changed, 15 insertions(+), 21 deletions(-)

diff --git a/src/friction_writer.cc b/src/friction_writer.cc
index 22cfe296..8dba3a93 100644
--- a/src/friction_writer.cc
+++ b/src/friction_writer.cc
@@ -4,26 +4,27 @@
 
 #include "friction_writer.hh"
 
-template <class BitVector>
-FrictionWriter<BitVector>::FrictionWriter(BitVector const &_boundaryNodes)
+template <class ScalarVector, class Vector>
+FrictionWriter<ScalarVector, Vector>::FrictionWriter(
+    Dune::BitSetVector<1> const &_boundaryNodes)
     : coefficientWriter("coefficients", std::fstream::out),
       displacementWriter("displacements", std::fstream::out),
       stateWriter("states", std::fstream::out),
       velocityWriter("velocities", std::fstream::out),
       boundaryNodes(_boundaryNodes) {}
 
-template <class BitVector> FrictionWriter<BitVector>::~FrictionWriter() {
+template <class ScalarVector, class Vector>
+FrictionWriter<ScalarVector, Vector>::~FrictionWriter() {
   stateWriter.close();
   displacementWriter.close();
   velocityWriter.close();
   coefficientWriter.close();
 }
 
-template <class BitVector>
 template <class ScalarVector, class Vector>
-void FrictionWriter<BitVector>::writeInfo(ScalarVector const &coefficient,
-                                          ScalarVector const &alpha,
-                                          Vector const &u, Vector const &v) {
+void FrictionWriter<ScalarVector, Vector>::writeInfo(
+    ScalarVector const &coefficient, ScalarVector const &alpha, Vector const &u,
+    Vector const &v) {
   for (size_t i = 0; i < boundaryNodes.size(); ++i) {
     if (!boundaryNodes[i][0])
       continue;
diff --git a/src/friction_writer.hh b/src/friction_writer.hh
index 7494b890..dbd28349 100644
--- a/src/friction_writer.hh
+++ b/src/friction_writer.hh
@@ -3,13 +3,14 @@
 
 #include <fstream>
 
-template <class BitVector> class FrictionWriter {
+#include <dune/common/bitsetvector.hh>
+
+template <class ScalarVector, class Vector> class FrictionWriter {
 public:
-  FrictionWriter(BitVector const &_boundaryNodes);
+  FrictionWriter(Dune::BitSetVector<1> const &_boundaryNodes);
 
   ~FrictionWriter();
 
-  template <class ScalarVector, class Vector>
   void writeInfo(ScalarVector const &coefficient, ScalarVector const &alpha,
                  Vector const &u, Vector const &v);
 
@@ -18,6 +19,6 @@ template <class BitVector> class FrictionWriter {
   std::fstream displacementWriter;
   std::fstream stateWriter;
   std::fstream velocityWriter;
-  BitVector const &boundaryNodes;
+  Dune::BitSetVector<1> const &boundaryNodes;
 };
 #endif
diff --git a/src/friction_writer_tmpl.cc b/src/friction_writer_tmpl.cc
index 9a95b261..6b50b0f6 100644
--- a/src/friction_writer_tmpl.cc
+++ b/src/friction_writer_tmpl.cc
@@ -2,14 +2,6 @@
 #error DIM unset
 #endif
 
-#include <dune/common/bitsetvector.hh>
-
 #include "explicitvectors.hh"
 
-using BitVector = Dune::BitSetVector<1>;
-
-template class FrictionWriter<BitVector>;
-
-template void FrictionWriter<BitVector>::writeInfo(
-    ScalarVector const &coefficient, ScalarVector const &alpha, Vector const &u,
-    Vector const &v);
+template class FrictionWriter<ScalarVector, Vector>;
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 0a10471c..935bf3aa 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -269,7 +269,7 @@ int main(int argc, char *argv[]) {
                          parset.sub("a0.solver"));
     }
     // }}}
-    FrictionWriter<Dune::BitSetVector<1>> writer(frictionalNodes);
+    FrictionWriter<ScalarVector, Vector> writer(frictionalNodes);
     {
       ScalarVector c;
       myGlobalNonlinearity->coefficientOfFriction(v_initial, c);
-- 
GitLab