diff --git a/harmonicmaps-eoc.cc b/harmonicmaps-eoc.cc
index b1ed190ca430cc5ae666c90b207372889519b748..ccbaad3054743dfd47cfac7f0ec69911a4f4abf3 100644
--- a/harmonicmaps-eoc.cc
+++ b/harmonicmaps-eoc.cc
@@ -267,7 +267,10 @@ int main (int argc, char *argv[]) try
                                                                       upperRight,
                                                                       elements);
         } else {
-            grid = shared_ptr<GridType>(AmiraMeshReader<GridType>::read(parameterSet.get<std::string>("gridFile")));
+            if (gridFileName.rfind(".msh")!=std::string::npos)
+                grid = shared_ptr<GridType>(GmshReader<GridType>::read(gridFileName));
+            else    
+                grid = shared_ptr<GridType>(AmiraMeshReader<GridType>::read(gridFileName));
         }
 
         grid->globalRefine(i-1);