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