diff --git a/FileIO/readMeshFromFile.cpp b/FileIO/readMeshFromFile.cpp
index 57c1ee4119b533f439fe5b1ef689940f416d9774..3a203b722339613387097e0c60680cb20e6abdba 100644
--- a/FileIO/readMeshFromFile.cpp
+++ b/FileIO/readMeshFromFile.cpp
@@ -15,6 +15,10 @@
  * @author Karsten Rink
  */
 
+#ifdef USE_PETSC
+#include <petscksp.h>
+#endif
+
 // ThirdParty/logog
 #include "logog/include/logog.hpp"
 
@@ -29,11 +33,20 @@
 #include "Legacy/MeshIO.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 #include "readMeshFromFile.h"
+//
+#ifdef USE_PETSC
+#include "MPI_IO/NodePartitionedMeshReader.h"
+#include "MeshLib/NodePartitionedMesh.h"
+#endif
 
 namespace FileIO
 {
 MeshLib::Mesh* readMeshFromFile(const std::string &file_name)
 {
+#ifdef USE_PETSC
+	NodePartitionedMeshReader read_pmesh(PETSC_COMM_WORLD);
+	return read_pmesh.read(file_name);
+#else
 	if (BaseLib::hasFileExtension("msh", file_name))
 	{
 		Legacy::MeshIO meshIO;
@@ -42,6 +55,7 @@ MeshLib::Mesh* readMeshFromFile(const std::string &file_name)
 
 	if (BaseLib::hasFileExtension("vtu", file_name))
 		return VtuInterface::readVTUFile(file_name);
+#endif
 
 	ERR("readMeshFromFile(): Unknown mesh file format in file %s.", file_name.c_str());
 	return nullptr;