diff --git a/src/hdf5-writer.hh b/src/hdf5-writer.hh index 0ee16c1425c65444c0b9a9c2000de4016083a3be..211cb8ef12b5e0a2bac29e851c4ee1e7924cf538 100644 --- a/src/hdf5-writer.hh +++ b/src/hdf5-writer.hh @@ -58,7 +58,7 @@ class HDF5Writer { template <class Friction> void reportSolution(ProgramState const &programState, // for the friction coefficient - Friction &friction) { + std::vector<std::shared_ptr<Friction>>& friction) { timeWriter_.write(programState); for (size_t i=0; i<bodyCount_; i++) { @@ -66,7 +66,7 @@ class HDF5Writer { patchInfoWriters_[i]->write(programState); #endif surfaceWriters_[i]->write(programState); - frictionalBoundaryWriters_[i]->write(programState, friction); + frictionalBoundaryWriters_[i]->write(programState, *friction[i]); } } diff --git a/src/multi-body-problem.cc b/src/multi-body-problem.cc index a6d496ec58f17e4eac506f96767d51aba12a452c..e1183e14dff399f7b52e25134b7024f79c5c01f3 100644 --- a/src/multi-body-problem.cc +++ b/src/multi-body-problem.cc @@ -462,10 +462,10 @@ int main(int argc, char *argv[]) { const MyVTKWriter<MyVertexBasis, MyCellBasis> vtkWriter(cellBases, vertexBases, "body"); IterationRegister iterationCount; - /* + auto const report = [&](bool initial = false) { if (writeData) { - dataWriter->reportSolution(programState, *myGlobalFriction); + dataWriter->reportSolution(programState, globalFriction); if (!initial) dataWriter->reportIterations(programState, iterationCount); dataFile->flush(); @@ -484,17 +484,19 @@ int main(int argc, char *argv[]) { << std::endl; if (parset.get<bool>("io.vtk.write")) { - ScalarVector stress; - myAssembler.assembleVonMisesStress(body.getYoungModulus(), + std::vector<ScalarVector> stress(assemblers.size()); + + for (size_t i=0; i<stress.size(); i++) { + assemblers[i]->assembleVonMisesStress(body.getYoungModulus(), body.getPoissonRatio(), - programState.u, stress); + programState.u[i], stress[i]); + } + vtkWriter.write(programState.timeStep, programState.u, programState.v, programState.alpha, stress); } }; report(true); - */ - // Set up TNNMG solver using NonlinearFactory = SolverFactory<DeformedGrid, GlobalFriction<Matrix, Vector>, Matrix, Vector>; @@ -560,7 +562,7 @@ int main(int argc, char *argv[]) { nBodyAssembler.assembleTransferOperator(); nBodyAssembler.assembleObstacle(); - // report(); + report(); if (terminationRequested) { std::cerr << "Terminating prematurely" << std::endl;