From d608f61c9434af6048bb05a9bbbf51245bce103f Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Fri, 20 Dec 2019 10:34:48 +0100
Subject: [PATCH] Replace AmiraMesh output by VTK output

Nobody I know still uses AmiraMesh.
---
 src/linear-elasticity.cc | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/src/linear-elasticity.cc b/src/linear-elasticity.cc
index 43c7243..3893722 100644
--- a/src/linear-elasticity.cc
+++ b/src/linear-elasticity.cc
@@ -5,12 +5,13 @@
 #include <dune/common/parametertreeparser.hh>
 
 #include <dune/grid/uggrid.hh>
-#include <dune/grid/io/file/amirameshwriter.hh>
 #include <dune/grid/io/file/amirameshreader.hh>
+#include <dune/grid/io/file/vtk.hh>
 
 #include <dune/istl/io.hh>
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
+#include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
 
 #include <dune/fufem/functiontools/gridfunctionadaptor.hh>
 #include <dune/fufem/functions/coarsegridfunctionwrapper.hh>
@@ -130,8 +131,13 @@ int main (int argc, char *argv[]) try
     for (int i=0; i<minLevel; i++)
         grid->globalRefine(1);
 
-    // initial solution
-    VectorType x(grid->size(dim));
+    using P1Basis = Dune::Functions::LagrangeBasis<GridView,1>;
+    P1Basis p1Basis(grid->leafGridView());
+    using FufemP1Basis = DuneFunctionsBasis<P1Basis>;
+    FufemP1Basis p1NodalBasis(p1Basis);
+
+    // initial iterate
+    VectorType x(p1Basis.size());
     x = 0;
 
     // //////////////////////////////////////////////////
@@ -140,10 +146,6 @@ int main (int argc, char *argv[]) try
 
     while (true) {
 
-        using P1Basis = Dune::Functions::LagrangeBasis<GridView,1>;
-        using FufemP1Basis = DuneFunctionsBasis<P1Basis>;
-        FufemP1Basis p1NodalBasis(grid->leafGridView());
-
         // Determine fine Dirichlet and Neumann dofs
         LeafBoundaryPatch leafDirichletBoundary(grid->leafGridView());
         BoundaryPatchProlongator<GridType>::prolong(coarseDirichletBoundary, leafDirichletBoundary);
@@ -301,15 +303,12 @@ int main (int argc, char *argv[]) try
 
     }
 
-  // Output result
-#if HAVE_AMIRAMESH
-  LeafAmiraMeshWriter<GridType> amiramesh;
-  amiramesh.addLeafGrid(*grid,true);
-  amiramesh.addVertexData(x, grid->leafGridView(),true);
-  amiramesh.write("resultGrid",1);
-#else
-#warning You need libamiramesh for this code!
-#endif
+    // Output result
+    auto displacementFunction = Dune::Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,dim> >(p1Basis, x);
+
+    VTKWriter<GridView> vtkWriter(grid->leafGridView());
+    vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("displacement", VTK::FieldInfo::Type::vector, dim));
+    vtkWriter.write("linear-elasticity-result");
 
 } catch (Exception& e)
 {
-- 
GitLab