From 0c9fc5416348d08e290bd580ec1f239a4ea7901c Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Wed, 9 Jan 2019 11:36:55 +0100
Subject: [PATCH] Adapt to changes in VTK writing in dune-grid 2.7

But keep compatibility with dune-grid 2.6 as well.
---
 dune/gfe/cosseratvtkwriter.hh |  4 ++++
 dune/gfe/vtkfile.hh           | 44 +++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git a/dune/gfe/cosseratvtkwriter.hh b/dune/gfe/cosseratvtkwriter.hh
index 9218ed55..97239597 100644
--- a/dune/gfe/cosseratvtkwriter.hh
+++ b/dune/gfe/cosseratvtkwriter.hh
@@ -448,7 +448,11 @@ public:
 
           // dump point coordinates
           writer.beginPoints();
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           writer.addArray<float>("Coordinates", 3);
+#else
+          writer.addArray("Coordinates", 3, Dune::VTK::Precision::float32);
+#endif
           writer.endPoints();
 
           for (int i=0; i<gridView.comm().size(); i++)
diff --git a/dune/gfe/vtkfile.hh b/dune/gfe/vtkfile.hh
index db460f03..cf14e8ef 100644
--- a/dune/gfe/vtkfile.hh
+++ b/dune/gfe/vtkfile.hh
@@ -12,6 +12,7 @@
 #endif
 
 #include <dune/common/fvector.hh>
+#include <dune/common/version.hh>
 
 // For parallel infrastructure stuff:
 #include <dune/grid/io/file/vtk.hh>
@@ -55,19 +56,34 @@ namespace Dune {
           writer.beginMain();
 
           writer.beginPointData();
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           writer.addArray<float>("director0", 3);
           writer.addArray<float>("director1", 3);
           writer.addArray<float>("director2", 3);
           writer.addArray<float>("zCoord", 1);
+#else
+          writer.addArray("director0", 3, VTK::Precision::float32);
+          writer.addArray("director1", 3, VTK::Precision::float32);
+          writer.addArray("director2", 3, VTK::Precision::float32);
+          writer.addArray("zCoord", 1, VTK::Precision::float32);
+#endif
           writer.endPointData();
 
           writer.beginCellData();
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           writer.addArray<float>("mycelldata", 1);
+#else
+          writer.addArray("mycelldata", 1, VTK::Precision::float32);
+#endif
           writer.endCellData();
 
           // dump point coordinates
           writer.beginPoints();
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           writer.addArray<float>("Coordinates", 3);
+#else
+          writer.addArray("Coordinates", 3, VTK::Precision::float32);
+#endif
           writer.endPoints();
 
           for (int i=0; i<mpiHelper.size(); i++)
@@ -88,7 +104,11 @@ namespace Dune {
         // Write vertex coordinates
         outFile << "      <Points>" << std::endl;
         {  // extra parenthesis to control destruction of the pointsWriter object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<float> pointsWriter(outFile, "Coordinates", 3, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter pointsWriter(outFile, "Coordinates", 3, Dune::Indent(4), VTK::Precision::float32);
+#endif
           for (size_t i=0; i<points_.size(); i++)
             for (int j=0; j<3; j++)
               pointsWriter.write(points_[i][j]);
@@ -98,19 +118,31 @@ namespace Dune {
         // Write elements
         outFile << "      <Cells>" << std::endl;
         {  // extra parenthesis to control destruction of the cellConnectivityWriter object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<int> cellConnectivityWriter(outFile, "connectivity", 1, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter cellConnectivityWriter(outFile, "connectivity", 1, Dune::Indent(4), VTK::Precision::int32);
+#endif
           for (size_t i=0; i<cellConnectivity_.size(); i++)
             cellConnectivityWriter.write(cellConnectivity_[i]);
         }
 
         {  // extra parenthesis to control destruction of the writer object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<int> cellOffsetsWriter(outFile, "offsets", 1, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter cellOffsetsWriter(outFile, "offsets", 1, Dune::Indent(4), VTK::Precision::int32);
+#endif
           for (size_t i=0; i<cellOffsets_.size(); i++)
             cellOffsetsWriter.write(cellOffsets_[i]);
         }
 
         {  // extra parenthesis to control destruction of the writer object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<unsigned int> cellTypesWriter(outFile, "types", 1, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter cellTypesWriter(outFile, "types", 1, Dune::Indent(4), VTK::Precision::uint32);
+#endif
           for (size_t i=0; i<cellTypes_.size(); i++)
             cellTypesWriter.write(cellTypes_[i]);
         }
@@ -124,7 +156,11 @@ namespace Dune {
 
         // Z coordinate for better visualization of wrinkles
         {  // extra parenthesis to control destruction of the writer object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<float> zCoordWriter(outFile, "zCoord", 1, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter zCoordWriter(outFile, "zCoord", 1, Dune::Indent(4), VTK::Precision::float32);
+#endif
           for (size_t i=0; i<zCoord_.size(); i++)
             zCoordWriter.write(zCoord_[i]);
         }
@@ -132,7 +168,11 @@ namespace Dune {
         // The three director fields
         for (size_t i=0; i<3; i++)
         {
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
           Dune::VTK::AsciiDataArrayWriter<float> directorWriter(outFile, "director" + std::to_string(i), 3, Dune::Indent(4));
+#else
+          Dune::VTK::AsciiDataArrayWriter directorWriter(outFile, "director" + std::to_string(i), 3, Dune::Indent(4), VTK::Precision::float32);
+#endif
           for (size_t j=0; j<directors_[i].size(); j++)
             for (int k=0; k<3; k++)
               directorWriter.write(directors_[i][j][k]);
@@ -148,7 +188,11 @@ namespace Dune {
         {
           outFile << "      <CellData>" << std::endl;
           {  // extra parenthesis to control destruction of the writer object
+#if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7)
             Dune::VTK::AsciiDataArrayWriter<float> cellDataWriter(outFile, "mycelldata", 1, Dune::Indent(4));
+#else
+            Dune::VTK::AsciiDataArrayWriter cellDataWriter(outFile, "mycelldata", 1, Dune::Indent(4), VTK::Precision::float32);
+#endif
             for (size_t i=0; i<cellData_.size(); i++)
               cellDataWriter.write(cellData_[i]);
           }
-- 
GitLab