From 1848fb4f47795a7c189bbb77ee31af6908ec81ba Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 3 Nov 2011 14:34:35 +0100
Subject: [PATCH] Pass gridview instead of the whole grid

---
 src/one-body-sample.cc | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index c46797a9..2538ccc5 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -115,13 +115,12 @@ void setup_boundary(GridType const &grid,
 }
 
 // Assembles Neumann boundary term in f
-template <class GridType, class LocalVectorType, class FEBasis>
-void assemble_neumann(GridType const &grid, FEBasis const &feBasis,
+template <class GridType, class GridView, class LocalVectorType, class FEBasis>
+void assemble_neumann(GridView const &gridView, FEBasis const &feBasis,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &
                           f) { // constant sample function on neumann boundary
-  BoundaryPatch<typename GridType::LeafGridView> neumannBoundary(
-      grid.leafView(), neumannNodes);
+  BoundaryPatch<GridView> neumannBoundary(gridView, neumannNodes);
   LocalVectorType SampleVector;
   // FIXME: random values
   SampleVector[0] = 1;
@@ -138,13 +137,12 @@ void assemble_neumann(GridType const &grid, FEBasis const &feBasis,
 }
 
 // Assembles constant 1-function on frictional boundary in nodalIntegrals
-template <class GridType, class LocalVectorType, class FEBasis>
+template <class GridType, class GridView, class LocalVectorType, class FEBasis>
 void assemble_frictional(
-    GridType const &grid, FEBasis const &feBasis,
+    GridView const &gridView, FEBasis const &feBasis,
     Dune::BitSetVector<1> const &frictionalNodes,
     std::vector<Dune::FieldVector<double, 1>> &nodalIntegrals) {
-  BoundaryPatch<typename GridType::LeafGridView> frictionalBoundary(
-      grid.leafView(), frictionalNodes);
+  BoundaryPatch<GridView> frictionalBoundary(gridView, frictionalNodes);
   ConstantFunction<LocalVectorType, Dune::FieldVector<double, 1>>
   constantOneFunction(1);
   NeumannBoundaryAssembler<GridType, Dune::FieldVector<double, 1>>
@@ -206,13 +204,14 @@ int main() {
     VectorType u2 = u1;
 
     VectorType f(grid.size(grid.maxLevel(), dim));
-    assemble_neumann<GridType, SmallVector, P1Basis>(grid, p1Basis,
-                                                     neumannNodes, f);
+    assemble_neumann<GridType, GridType::LeafGridView, SmallVector, P1Basis>(
+        grid.leafView(), p1Basis, neumannNodes, f);
 
     {
       std::vector<Dune::FieldVector<double, 1>> nodalIntegrals;
-      assemble_frictional<GridType, SmallVector, P1Basis>(
-          grid, p1Basis, frictionalNodes, nodalIntegrals);
+      assemble_frictional<GridType, GridType::LeafGridView, SmallVector,
+                          P1Basis>(grid.leafView(), p1Basis, frictionalNodes,
+                                   nodalIntegrals);
 
       // TODO: populate on S_F
       std::vector<double> normalStress;
-- 
GitLab