diff --git a/CMakeLists.txt b/CMakeLists.txt index ce5c8e0491ef7aa6cc1cf4b5b27139b2b23783c5..5d90ab4a174a98711d14a31c2c9fb6209da5316c 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 67787648a4c5e3eb711c7d744f377a75228f3ad4..fcc3e886e01edf90d0aca9447099d64056d2b91c 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 697c66efcc43eb62bdd2fc68e00314d1f2dcfab2..1dc136aa5c49b1550f546621f0d9ca2bcfcfe8c4 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 0000000000000000000000000000000000000000..c7555bb656f4427b8af1bc75fc669d63eae5a2a8 --- /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