From 70ba955097d69e4c965e4aa779c9c282cf3cf9c0 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Tue, 17 Jul 2018 19:04:09 +0200
Subject: [PATCH] Cjr are now defined as NodeByCellData

---
 src/main.cpp                  | 10 +---------
 src/mesh/MeshData.hpp         | 25 +++++++++++++++----------
 src/scheme/AcousticSolver.hpp | 10 +++++-----
 src/scheme/NodeByCellData.hpp |  2 ++
 4 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/src/main.cpp b/src/main.cpp
index 060601506..1a1d939cc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -197,7 +197,7 @@ int main(int argc, char *argv[])
           typedef TinyVector<MeshType::dimension> Rd;
 
           const Kokkos::View<const double*> Vj = mesh_data.Vj();
-          const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr();
+          const NodeByCellData<Rd> Cjr = mesh_data.Cjr();
 
           const double tmax=0.2;
           double t=0;
@@ -304,10 +304,7 @@ int main(int argc, char *argv[])
 
           AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list);
 
-          typedef TinyVector<MeshType::dimension> Rd;
-
           const Kokkos::View<const double*> Vj = mesh_data.Vj();
-          const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr();
 
           const double tmax=0.2;
           double t=0;
@@ -403,10 +400,7 @@ int main(int argc, char *argv[])
 
           AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list);
 
-          typedef TinyVector<MeshType::dimension> Rd;
-
           const Kokkos::View<const double*> Vj = mesh_data.Vj();
-          const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr();
 
           const double tmax=0.2;
           double t=0;
@@ -431,7 +425,6 @@ int main(int argc, char *argv[])
               dt=tmax-t;
             }
             acoustic_solver.computeNextStep(t,dt, unknowns);
-
             block_eos.updatePandCFromRhoE();
 
             t += dt;
@@ -490,7 +483,6 @@ int main(int argc, char *argv[])
       typedef TinyVector<MeshType::dimension> Rd;
 
       const Kokkos::View<const double*> Vj = mesh_data.Vj();
-      const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr();
 
       const double tmax=0.2;
       double t=0;
diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp
index f9732fbe9..4086090a2 100644
--- a/src/mesh/MeshData.hpp
+++ b/src/mesh/MeshData.hpp
@@ -4,6 +4,8 @@
 #include <Kokkos_Core.hpp>
 #include <TinyVector.hpp>
 
+#include <NodeByCellData.hpp>
+
 #include <map>
 
 template <typename M>
@@ -21,7 +23,7 @@ public:
 
 private:
   const MeshType& m_mesh;
-  Kokkos::View<Rd**> m_Cjr;
+  NodeByCellData<Rd> m_Cjr;
   Kokkos::View<double**>  m_ljr;
   Kokkos::View<Rd**> m_njr;
   Kokkos::View<Rd*>  m_xj;
@@ -179,7 +181,7 @@ public:
     return m_mesh;
   }
 
-  const Kokkos::View<const Rd**> Cjr() const
+  const NodeByCellData<Rd>& Cjr() const
   {
     return m_Cjr;
   }
@@ -213,7 +215,7 @@ public:
 
   MeshData(const MeshType& mesh)
     : m_mesh(mesh),
-      m_Cjr("Cjr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()),
+      m_Cjr(mesh.connectivity().m_node_id_per_cell_matrix),
       m_ljr("ljr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()),
       m_njr("njr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()),
       m_xj("xj", mesh.numberOfCells()),
@@ -222,15 +224,18 @@ public:
     if constexpr (dimension==1) {
       // in 1d Cjr are computed once for all
       Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
-	  m_Cjr(j,0)=-1;
-	  m_Cjr(j,1)= 1;
-	});
+          m_Cjr(j,0)=-1;
+          m_Cjr(j,1)= 1;
+        });
       // in 1d njr=Cjr
-      m_njr=m_Cjr;
       Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
-	  m_ljr(j,0)= 1;
-	  m_ljr(j,1)= 1;
-	});
+          m_njr(j,0)=-1;
+          m_njr(j,1)= 1;
+        });
+      Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
+          m_ljr(j,0)= 1;
+          m_ljr(j,1)= 1;
+        });
     }
     this->updateAllData();
   }
diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp
index d9c596519..e814a1434 100644
--- a/src/scheme/AcousticSolver.hpp
+++ b/src/scheme/AcousticSolver.hpp
@@ -85,7 +85,7 @@ private:
                   const Kokkos::View<const double**>& ljr,
                   const Kokkos::View<const Rd**>& njr)
   {
-    const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr();
+    const NodeByCellData<Rd>& Cjr = m_mesh_data.Cjr();
     Kokkos::parallel_for("new nested Ajr", m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
         const size_t& nb_nodes =m_Ajr.numberOfSubValues(j);
         const double& rho_c = rhocj(j);
@@ -116,7 +116,7 @@ private:
   KOKKOS_INLINE_FUNCTION
   const Kokkos::View<const Rd*>
   computeBr(const NodeByCellData<Rdd>& Ajr,
-            const Kokkos::View<const Rd**>& Cjr,
+            const NodeByCellData<Rd>& Cjr,
             const Kokkos::View<const Rd*>& uj,
             const Kokkos::View<const double*>& pj) {
     Kokkos::parallel_for(m_mesh.numberOfNodes(), KOKKOS_LAMBDA(const int& r) {
@@ -192,7 +192,7 @@ private:
   void
   computeFjr(const NodeByCellData<Rdd>& Ajr,
              const Kokkos::View<const Rd*>& ur,
-             const Kokkos::View<const Rd**>& Cjr,
+             const NodeByCellData<Rd>& Cjr,
              const Kokkos::View<const Rd*>& uj,
              const Kokkos::View<const double*>& pj)
   {
@@ -221,7 +221,7 @@ private:
                              const Kokkos::View<const double*>& pj,
                              const Kokkos::View<const double*>& cj,
                              const Kokkos::View<const double*>& Vj,
-                             const Kokkos::View<const Rd**>& Cjr,
+                             const NodeByCellData<Rd>& Cjr,
                              const Kokkos::View<const double**>& ljr,
                              const Kokkos::View<const Rd**>& njr) {
     const Kokkos::View<const double*> rhocj  = computeRhoCj(rhoj, cj);
@@ -304,7 +304,7 @@ public:
 
     const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
     const Kokkos::View<const double*> Vj = m_mesh_data.Vj();
-    const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr();
+    const NodeByCellData<Rd>& Cjr = m_mesh_data.Cjr();
     const Kokkos::View<const double**> ljr = m_mesh_data.ljr();
     const Kokkos::View<const Rd**> njr = m_mesh_data.njr();
     Kokkos::View<Rd*> xr = m_mesh.xr();
diff --git a/src/scheme/NodeByCellData.hpp b/src/scheme/NodeByCellData.hpp
index 52f9b02cf..723cd1f48 100644
--- a/src/scheme/NodeByCellData.hpp
+++ b/src/scheme/NodeByCellData.hpp
@@ -3,6 +3,8 @@
 
 #include <Kokkos_StaticCrsGraph.hpp>
 
+#warning should not stand in the scheme directory
+
 typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix;
 
 template <typename DataType>
-- 
GitLab