From 48a064a1408afe7aad987dec1b936d6c09edfb79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com>
Date: Sat, 29 Sep 2018 10:32:09 +0200
Subject: [PATCH] Fixed DistributedMesh setup call in
 Time(In)dependentPDESolver.

---
 src/TNL/Solvers/PDE/TimeDependentPDESolver.h  |  2 +-
 .../Solvers/PDE/TimeDependentPDESolver_impl.h | 11 +++++-----
 .../Solvers/PDE/TimeIndependentPDESolver.h    |  4 +++-
 .../PDE/TimeIndependentPDESolver_impl.h       | 22 ++++++++-----------
 4 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h
index 712e288996..58f4c5cc50 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 78c9a6912d..045734c4aa 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 5711ec82e7..e4a5f9778d 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 f53a989060..d676c8af05 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 );
-- 
GitLab