diff --git a/src/friction_writer.cc b/src/friction_writer.cc index 8dba3a93eb3bce4e86524ad5f0d7f056e0965330..b830a01cffc6e13718174b3e266dfb8770533e76 100644 --- a/src/friction_writer.cc +++ b/src/friction_writer.cc @@ -6,12 +6,19 @@ template <class ScalarVector, class Vector> FrictionWriter<ScalarVector, Vector>::FrictionWriter( + Vector const &vertexCoordinates, Dune::BitSetVector<1> const &_boundaryNodes) : coefficientWriter("coefficients", std::fstream::out), displacementWriter("displacements", std::fstream::out), stateWriter("states", std::fstream::out), velocityWriter("velocities", std::fstream::out), - boundaryNodes(_boundaryNodes) {} + boundaryNodes(_boundaryNodes) { + std::fstream vertexCoordinateWriter("coordinates", std::fstream::out); + for (size_t i = 0; i < boundaryNodes.size(); ++i) + if (boundaryNodes[i][0]) + vertexCoordinateWriter << vertexCoordinates[i] << std::endl; + vertexCoordinateWriter.close(); +} template <class ScalarVector, class Vector> FrictionWriter<ScalarVector, Vector>::~FrictionWriter() { diff --git a/src/friction_writer.hh b/src/friction_writer.hh index dbd283497718867787db17138763904150362e10..09cb1b05ead6e92e1cc930d11ae31e685ef0060a 100644 --- a/src/friction_writer.hh +++ b/src/friction_writer.hh @@ -7,7 +7,8 @@ template <class ScalarVector, class Vector> class FrictionWriter { public: - FrictionWriter(Dune::BitSetVector<1> const &_boundaryNodes); + FrictionWriter(Vector const &vertexCoordinates, + Dune::BitSetVector<1> const &_boundaryNodes); ~FrictionWriter(); diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 935bf3aa7cc296b5d2d94c353f7426ead503f20a..b0ffa893051a0d3529414c5a335e1e37d1541b7c 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -269,7 +269,19 @@ int main(int argc, char *argv[]) { parset.sub("a0.solver")); } // }}} - FrictionWriter<ScalarVector, Vector> writer(frictionalNodes); + + Vector vertexCoordinates(fineVertexCount); + { + Dune::MultipleCodimMultipleGeomTypeMapper< + GridView, Dune::MCMGVertexLayout> const vertexMapper(leafView); + for (auto it = leafView.begin<dims>(); it != leafView.end<dims>(); ++it) { + auto const geometry = it->geometry(); + assert(geometry.corners() == 1); + vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0); + } + } + FrictionWriter<ScalarVector, Vector> writer(vertexCoordinates, + frictionalNodes); { ScalarVector c; myGlobalNonlinearity->coefficientOfFriction(v_initial, c); @@ -289,24 +301,6 @@ int main(int argc, char *argv[]) { dirichletNodes); auto multigridStep = factory.getSolver(); - { - Vector vertexCoordinates(fineVertexCount); - { - Dune::MultipleCodimMultipleGeomTypeMapper< - GridView, Dune::MCMGVertexLayout> const vertexMapper(leafView); - for (auto it = leafView.begin<dims>(); it != leafView.end<dims>(); - ++it) { - auto const geometry = it->geometry(); - assert(geometry.corners() == 1); - vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0); - } - } - std::fstream vertexCoordinateWriter("coordinates", std::fstream::out); - for (size_t i = 0; i < fineVertexCount; ++i) - if (frictionalNodes[i][0]) - vertexCoordinateWriter << vertexCoordinates[i] << std::endl; - vertexCoordinateWriter.close(); - } std::fstream iterationWriter("iterations", std::fstream::out), relaxationWriter("relaxation", std::fstream::out);