Loading examples/heat-equation/tnl-heat-equation.h +4 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,10 @@ #ifndef TNL_HEAT_EQUATION_H_ #define TNL_HEAT_EQUATION_H_ #ifdef HAVE_MPI #define USE_MPI #endif #include <TNL/Solvers/Solver.h> #include <TNL/Solvers/FastBuildConfigTag.h> #include <TNL/Solvers/BuildConfigTags.h> Loading src/TNL/Problems/HeatEquationProblem_impl.h +18 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,10 @@ #include "HeatEquationProblem.h" #ifdef USE_MPI #include <TNL/Meshes/DistributedGridIO.h> #endif namespace TNL { namespace Problems { Loading Loading @@ -133,11 +137,18 @@ setInitialCondition( const Config::ParameterContainer& parameters, { this->bindDofs( meshPointer, dofs ); const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" ); #ifdef USE_MPI File file; file.open( initialConditionFile+convertToString(MPI::COMM_WORLD.Get_rank()), IOMode::read ); Meshes::DistributedGridIO<MeshFunctionType> ::load(file, *uPointer ); file.close(); #else if( ! this->uPointer->boundLoad( initialConditionFile ) ) { std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl; return false; } #endif return true; } Loading Loading @@ -187,8 +198,15 @@ makeSnapshot( const RealType& time, fileName.setFileNameBase( "u-" ); fileName.setExtension( "tnl" ); fileName.setIndex( step ); #ifdef USE_MPI File file; file.open( fileName.getFileName()+convertToString(MPI::COMM_WORLD.Get_rank()), IOMode::write ); Meshes::DistributedGridIO<MeshFunctionType> ::save(file, *uPointer ); file.close(); #else if( ! this->uPointer->save( fileName.getFileName() ) ) return false; #endif return true; } Loading src/TNL/Solvers/PDE/ExplicitUpdater.h +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ #include <TNL/Meshes/GridDetails/Traverser_Grid3D.h> #include <TNL/Solvers/PDE/ExplicitUpdater.h> #ifdef USE_MPI #include <TNL/Meshes/DistributedGridSynchronizer.h> #endif namespace TNL { namespace Solvers { Loading src/TNL/Solvers/PDE/TimeDependentPDESolver.h +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ #include <TNL/SharedPointer.h> #include <TNL/Solvers/PDE/PDESolver.h> #ifdef USE_MPI #include <TNL/Meshes/DistributedGrid.h> #endif namespace TNL { namespace Solvers { namespace PDE { Loading Loading @@ -45,6 +49,10 @@ class TimeDependentPDESolver : public PDESolver< typename Problem::RealType, TimeDependentPDESolver(); #ifdef USE_MPI ~TimeDependentPDESolver(); #endif static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ); Loading Loading @@ -84,6 +92,12 @@ class TimeDependentPDESolver : public PDESolver< typename Problem::RealType, MeshPointer meshPointer; #ifdef USE_MPI MeshPointer globalMeshPointer; Meshes::DistributedGrid<MeshType> * distrGrid; #endif DofVectorPointer dofsPointer; MeshDependentDataPointer meshDependentDataPointer; Loading src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h +27 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,17 @@ TimeDependentPDESolver() { } #ifdef USE_MPI template< typename Problem, typename DiscreteSolver, typename TimeStepper > TimeDependentPDESolver< Problem, DiscreteSolver, TimeStepper >:: ~TimeDependentPDESolver() { delete distrGrid; } #endif template< typename Problem, typename DiscreteSolver, typename TimeStepper > Loading Loading @@ -62,6 +73,21 @@ setup( const Config::ParameterContainer& parameters, * Load the mesh from the mesh file */ const String& meshFile = parameters.getParameter< String >( "mesh" ); #ifdef USE_MPI std::cout << "Loading a global mesh from the file " << meshFile << "..."; if( ! this->globalMeshPointer->load( meshFile ) ) { std::cerr << std::endl; std::cerr << "I am not able to load the global mesh from the file " << meshFile << "." << std::endl; return false; } std::cout << " [ OK ] " << std::endl; typename Meshes::DistributedGrid<MeshType>::CoordinatesType overlap; overlap.setValue(1); this->distrGrid=new Meshes::DistributedGrid<MeshType>(*globalMeshPointer,overlap); distrGrid->SetupGrid(*meshPointer); #else std::cout << "Loading a mesh from the file " << meshFile << "..."; if( ! this->meshPointer->load( meshFile ) ) { Loading @@ -71,6 +97,7 @@ setup( const Config::ParameterContainer& parameters, return false; } std::cout << " [ OK ] " << std::endl; #endif /**** * Setup the problem Loading Loading
examples/heat-equation/tnl-heat-equation.h +4 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,10 @@ #ifndef TNL_HEAT_EQUATION_H_ #define TNL_HEAT_EQUATION_H_ #ifdef HAVE_MPI #define USE_MPI #endif #include <TNL/Solvers/Solver.h> #include <TNL/Solvers/FastBuildConfigTag.h> #include <TNL/Solvers/BuildConfigTags.h> Loading
src/TNL/Problems/HeatEquationProblem_impl.h +18 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,10 @@ #include "HeatEquationProblem.h" #ifdef USE_MPI #include <TNL/Meshes/DistributedGridIO.h> #endif namespace TNL { namespace Problems { Loading Loading @@ -133,11 +137,18 @@ setInitialCondition( const Config::ParameterContainer& parameters, { this->bindDofs( meshPointer, dofs ); const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" ); #ifdef USE_MPI File file; file.open( initialConditionFile+convertToString(MPI::COMM_WORLD.Get_rank()), IOMode::read ); Meshes::DistributedGridIO<MeshFunctionType> ::load(file, *uPointer ); file.close(); #else if( ! this->uPointer->boundLoad( initialConditionFile ) ) { std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." << std::endl; return false; } #endif return true; } Loading Loading @@ -187,8 +198,15 @@ makeSnapshot( const RealType& time, fileName.setFileNameBase( "u-" ); fileName.setExtension( "tnl" ); fileName.setIndex( step ); #ifdef USE_MPI File file; file.open( fileName.getFileName()+convertToString(MPI::COMM_WORLD.Get_rank()), IOMode::write ); Meshes::DistributedGridIO<MeshFunctionType> ::save(file, *uPointer ); file.close(); #else if( ! this->uPointer->save( fileName.getFileName() ) ) return false; #endif return true; } Loading
src/TNL/Solvers/PDE/ExplicitUpdater.h +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ #include <TNL/Meshes/GridDetails/Traverser_Grid3D.h> #include <TNL/Solvers/PDE/ExplicitUpdater.h> #ifdef USE_MPI #include <TNL/Meshes/DistributedGridSynchronizer.h> #endif namespace TNL { namespace Solvers { Loading
src/TNL/Solvers/PDE/TimeDependentPDESolver.h +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ #include <TNL/SharedPointer.h> #include <TNL/Solvers/PDE/PDESolver.h> #ifdef USE_MPI #include <TNL/Meshes/DistributedGrid.h> #endif namespace TNL { namespace Solvers { namespace PDE { Loading Loading @@ -45,6 +49,10 @@ class TimeDependentPDESolver : public PDESolver< typename Problem::RealType, TimeDependentPDESolver(); #ifdef USE_MPI ~TimeDependentPDESolver(); #endif static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ); Loading Loading @@ -84,6 +92,12 @@ class TimeDependentPDESolver : public PDESolver< typename Problem::RealType, MeshPointer meshPointer; #ifdef USE_MPI MeshPointer globalMeshPointer; Meshes::DistributedGrid<MeshType> * distrGrid; #endif DofVectorPointer dofsPointer; MeshDependentDataPointer meshDependentDataPointer; Loading
src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h +27 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,17 @@ TimeDependentPDESolver() { } #ifdef USE_MPI template< typename Problem, typename DiscreteSolver, typename TimeStepper > TimeDependentPDESolver< Problem, DiscreteSolver, TimeStepper >:: ~TimeDependentPDESolver() { delete distrGrid; } #endif template< typename Problem, typename DiscreteSolver, typename TimeStepper > Loading Loading @@ -62,6 +73,21 @@ setup( const Config::ParameterContainer& parameters, * Load the mesh from the mesh file */ const String& meshFile = parameters.getParameter< String >( "mesh" ); #ifdef USE_MPI std::cout << "Loading a global mesh from the file " << meshFile << "..."; if( ! this->globalMeshPointer->load( meshFile ) ) { std::cerr << std::endl; std::cerr << "I am not able to load the global mesh from the file " << meshFile << "." << std::endl; return false; } std::cout << " [ OK ] " << std::endl; typename Meshes::DistributedGrid<MeshType>::CoordinatesType overlap; overlap.setValue(1); this->distrGrid=new Meshes::DistributedGrid<MeshType>(*globalMeshPointer,overlap); distrGrid->SetupGrid(*meshPointer); #else std::cout << "Loading a mesh from the file " << meshFile << "..."; if( ! this->meshPointer->load( meshFile ) ) { Loading @@ -71,6 +97,7 @@ setup( const Config::ParameterContainer& parameters, return false; } std::cout << " [ OK ] " << std::endl; #endif /**** * Setup the problem Loading