Select Git revision
VTKWriter.cpp
-
Stéphane Del Pino authored
Cells and nodes look ok. Faces (and probably edges are not correctly exchanged yet)
Stéphane Del Pino authoredCells and nodes look ok. Faces (and probably edges are not correctly exchanged yet)
VTKWriter.cpp 25.71 KiB
#include <output/VTKWriter.hpp>
#include <mesh/Connectivity.hpp>
#include <mesh/Mesh.hpp>
#include <mesh/MeshData.hpp>
#include <mesh/MeshDataManager.hpp>
#include <mesh/MeshVariant.hpp>
#include <utils/Filesystem.hpp>
#include <utils/Messenger.hpp>
#include <utils/RevisionInfo.hpp>
#include <utils/Stringify.hpp>
#include <utils/pugs_config.hpp>
#include <ctime>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <unordered_map>
class ICharArrayEmbedder
{
public:
ICharArrayEmbedder() = default;
ICharArrayEmbedder(const ICharArrayEmbedder&) = default;
ICharArrayEmbedder(ICharArrayEmbedder&&) = default;
virtual size_t size() const = 0;
virtual void write(std::ostream&) const = 0;
virtual ~ICharArrayEmbedder() = default;
};
template <typename InputDataT>
class CharArrayEmbedder : public ICharArrayEmbedder
{
CastArray<InputDataT, const char> m_char_cast_array;
public:
size_t
size() const final
{
return m_char_cast_array.size();
}
void
write(std::ostream& os) const final
{
if (m_char_cast_array.size() > 0) {
os.write(&(m_char_cast_array[0]), m_char_cast_array.size());
}
}
CharArrayEmbedder(Array<InputDataT> array) : m_char_cast_array{array} {}
CharArrayEmbedder() = default;
CharArrayEmbedder(const CharArrayEmbedder&) = default;
CharArrayEmbedder(CharArrayEmbedder&&) = default;
~CharArrayEmbedder() = default;
};
class VTKWriter::SerializedDataList
{
private:
std::vector<std::shared_ptr<ICharArrayEmbedder>> m_serialized_data_list;
size_t m_offset = 0;
public:
size_t
offset() const