BinaryOutputStream::BinaryOutputStream(Endianness endian) : NamedObject("<memory>"), m_path("<memory>"), m_beginEndBits(0), m_bitString(0), m_bitPos(0), m_buffer(NULL), m_bufferLen(0), m_bufferCapacity(0), m_pos(0), m_alreadyWritten(0), m_ok(true) { setEndianness(endian); }
void exportState(int iteration, owConfigProperty * config, float * position, float * connections, float * velocity, int * membranes, float * muscleActivationSignal) { std::string filename = config->getLoadPath() + std::string("state_") + to_string(iteration, 8, '0') + std::string(".vtp"); std::ofstream outFile(filename.c_str()); if (!outFile) { throw std::runtime_error("Cannot create VTK file."); } if (numConns == -1) { /* Initialization of variables */ countExistingConnections(connections, config); setEndianness(); } outFile << "<VTKFile type=\"PolyData\" version=\"0.1\"" << " byte_order=" << (isBigEndian ? "\"BigEndian\"" : "\"LittleEndian\"") << ">\n"; outFile << "<PolyData>\n"; outFile << "<Piece" << " NumberOfPoints=\"" << config->getParticleCount() << "\"" << " NumberOfPolys=\"" << config->numOfMembranes << "\"" << " NumberOfLines=\"" << numConns << "\"" << ">\n"; printParticles(outFile, position, velocity, config); printMembranes(outFile, membranes, config); printConnections(outFile, connections, config); outFile << "<CellData>\n"; printCellTypes(outFile, config); printMuscleNumbers(outFile, connections, config); printMuscleActivation(outFile, connections, muscleActivationSignal, config); outFile << "</CellData>\n"; outFile << "</Piece>\n"; outFile << "</PolyData>\n"; outFile << "</VTKFile>\n"; outFile.close(); }
BinaryOutputStream::BinaryOutputStream(std::string const & path, Endianness file_endian) : NamedObject(FilePath::objectName(path)), m_path(path), m_beginEndBits(0), m_bitString(0), m_bitPos(0), m_buffer(NULL), m_bufferLen(0), m_bufferCapacity(0), m_pos(0), m_alreadyWritten(0), m_ok(true) { setEndianness(file_endian); // Verify ability to write to disk _commit(false, true); }