diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6166aa58efdd2ca715421783dbf7439b1de82a6f..9e96b81ec6e3b64fc9a4e817a887615f4637b2cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -618,7 +618,7 @@ if(ENABLE_PETSC)
       endforeach(VAR)
     endif (PETSC_PACKAGES_INCLUDES)
     # find libraries
-    set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
+    set(PETSC_LIBS_REQUIRED petsc)
     find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED 
                        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
     # petsc 3.1 create only one library : libpetsc
diff --git a/Post/PViewData.h b/Post/PViewData.h
index f2bf9ccbc99441737ebdca555948038ea0106457..9157122f149ed2c59917c2e292964d307581ef15 100644
--- a/Post/PViewData.h
+++ b/Post/PViewData.h
@@ -221,7 +221,7 @@ class PViewData {
   virtual bool writeTXT(std::string fileName);
   virtual bool writePOS(std::string fileName, bool binary=false, bool parsed=true,
                         bool append=false);
-  virtual bool writeMSH(std::string fileName, bool binary=false);
+  virtual bool writeMSH(std::string fileName, bool binary=false, bool savemesh=true);
   virtual bool writeMED(std::string fileName);
 
   static void registerBindings(binding *b);
diff --git a/Post/PViewDataGModel.h b/Post/PViewDataGModel.h
index c741374972ed74d0841483c6a42bb23496ce46d8..f7836cae7bf0eb016751bcc540c6cd57240dcc68 100644
--- a/Post/PViewDataGModel.h
+++ b/Post/PViewDataGModel.h
@@ -239,7 +239,7 @@ class PViewDataGModel : public PViewData {
   bool readMSH(std::string fileName, int fileIndex, FILE *fp, bool binary, 
                bool swap, int step, double time, int partition, 
                int numComp, int numNodes);
-  bool writeMSH(std::string fileName, bool binary=false);
+  bool writeMSH(std::string fileName, bool binary=false, bool savemesh=true);
   bool readMED(std::string fileName, int fileIndex);
   bool writeMED(std::string fileName);
 };
diff --git a/Post/PViewDataGModelIO.cpp b/Post/PViewDataGModelIO.cpp
index 9e8526776e97df28f140b31b99121332d0d4e719..1ac5bf2c64c960968e148275eba751bba258502d 100644
--- a/Post/PViewDataGModelIO.cpp
+++ b/Post/PViewDataGModelIO.cpp
@@ -118,7 +118,7 @@ bool PViewDataGModel::readMSH(std::string fileName, int fileIndex, FILE *fp,
   return true;
 }
 
-bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
+bool PViewDataGModel::writeMSH(std::string fileName, bool binary, bool savemesh)
 {
   if(_steps.empty()) return true;
 
@@ -129,7 +129,7 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
 
   GModel *model = _steps[0]->getModel();
 
-  bool writeNodesAndElements = false;
+  bool writeNodesAndElements = savemesh;
   FILE *fp;
   if(writeNodesAndElements){
     if(!model->writeMSH(fileName, 2.0, binary)) return false;
diff --git a/Post/PViewDataIO.cpp b/Post/PViewDataIO.cpp
index 940cf96b6c2ffc1c1398744ec6f91212cd85c574..c7ad930b3f339ad45c0cb5ea9f061d7d138a3378 100644
--- a/Post/PViewDataIO.cpp
+++ b/Post/PViewDataIO.cpp
@@ -106,7 +106,7 @@ bool PViewData::writePOS(std::string fileName, bool binary, bool parsed, bool ap
   return false; 
 }
 
-bool PViewData::writeMSH(std::string fileName, bool binary)
+bool PViewData::writeMSH(std::string fileName, bool binary, bool savemesh)
 { 
   Msg::Error("MSH export not implemented for this view type");
   return false; 
diff --git a/Post/PViewDataList.h b/Post/PViewDataList.h
index b98dcbf5675306bbbf810aeb035fc8ddfda5ca9d..1bb7207d0aabb62fbdd3e01fb9df4d211edefba2 100644
--- a/Post/PViewDataList.h
+++ b/Post/PViewDataList.h
@@ -110,7 +110,7 @@ class PViewDataList : public PViewData {
   bool readPOS(FILE *fp, double version, bool binary);
   bool writePOS(std::string fileName, bool binary=false, bool parsed=true,
                 bool append=false);
-  bool writeMSH(std::string fileName, bool binary=false);
+  virtual bool writeMSH(std::string fileName, bool binary=false, bool savemesh=true);
 };
 
 #endif
diff --git a/Post/PViewDataListIO.cpp b/Post/PViewDataListIO.cpp
index 596665eda678221e8a61799b838ed408ad1f8143..942c90852f52ed3c82530bef9304a8c0ba5eceda 100644
--- a/Post/PViewDataListIO.cpp
+++ b/Post/PViewDataListIO.cpp
@@ -544,7 +544,7 @@ static void writeElementsMSH(FILE *fp, int nbelm, std::vector<double> &list,
   }
 }
 
-bool PViewDataList::writeMSH(std::string fileName, bool binary)
+bool PViewDataList::writeMSH(std::string fileName, bool binary, bool savemesh)
 {
   if(_adaptive){
     Msg::Warning("Writing adapted dataset (will only export current time step)");
@@ -590,7 +590,6 @@ bool PViewDataList::writeMSH(std::string fileName, bool binary)
   getNodeMSH(NbSY, SY, 5, 1, NbTimeStep, &nodes, &numelm);
   getNodeMSH(NbVY, VY, 5, 3, NbTimeStep, &nodes, &numelm);
   getNodeMSH(NbTY, TY, 5, 9, NbTimeStep, &nodes, &numelm);
-
   fprintf(fp, "$MeshFormat\n2 0 8\n$EndMeshFormat\n");
   fprintf(fp, "$Nodes\n");
   fprintf(fp, "%d\n", (int)nodes.size());