diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 27aa3e4fb0166cb3c5d308122fc5d0cd0ab50cd6..e76d5db45fc76896a7505148bbb6b8dcef2386c2 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -188,7 +188,6 @@ int main(int argc, char *argv[]) { P1Basis const p1Basis(leafView); // Set up the boundary - size_t specialNode = finestSize; Dune::BitSetVector<dims> ignoreNodes(finestSize, false); Dune::BitSetVector<1> neumannNodes(finestSize, false); Dune::BitSetVector<1> frictionalNodes(finestSize, false); @@ -204,10 +203,6 @@ int main(int argc, char *argv[]) { coordinates[id] = it->geometry().corner(0); auto const &localCoordinates = coordinates[id]; - // Find the lower left corner - if (localCoordinates == lowerLeft) - specialNode = id; - // lower face if (localCoordinates[1] == lowerLeft[1]) { frictionalNodes[id] = true; @@ -226,9 +221,6 @@ int main(int argc, char *argv[]) { else if (localCoordinates[0] == lowerLeft[0]) ; } - // Make sure that specialNode was set and points to a frictional node - assert(specialNode != finestSize); - assert(frictionalNodes[specialNode][0]); }; // Set up functions for time-dependent boundary conditions @@ -320,10 +312,16 @@ int main(int argc, char *argv[]) { Solver::VerbosityMode const verbosity = parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; - std::fstream state_writer("state", std::fstream::out); - std::fstream displacement_writer("displacement", std::fstream::out); - std::fstream velocity_writer("velocity", std::fstream::out); - std::fstream coefficient_writer("coefficient", std::fstream::out); + std::fstream coordinate_writer("coordinates", std::fstream::out); + for (size_t i = 0; i < frictionalNodes.size(); ++i) + if (frictionalNodes[i][0]) + coordinate_writer << coordinates[i] << std::endl; + coordinate_writer.close(); + + std::fstream state_writer("states", std::fstream::out); + std::fstream displacement_writer("displacements", std::fstream::out); + std::fstream velocity_writer("velocities", std::fstream::out); + std::fstream coefficient_writer("coefficients", std::fstream::out); ; auto timeSteppingScheme = @@ -419,13 +417,20 @@ int main(int argc, char *argv[]) { std::cerr << std::endl; ; - state_writer << alpha[specialNode][0] << " " << std::endl; - displacement_writer << u[specialNode][0] << " " << std::endl; - velocity_writer << ud[specialNode][0] << " " << std::endl; - coefficient_writer << mu + a *std::log(ud[specialNode].two_norm() / V0) + - b * (alpha[specialNode] + std::log(V0 / L)) - << " " << std::endl; - ; + for (size_t i = 0; i < frictionalNodes.size(); ++i) + if (frictionalNodes[i][0]) { + state_writer << alpha[i][0] << " "; + displacement_writer << u[i][0] << " "; + velocity_writer << ud[i][0] << " "; + coefficient_writer << mu + a *std::log(ud[i].two_norm() / V0) + + b * (alpha[i] + std::log(V0 / L)) << " "; + } + + state_writer << std::endl; + displacement_writer << std::endl; + velocity_writer << std::endl; + coefficient_writer << std::endl; + if (parset.get<bool>("writeVTK")) { SingletonVectorType vonMisesStress; VonMisesStressAssembler<GridType> localStressAssembler(