From 9f45a939bb468e48a5ca440050190c4337210dd6 Mon Sep 17 00:00:00 2001
From: HOCH PHILIPPE <philippe.hoch@gmail.com>
Date: Sun, 17 Nov 2024 18:44:12 +0100
Subject: [PATCH] limitation is parallelised ok for second order schemes..

---
 src/scheme/CellbyCellLimitation.hpp                        | 3 +++
 src/scheme/RoeViscousFormEulerianCompositeSolver_v2_o2.cpp | 5 ++++-
 src/scheme/RusanovEulerianCompositeSolver_v2_o2.cpp        | 6 ++++--
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/scheme/CellbyCellLimitation.hpp b/src/scheme/CellbyCellLimitation.hpp
index 5369c4fd6..73a8ae06b 100644
--- a/src/scheme/CellbyCellLimitation.hpp
+++ b/src/scheme/CellbyCellLimitation.hpp
@@ -5,6 +5,7 @@
 #include <mesh/MeshData.hpp>
 
 #include <language/utils/InterpolateItemArray.hpp>
+#include <mesh/ItemValueUtils.hpp>
 #include <mesh/Mesh.hpp>
 #include <mesh/MeshData.hpp>
 #include <mesh/MeshDataManager.hpp>
@@ -253,6 +254,7 @@ class CellByCellLimitation
           // grad(i) *= alfa;
         });
     }
+    synchronize(Limitor_q);
   }
 
   void
@@ -542,6 +544,7 @@ class CellByCellLimitation
           Limitor_eps[j] = alfa;
         });
     }
+    synchronize(Limitor_eps);
   }
 };
 #endif
diff --git a/src/scheme/RoeViscousFormEulerianCompositeSolver_v2_o2.cpp b/src/scheme/RoeViscousFormEulerianCompositeSolver_v2_o2.cpp
index 371129c55..8e9f257b6 100644
--- a/src/scheme/RoeViscousFormEulerianCompositeSolver_v2_o2.cpp
+++ b/src/scheme/RoeViscousFormEulerianCompositeSolver_v2_o2.cpp
@@ -12,6 +12,7 @@
 #include <mesh/MeshNodeBoundary.hpp>
 #include <mesh/MeshTraits.hpp>
 #include <mesh/MeshVariant.hpp>
+#include <mesh/SubItemValuePerItemUtils.hpp>
 #include <scheme/DiscreteFunctionDPk.hpp>
 #include <scheme/DiscreteFunctionDPkVariant.hpp>
 #include <scheme/DiscreteFunctionDPkVector.hpp>
@@ -1652,7 +1653,7 @@ class RoeViscousFormEulerianCompositeSolver_v2_o2
           Gjr[j][l] *= 1. / node_to_cell.size();
         }
       });
-
+    synchronize(Gjr);
     if (checkLocalConservation) {
       auto is_boundary_node = p_mesh->connectivity().isBoundaryNode();
 
@@ -1772,6 +1773,7 @@ class RoeViscousFormEulerianCompositeSolver_v2_o2
           Gjf[j][l] *= 1. / face_to_cell.size();
         }
       });
+    synchronize(Gjf);
 
     if (checkLocalConservation) {
       auto is_boundary_face = p_mesh->connectivity().isBoundaryFace();
@@ -1902,6 +1904,7 @@ class RoeViscousFormEulerianCompositeSolver_v2_o2
             Gje[j][l] *= 1. / edge_to_cell.size();
           }
         });
+      synchronize(Gje);
 
       if (checkLocalConservation) {
         auto is_boundary_edge = p_mesh->connectivity().isBoundaryEdge();
diff --git a/src/scheme/RusanovEulerianCompositeSolver_v2_o2.cpp b/src/scheme/RusanovEulerianCompositeSolver_v2_o2.cpp
index 9e38262d5..0133f85d5 100644
--- a/src/scheme/RusanovEulerianCompositeSolver_v2_o2.cpp
+++ b/src/scheme/RusanovEulerianCompositeSolver_v2_o2.cpp
@@ -12,6 +12,7 @@
 #include <mesh/MeshNodeBoundary.hpp>
 #include <mesh/MeshTraits.hpp>
 #include <mesh/MeshVariant.hpp>
+#include <mesh/SubItemValuePerItemUtils.hpp>
 #include <scheme/DiscreteFunctionDPk.hpp>
 #include <scheme/DiscreteFunctionDPkVariant.hpp>
 #include <scheme/DiscreteFunctionDPkVector.hpp>
@@ -1221,7 +1222,7 @@ class RusanovEulerianCompositeSolver_v2_o2
           Gjr[j][l] *= 1. / node_to_cell.size();
         }
       });
-
+    synchronize(Gjr);
     if (checkLocalConservation) {
       auto is_boundary_node = p_mesh->connectivity().isBoundaryNode();
 
@@ -1294,7 +1295,7 @@ class RusanovEulerianCompositeSolver_v2_o2
           Gjf[j][l] *= 1. / face_to_cell.size();
         }
       });
-
+    synchronize(Gjf);
     if (checkLocalConservation) {
       auto is_boundary_face = p_mesh->connectivity().isBoundaryFace();
 
@@ -1376,6 +1377,7 @@ class RusanovEulerianCompositeSolver_v2_o2
             Gje[j][l] *= 1. / edge_to_cell.size();
           }
         });
+      synchronize(Gje);
 
       if (checkLocalConservation) {
         auto is_boundary_edge = p_mesh->connectivity().isBoundaryEdge();
-- 
GitLab