From ed72c55cd62a246281df6f13778f248962de5375 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Mon, 3 Sep 2012 18:49:50 +0200
Subject: [PATCH] Do not hardcode the boundary

---
 src/one-body-sample.cc | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 769ecb8e..b7a9045e 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -74,11 +74,12 @@
 
 int const dim = DIM;
 
-template <class GridView>
+template <class GridView, class GridCorner>
 void setup_boundary(GridView const &gridView,
                     Dune::BitSetVector<dim> &ignoreNodes,
                     Dune::BitSetVector<1> &neumannNodes,
-                    Dune::BitSetVector<1> &frictionalNodes) {
+                    Dune::BitSetVector<1> &frictionalNodes,
+                    GridCorner const &lowerLeft, GridCorner const &upperRight) {
   typedef typename GridView::template Codim<dim>::Iterator VertexLeafIterator;
 
   Dune::MultipleCodimMultipleGeomTypeMapper<
@@ -88,17 +89,15 @@ void setup_boundary(GridView const &gridView,
        it != gridView.template end<dim>(); ++it) {
     assert(it->geometry().corners() == 1);
     Dune::FieldVector<double, dim> const coordinates = it->geometry().corner(0);
-    if (coordinates[1] == 1) {
-      size_t const id = myVertexMapper.map(*it);
+    size_t const id = myVertexMapper.map(*it);
+    if (coordinates[1] == upperRight[1])
       ignoreNodes[id] = true;
-    } else if (coordinates[1] == 0) {
-      size_t const id = myVertexMapper.map(*it);
+    else if (coordinates[1] == lowerLeft[1]) {
       frictionalNodes[id] = true;
       ignoreNodes[id][1] = true; // Zero displacement in direction y
-    } else if (coordinates[0] == 0 || coordinates[0] == 1) {
-      size_t const id = myVertexMapper.map(*it);
+    } else if (coordinates[0] == lowerLeft[0] ||
+               coordinates[0] == upperRight[0])
       neumannNodes[id] = true;
-    }
   }
 }
 
@@ -182,7 +181,8 @@ int main(int argc, char *argv[]) {
     Dune::BitSetVector<dim> ignoreNodes(finestSize, false);
     Dune::BitSetVector<1> neumannNodes(finestSize, false);
     Dune::BitSetVector<1> frictionalNodes(finestSize, false);
-    setup_boundary(leafView, ignoreNodes, neumannNodes, frictionalNodes);
+    setup_boundary(leafView, ignoreNodes, neumannNodes, frictionalNodes,
+                   lowerLeft, upperRight);
 
     auto const nodalIntegrals =
         assemble_frictional<GridType, GridView, SmallVector, P1Basis>(
-- 
GitLab