From 771d0330a83b9d0eaaea51cfc26aba634ad6baf0 Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Mon, 27 Aug 2018 18:11:57 +0200 Subject: [PATCH] small errors in imagedata writer resolved --- dune/vtk/datacollectors/yaspdatacollector.hh | 3 +-- dune/vtk/writers/vtkimagedatawriter.impl.hh | 4 ++-- src/benchmark.cc | 6 +++--- src/structuredgridwriter.cc | 22 +++++++++++++------- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/dune/vtk/datacollectors/yaspdatacollector.hh b/dune/vtk/datacollectors/yaspdatacollector.hh index 7f5b352..6902f61 100644 --- a/dune/vtk/datacollectors/yaspdatacollector.hh +++ b/dune/vtk/datacollectors/yaspdatacollector.hh @@ -93,7 +93,7 @@ public: } - /// Extract the ordinates from the Coordinates object of the current level + /// Extract the ordinates from the coordinates object of the current level template <class T> std::array<std::vector<T>, 3> coordinatesImpl () const { @@ -119,7 +119,6 @@ private: std::array<int, 6> extent_; FieldVector<ctype,3> origin_; FieldVector<ctype,3> spacing_; - std::vector<std::size_t> indexMap_; int level_; }; diff --git a/dune/vtk/writers/vtkimagedatawriter.impl.hh b/dune/vtk/writers/vtkimagedatawriter.impl.hh index caff7e5..468b785 100644 --- a/dune/vtk/writers/vtkimagedatawriter.impl.hh +++ b/dune/vtk/writers/vtkimagedatawriter.impl.hh @@ -32,7 +32,7 @@ void VtkImageDataWriter<GV,DC> std::vector<pos_type> offsets; // pos => offset out << "<VTKFile" - << " type=\"StructuredGrid\"" + << " type=\"ImageData\"" << " version=\"1.0\"" << " byte_order=\"" << this->getEndian() << "\"" << " header_type=\"UInt64\"" @@ -110,7 +110,7 @@ void VtkImageDataWriter<GV,DC> assert(out.is_open()); out << "<VTKFile" - << " type=\"StructuredGrid\"" + << " type=\"PImageData\"" << " version=\"1.0\"" << " byte_order=\"" << this->getEndian() << "\"" << " header_type=\"UInt64\"" diff --git a/src/benchmark.cc b/src/benchmark.cc index 81a8eeb..3f2cf8f 100644 --- a/src/benchmark.cc +++ b/src/benchmark.cc @@ -51,7 +51,7 @@ void writer_old (GridView const& gridView) for (auto const& test_case : test_cases_old) { t.reset(); VTKWriter<GridView> vtkWriter(gridView, std::get<2>(test_case)); - vtkWriter.write("/tmp/writer_old_" + std::get<0>(test_case) + ".vtu", + vtkWriter.write("writer_old_" + std::get<0>(test_case) + ".vtu", std::get<1>(test_case)); std::cout << " time (writer_old_" + std::get<0>(test_case) + ") = " << t.elapsed() << "\n"; } @@ -64,7 +64,7 @@ void writer_new (GridView const& gridView) experimental::VtkUnstructuredGridWriter<GridView> vtkWriter(gridView); for (auto const& test_case : test_cases_new) { t.reset(); - vtkWriter.write("/tmp/writer_new_" + std::get<0>(test_case) + ".vtu", + vtkWriter.write("writer_new_" + std::get<0>(test_case) + ".vtu", std::get<1>(test_case), std::get<2>(test_case)); std::cout << " time (writer_new_" + std::get<0>(test_case) + ") = " << t.elapsed() << "\n"; } @@ -103,7 +103,7 @@ int main (int argc, char** argv) using GridType = YaspGrid<dim.value>; FieldVector<double,dim.value> upperRight; upperRight = 1.0; auto numElements = filledArray<dim.value,int>(10); - GridType grid(upperRight, numElements); + GridType grid(upperRight, numElements, 0, 0); std::cout << "DIMENSION " << dim.value << "\n"; writer_old(grid.leafGridView()); diff --git a/src/structuredgridwriter.cc b/src/structuredgridwriter.cc index 7659dcd..535ce1f 100644 --- a/src/structuredgridwriter.cc +++ b/src/structuredgridwriter.cc @@ -23,6 +23,7 @@ #include <dune/vtk/writers/vtkimagedatawriter.hh> #include <dune/vtk/writers/vtkrectilineargridwriter.hh> #include <dune/vtk/writers/vtkstructuredgridwriter.hh> +#include <dune/vtk/writers/vtkunstructuredgridwriter.hh> #include <dune/vtk/datacollectors/yaspdatacollector.hh> #include <dune/vtk/datacollectors/spdatacollector.hh> @@ -36,7 +37,7 @@ using int_ = std::integral_constant<int,dim>; template <class GridView> void write(std::string prefix, GridView const& gridView) { - auto fct2 = makeAnalyticGridViewFunction([](auto const& x) { + auto fct2 = makeAnalyticGridViewFunction([](auto const& x) -> float { return std::sin(10*x[0]) * (x.size() > 1 ? std::cos(10*x[1]) : 1) + (x.size() > 2 ? std::sin(10*x[2]) : 0); }, gridView); @@ -44,21 +45,28 @@ void write(std::string prefix, GridView const& gridView) using Writer = VtkImageDataWriter<GridView>; Writer vtkWriter(gridView); vtkWriter.addPointData(fct2, "analytic"); - vtkWriter.write(prefix + "id_ascii_float32.vti", Vtk::ASCII); + vtkWriter.write(prefix + "id_ascii_float32.vti", Vtk::ASCII, Vtk::FLOAT32); } { using Writer = VtkRectilinearGridWriter<GridView>; Writer vtkWriter(gridView); vtkWriter.addPointData(fct2, "analytic"); - vtkWriter.write(prefix + "rg_ascii_float32.vtr", Vtk::ASCII); + vtkWriter.write(prefix + "rg_ascii_float32.vtr", Vtk::ASCII, Vtk::FLOAT32); } { using Writer = VtkStructuredGridWriter<GridView>; Writer vtkWriter(gridView); vtkWriter.addPointData(fct2, "analytic"); - vtkWriter.write(prefix + "sg_ascii_float32.vts", Vtk::ASCII); + vtkWriter.write(prefix + "sg_ascii_float32.vts", Vtk::ASCII, Vtk::FLOAT32); + } + + { + using Writer = VtkUnstructuredGridWriter<GridView>; + Writer vtkWriter(gridView); + vtkWriter.addPointData(fct2, "analytic"); + vtkWriter.write(prefix + "ug_ascii_float32.vts", Vtk::ASCII, Vtk::FLOAT32); } } @@ -67,9 +75,9 @@ void write_yaspgrid(std::integral_constant<int,dim>) { using GridType = YaspGrid<dim>; FieldVector<double,dim> upperRight; upperRight = 1.0; - auto numElements = filledArray<dim,int>(8); + auto numElements = filledArray<dim,int>(16); GridType grid(upperRight,numElements,0,0); - grid.globalRefine(1); + grid.globalRefine(3); write("yasp_" + std::to_string(dim) + "d_", grid.leafGridView()); } @@ -80,7 +88,7 @@ void write_spgrid(std::integral_constant<int,dim>) #if HAVE_DUNE_SPGRID using GridType = SPGrid<double,dim, SPIsotropicRefinement>; FieldVector<double,dim> upperRight; upperRight = 1.0; - auto numElements = filledArray<dim,int>(8); + auto numElements = filledArray<dim,int>(12); GridType grid(SPDomain<double,dim>::unitCube(),numElements); // grid.globalRefine(1); -- GitLab