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