From e1597508e062327234354acfb1c7f1066f65c7cc Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Fri, 4 May 2018 18:55:08 +0200 Subject: [PATCH] Begining of VTK ascii writer --- CMakeLists.txt | 1 + src/CMakeLists.txt | 3 +++ src/main.cpp | 7 ++++++- src/output/VTKWriter.hpp | 45 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/output/VTKWriter.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ce5c8e049..5d90ab4a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,6 +98,7 @@ add_subdirectory(src) include_directories(src) include_directories(src/algebra) include_directories(src/mesh) +include_directories(src/output) include_directories(src/utils) include_directories(src/scheme) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 67787648a..fcc3e886e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,6 +19,9 @@ include_directories(mesh) #add_subdirectory(mesh) include_directories(scheme) +# Pastis output +include_directories(output) + # Pastis experimental add_subdirectory(experimental) include_directories(experimental) diff --git a/src/main.cpp b/src/main.cpp index 697c66efc..1dc136aa5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,6 +16,8 @@ #include <BoundaryCondition.hpp> #include <AcousticSolver.hpp> +#include <VTKWriter.hpp> + #include <TinyVector.hpp> #include <TinyMatrix.hpp> @@ -133,13 +135,16 @@ int main(int argc, char *argv[]) timer.reset(); MeshDataType mesh_data(mesh); + + VTKWriter vtk_writer("output.vtu"); + std::vector<BoundaryConditionHandler> bc_list; { // quite dirty! for (size_t i_boundary=0; i_boundary<mesh.connectivity().numberOfNodeBoundaries(); ++i_boundary) { Connectivity2D::NodesBoundary nodes_boundary = mesh.connectivity().nodesBoundary(i_boundary); unsigned int ref = nodes_boundary.first; TinyVector<2> normal(0,0); - if ((ref == 3) or (ref == 4)) { + if ((ref == 5) or (ref == 6)) { normal = TinyVector<2>(0,1); } else { normal = TinyVector<2>(1,0); diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp new file mode 100644 index 000000000..c7555bb65 --- /dev/null +++ b/src/output/VTKWriter.hpp @@ -0,0 +1,45 @@ +#ifndef VTK_WRITER_HPP +#define VTK_WRITER_HPP + +#include <string> +#include <fstream> + +class VTKWriter +{ +public: + VTKWriter(const std::string& filename) + { + std::ofstream fout(filename); + fout << "<?xml version=\"1.0\"?>\n"; + fout << "<VTKFile type=\"UnstructuredGrid\">\n"; + fout << "<UnstructuredGrid>\n"; + fout << "<Piece NumberOfPoints=\"3\" NumberOfCells=\"1\">\n"; + fout << "<Points>\n"; + fout << "<DataArray Name=\"Positions\" NumberOfComponents=\"3\" type=\"Float64\" format=\"ascii\">\n"; + fout << "0 0 0 1 0 0 0 1 0\n"; + fout << "</DataArray>\n"; + fout << "</Points>\n"; + fout << "<Cells>\n"; + + fout << "<DataArray type=\"Int32\" Name=\"connectivity\" NumberOfComponents=\"1\" format=\"ascii\">\n"; + fout << "0 1 2\n"; + fout << "</DataArray>\n"; + + fout << "<DataArray type=\"UInt32\" Name=\"offsets\" NumberOfComponents=\"1\" format=\"ascii\">\n"; + fout << 3 << '\n'; + fout << "</DataArray>\n"; + + fout << "<DataArray type=\"Int8\" Name=\"types\" NumberOfComponents=\"1\" format=\"ascii\">\n"; + fout << "5\n"; + fout << "</DataArray>\n"; + + fout << "</Cells>\n"; + fout << "</Piece>\n"; + fout << "</UnstructuredGrid>\n"; + fout << "</VTKFile>\n"; + } + + ~VTKWriter() = default; +}; + +#endif // VTK_WRITER_HPP -- GitLab