From b215986d28691ce6a320b9f53a501a8d8b1267b3 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Fri, 31 Jan 2014 13:14:17 +0100 Subject: [PATCH] [Extend] Report on surface behaviour --- src/sand-wedge.cc | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/sand-wedge.cc b/src/sand-wedge.cc index c985b1f1..33be5768 100644 --- a/src/sand-wedge.cc +++ b/src/sand-wedge.cc @@ -201,6 +201,11 @@ int main(int argc, char *argv[]) { Dune::BitSetVector<1> frictionalNodes(fineVertexCount); frictionalBoundary.getVertices(frictionalNodes); + // Surface + BoundaryPatch<GridView> const &surface = myFaces.upper; + Dune::BitSetVector<1> surfaceNodes(fineVertexCount); + surface.getVertices(surfaceNodes); + // Dirichlet Boundary Dune::BitSetVector<dims> noNodes(fineVertexCount); Dune::BitSetVector<dims> dirichletNodes(fineVertexCount); @@ -353,17 +358,28 @@ int main(int argc, char *argv[]) { vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0); } } + FrictionWriter<ScalarVector, Vector> frictionWriter( vertexCoordinates, frictionalNodes, "friction", [](LocalVector const &x) { return x[0]; }); - auto const reportFriction = [&](Vector const &_u, Vector const &_v, - ScalarVector const &_alpha) { + BoundaryWriter<ScalarVector, Vector> verticalSurfaceWriter( + vertexCoordinates, surfaceNodes, "verticalSurface", + MyGeometry::verticalProjection); + BoundaryWriter<ScalarVector, Vector> horizontalSurfaceWriter( + vertexCoordinates, surfaceNodes, "horizontalSurface", + MyGeometry::horizontalProjection); + + auto const report = [&](Vector const &_u, Vector const &_v, + ScalarVector const &_alpha) { + horizontalSurfaceWriter.writeKinetics(_u, _v); + verticalSurfaceWriter.writeKinetics(_u, _v); + ScalarVector c; myGlobalNonlinearity->coefficientOfFriction(_v, c); frictionWriter.writeKinetics(_u, _v); frictionWriter.writeOther(c, _alpha); }; - reportFriction(u_initial, v_initial, alpha_initial); + report(u_initial, v_initial, alpha_initial); MyVTKWriter<typename MyAssembler::VertexBasis, typename MyAssembler::CellBasis> const @@ -510,7 +526,7 @@ int main(int argc, char *argv[]) { if (printProgress) std::cout << std::endl; - reportFriction(u, v, alpha); + report(u, v, alpha); iterationWriter << std::endl; relaxationWriter << std::endl; -- GitLab