Skip to content
Snippets Groups Projects
Commit ed72c55c authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Do not hardcode the boundary

parent e020f9ad
No related branches found
No related tags found
No related merge requests found
...@@ -74,11 +74,12 @@ ...@@ -74,11 +74,12 @@
int const dim = DIM; int const dim = DIM;
template <class GridView> template <class GridView, class GridCorner>
void setup_boundary(GridView const &gridView, void setup_boundary(GridView const &gridView,
Dune::BitSetVector<dim> &ignoreNodes, Dune::BitSetVector<dim> &ignoreNodes,
Dune::BitSetVector<1> &neumannNodes, 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; typedef typename GridView::template Codim<dim>::Iterator VertexLeafIterator;
Dune::MultipleCodimMultipleGeomTypeMapper< Dune::MultipleCodimMultipleGeomTypeMapper<
...@@ -88,17 +89,15 @@ void setup_boundary(GridView const &gridView, ...@@ -88,17 +89,15 @@ void setup_boundary(GridView const &gridView,
it != gridView.template end<dim>(); ++it) { it != gridView.template end<dim>(); ++it) {
assert(it->geometry().corners() == 1); assert(it->geometry().corners() == 1);
Dune::FieldVector<double, dim> const coordinates = it->geometry().corner(0); 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; ignoreNodes[id] = true;
} else if (coordinates[1] == 0) { else if (coordinates[1] == lowerLeft[1]) {
size_t const id = myVertexMapper.map(*it);
frictionalNodes[id] = true; frictionalNodes[id] = true;
ignoreNodes[id][1] = true; // Zero displacement in direction y ignoreNodes[id][1] = true; // Zero displacement in direction y
} else if (coordinates[0] == 0 || coordinates[0] == 1) { } else if (coordinates[0] == lowerLeft[0] ||
size_t const id = myVertexMapper.map(*it); coordinates[0] == upperRight[0])
neumannNodes[id] = true; neumannNodes[id] = true;
}
} }
} }
...@@ -182,7 +181,8 @@ int main(int argc, char *argv[]) { ...@@ -182,7 +181,8 @@ int main(int argc, char *argv[]) {
Dune::BitSetVector<dim> ignoreNodes(finestSize, false); Dune::BitSetVector<dim> ignoreNodes(finestSize, false);
Dune::BitSetVector<1> neumannNodes(finestSize, false); Dune::BitSetVector<1> neumannNodes(finestSize, false);
Dune::BitSetVector<1> frictionalNodes(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 = auto const nodalIntegrals =
assemble_frictional<GridType, GridView, SmallVector, P1Basis>( assemble_frictional<GridType, GridView, SmallVector, P1Basis>(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment