diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
index 712e288996096ab4f1ff5c2580a073c43965c03c..58f4c5cc501592ce041ba4bfcb79ba84759e4389 100644
--- a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
+++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
@@ -86,7 +86,7 @@ class TimeDependentPDESolver
 
       MeshPointer meshPointer;
 
-      Meshes::DistributedMeshes::DistributedMesh<MeshType> distrMesh;
+      Meshes::DistributedMeshes::DistributedMesh<MeshType> distributedMesh;
 
       DofVectorPointer dofsPointer;
 
diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
index 78c9a6912ddd7fb9651ceab3035873843fab2348..045734c4aaae2117fdb792acd298ac27d221fd7e 100644
--- a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
+++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
@@ -56,13 +56,14 @@ setup( const Config::ParameterContainer& parameters,
    
    BaseType::setup( parameters, prefix );
    
-   /****
-    * Load the mesh from the mesh file
-    */
+   /////
+   // Load the mesh from the mesh file
+   //
    const String& meshFile = parameters.getParameter< String >( "mesh" );
-   if( ! Meshes::loadMesh< typename Problem::CommunicatorType >( meshFile, *this->meshPointer, distrMesh ) )
+   this->distributedMesh.setup( parameters, prefix );
+   if( ! Meshes::loadMesh< typename Problem::CommunicatorType >( meshFile, *this->meshPointer, distributedMesh ) )
       return false;
-   if( ! Meshes::decomposeMesh< Problem >( parameters, prefix, *this->meshPointer, distrMesh, *problem ) )
+   if( ! Meshes::decomposeMesh< Problem >( parameters, prefix, *this->meshPointer, distributedMesh, *problem ) )
       return false;
    
    problem->setMesh( this->meshPointer );
diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
index 5711ec82e7ed2379d194cc3ba88eb2f3c5cf4463..e4a5f9778d3bf14b2a42df0819a3b71de028547b 100644
--- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
+++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h
@@ -67,7 +67,9 @@ class TimeIndependentPDESolver : public PDESolver< typename Problem::RealType,
 
    protected:
 
-      MeshPointer mesh;
+      MeshPointer meshPointer;
+
+      Meshes::DistributedMeshes::DistributedMesh<MeshType> distributedMesh;
 
       CommonDataPointer commonDataPointer;
 
diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
index f53a989060e5b34a40f0bd7fe24b9700c15901ad..d676c8af05225119aa502fa13838d96e1f9926d1 100644
--- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
+++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h
@@ -45,21 +45,17 @@ TimeIndependentPDESolver< Problem >::
 setup( const Config::ParameterContainer& parameters,
        const String& prefix )
 {
-   /****
-    * Load the mesh from the mesh file
-    */
+   /////
+   // Load the mesh from the mesh file
+   //
    const String& meshFile = parameters.getParameter< String >( "mesh" );
-   std::cout << "Loading a mesh from the file " << meshFile << "...";
-   if( ! this->mesh->load( meshFile ) )
-   {
-      std::cerr << std::endl;
-      std::cerr << "I am not able to load the mesh from the file " << meshFile << "." << std::endl;
-      std::cerr << " You may create it with tools like tnl-grid-setup or tnl-mesh-convert." << std::endl;
+   this->distributedMesh.setup( parameters, prefix );
+   if( ! Meshes::loadMesh< typename Problem::CommunicatorType >( meshFile, *this->meshPointer, distributedMesh ) )
+      return false;
+   if( ! Meshes::decomposeMesh< Problem >( parameters, prefix, *this->meshPointer, distributedMesh, *problem ) )
       return false;
-   }
-   std::cout << " [ OK ] " << std::endl;
    
-   problem->setMesh( this->mesh );
+   problem->setMesh( this->meshPointer );
 
    /****
     * Set-up common data
@@ -110,7 +106,7 @@ writeProlog( Logger& logger,
    logger.writeHeader( problem->getPrologHeader() );
    problem->writeProlog( logger, parameters );
    logger.writeSeparator();
-   mesh->writeProlog( logger );
+   meshPointer->writeProlog( logger );
    logger.writeSeparator();
    const String& solverName = parameters. getParameter< String >( "discrete-solver" );
    logger.writeParameter< String >( "Discrete solver:", "discrete-solver", parameters );