From 9b16dad7dd64f56111b880b265a3d6e0f5784106 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Mon, 8 Feb 2016 13:58:30 +0100
Subject: [PATCH] Write the initial iterate to file

---
 src/gradient-flow.cc | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/gradient-flow.cc b/src/gradient-flow.cc
index 9861fafb..57de84e0 100644
--- a/src/gradient-flow.cc
+++ b/src/gradient-flow.cc
@@ -230,6 +230,27 @@ int main (int argc, char *argv[]) try
                baseTolerance,
                false);   // instrumentation
 
+  ///////////////////////////////////////////////////////
+  //   Write initial iterate
+  ///////////////////////////////////////////////////////
+
+  typedef BlockVector<TargetSpace::CoordinateType> EmbeddedVectorType;
+  EmbeddedVectorType xEmbedded(x.size());
+  for (size_t i=0; i<x.size(); i++)
+    xEmbedded[i] = x[i].globalCoordinates();
+
+  auto xFunction = Dune::Functions::makeDiscreteGlobalBasisFunction<TargetSpace::CoordinateType>(feBasis,
+                                                                                                 TypeTree::hybridTreePath(),
+                                                                                                 xEmbedded);
+
+  SubsamplingVTKWriter<GridType::LeafGridView> vtkWriter(grid->leafGridView(),0);
+#if DUNE_VERSION_NEWER(DUNE_FUNCTIONS, 2, 5)
+  vtkWriter.addVertexData(xFunction, VTK::FieldInfo("orientation", VTK::FieldInfo::Type::scalar, xEmbedded[0].size()));
+#else
+  vtkWriter.addVertexData(vtkFunction(xFunction), VTK::FieldInfo("orientation", VTK::FieldInfo::Type::scalar, xEmbedded[0].size()));
+#endif
+  vtkWriter.write("gradientflow_result_0");
+
   ///////////////////////////////////////////////////////
   //   Time loop
   ///////////////////////////////////////////////////////
@@ -267,7 +288,7 @@ int main (int argc, char *argv[]) try
 #else
     vtkWriter.addVertexData(vtkFunction(xFunction), VTK::FieldInfo("orientation", VTK::FieldInfo::Type::scalar, xEmbedded[0].size()));
 #endif
-    vtkWriter.write("gradientflow_result_" + std::to_string(i));
+    vtkWriter.write("gradientflow_result_" + std::to_string(i+1));
   }
 
   return 0;
-- 
GitLab