diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 769ecb8e96e4bbb39df16394a867f59ab7168fdd..b7a9045ec41b6974304d2ab170141a1cdee3aeed 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>(