diff --git a/harmonicmaps.cc b/harmonicmaps.cc
index b5b2c8f5dc82859fecf05a8cc025f8a273779302..9765983728bf946234d872ef803ce7c3ef87ef2c 100644
--- a/harmonicmaps.cc
+++ b/harmonicmaps.cc
@@ -33,7 +33,7 @@
 #include <dune/gfe/riemanniantrsolver.hh>
 
 // grid dimension
-const int dim = 2;
+const int dim = 3;
 
 // Image space of the geodesic fe functions
 #ifdef ROTATION2
@@ -106,11 +106,18 @@ int main (int argc, char *argv[]) try
     //    Create the grid
     // ///////////////////////////////////////
     typedef std::conditional<dim==1,OneDGrid,UGGrid<dim> >::type GridType;
-    array<unsigned int,dim> elements;
-    elements.fill(3);
-    shared_ptr<GridType> gridPtr = StructuredGridFactory<GridType>::createSimplexGrid(FieldVector<double,dim>(0),
-                                                                                      FieldVector<double,dim>(1),
-                                                                                      elements);
+    
+    shared_ptr<GridType> gridPtr;
+    if (parameterSet.get<std::string>("gridType")=="structured") {
+        array<unsigned int,dim> elements;
+        elements.fill(3);
+        gridPtr = StructuredGridFactory<GridType>::createSimplexGrid(FieldVector<double,dim>(0),
+                                                                     FieldVector<double,dim>(1),
+                                                                     elements);
+    } else {
+        gridPtr = shared_ptr<GridType>(AmiraMeshReader<GridType>::read(path + gridFile));
+    }
+
     GridType& grid = *gridPtr.get();
 
     grid.globalRefine(numLevels-1);