diff --git a/dune/gfe/rodwriter.hh b/dune/gfe/rodwriter.hh index 3837aa19d646cfa949f77a49c16824d5a5746fd0..700b2a07ecfae2aea0ad90e35e0070f8c78a4750 100644 --- a/dune/gfe/rodwriter.hh +++ b/dune/gfe/rodwriter.hh @@ -9,6 +9,33 @@ #include "rigidbodymotion.hh" +class RodWriter +{ +public: + + static void writeBinary(const std::vector<RigidBodyMotion<3> >& rod, + const std::string& filename) + { + FILE* fpRod = fopen(filename.c_str(), "wb"); + if (!fpRod) + DUNE_THROW(SolverError, "Couldn't open file " << filename << " for writing"); + + for (int j=0; j<rod.size(); j++) { + + for (int k=0; k<3; k++) + fwrite(&rod[j].r[k], sizeof(double), 1, fpRod); + + for (int k=0; k<4; k++) // 3d hardwired here! + fwrite(&rod[j].q[k], sizeof(double), 1, fpRod); + + } + + fclose(fpRod); + + } + +}; + /** \brief Write a planar rod */ void writeRod(const std::vector<RigidBodyMotion<2> >& rod,