From d2d59429c4901bd8490020f25a7c2f160c12a78a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Matou=C5=A1=20Fencl?= <fenclmat@fjfi.cvut.cz>
Date: Fri, 30 Nov 2018 09:02:24 +0100
Subject: [PATCH] Change of int to IndexType and preparations for OpenMPI.

---
 .../hamilton-jacobi/HamiltonJacobiProblem.h   |  2 ++
 .../HamiltonJacobiProblem_impl.h              | 24 ++++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem.h b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem.h
index a414420002..7f1bd41939 100644
--- a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem.h
+++ b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem.h
@@ -25,6 +25,8 @@
 #include <solvers/pde/tnlLinearSystemAssembler.h>
 #include <functions/tnlMeshFunction.h>
 
+#include <TNL/Meshes/DistributedMeshes/DistributedGridIO.h>
+
 template< typename Mesh,
 		    typename DifferentialOperator,
 		    typename BoundaryCondition,
diff --git a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
index b529b09fd7..9244b18332 100644
--- a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
+++ b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/HamiltonJacobiProblem_impl.h
@@ -121,13 +121,25 @@ setInitialCondition( const Config::ParameterContainer& parameters,
                      DofVectorType& dofs,
                      MeshDependentDataType& meshDependentData  )
 {
-   this->bindDofs( mesh, dofs );
-   const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
-   if( ! this->solution.boundLoad( initialConditionFile ) )
-   {
-     std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." <<std::endl;
+  this->bindDofs( mesh, dofs );
+  const String& initialConditionFile = parameters.getParameter< String >( "initial-condition" );
+  if(CommunicatorType::isDistributed())
+  {
+    std::cout<<"Nodes Distribution: " << uPointer->getMesh().getDistributedMesh()->printProcessDistr() << std::endl;
+    if(distributedIOType==Meshes::DistributedMeshes::MpiIO)
+      Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::MpiIO> ::load(initialConditionFile, *uPointer );
+    if(distributedIOType==Meshes::DistributedMeshes::LocalCopy)
+      Meshes::DistributedMeshes::DistributedGridIO<MeshFunctionType,Meshes::DistributedMeshes::LocalCopy> ::load(initialConditionFile, *uPointer );
+    uPointer->template synchronize<CommunicatorType>();
+  }
+  else
+  {
+    if( ! this->solution.boundLoad( initialConditionFile ) )
+    {
+      std::cerr << "I am not able to load the initial condition from the file " << initialConditionFile << "." <<std::endl;
       return false;
-   }
+    }
+  }
    return true;
 }
 
-- 
GitLab