From aea6745cf72b3a846b20feffc7776302d8d6fe49 Mon Sep 17 00:00:00 2001
From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr>
Date: Wed, 25 Apr 2018 09:07:53 +0200
Subject: [PATCH] ajout de Dj

---
 src/scheme/FiniteVolumesDiffusion.hpp | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp
index 1b7e98f41..99ab626e3 100644
--- a/src/scheme/FiniteVolumesDiffusion.hpp
+++ b/src/scheme/FiniteVolumesDiffusion.hpp
@@ -80,11 +80,11 @@ private:
     const Kokkos::View<const unsigned int**>& cell_nodes = m_connectivity.cellNodes();
     const Kokkos::View<const unsigned short*> cell_nb_nodes
       = m_connectivity.cellNbNodes();
-    const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
+    const Kokkos::View<const double*>& Dj = m_mesh_data.Dj();
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
 	for (int r=0; r<cell_nb_nodes[j]; ++r) {
-	  m_Fjr(j,r) = ((kj(cell_nodes(j,r)) + kj(cell_nodes(j,r)-1))/(2*(xj(cell_nodes(j,r))-xj(cell_nodes(j,r)-1)))) * (uj(j,r),Cjr(j,r)); //tensorProduct(uj(j,r),Cjr(j,r)) ?
+	  m_Fjr(j,r) = ((kj(cell_nodes(j,r)) + kj(cell_nodes(j,r)-1))/(2*Dj(j))) * (uj(j,r),Cjr(j,r)); //tensorProduct(uj(j,r),Cjr(j,r)) ?
 	}
       });
 
@@ -128,9 +128,7 @@ private:
   // Enchaine les operations pour calculer les flux (Fjr et Gjr) pour
   // pouvoir derouler le schema
   KOKKOS_INLINE_FUNCTION
-  void computeExplicitFluxes(const Kokkos::View<const Rd*>& xj,
-			     const Kokkos::View<const double*>& rhoj,
-			     const Kokkos::View<const Rd*>& uj,
+  void computeExplicitFluxes(const Kokkos::View<const Rd*>& uj,
 			     const Kokkos::View<const Rd**>& Cjr,
 			     const Kokkos::View<const double*>& kj) { 
     Kokkos::View<Rd**> Fjr = m_Fjr; 
@@ -157,19 +155,20 @@ public:
   // Calcule une evaluation du pas de temps verifiant le CFL parabolique
   // Utilise la reduction definie dans la structure ReduceMin. Ici, dx_j=V_j
   KOKKOS_INLINE_FUNCTION
-  double diffusion_dt(const Kokkos::View<const double*>& Vj,
-		      const Kokkos::View<const double*>& rhoj,
+  double diffusion_dt(const Kokkos::View<const double*>& rhoj,
 		      const Kokkos::View<const double*>& kj) const {
     Kokkos::View<double*> dt_j("dt_j", m_mesh.numberOfCells());
-    const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
     const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr();
+    const Kokkos::View<const double*>& Dj = m_mesh_data.Dj();
+    const Kokkos::View<const double*>& Vj = m_mesh_data.Vj();
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
        	dt_j[j]
 	  = rhoj(j)*Vj(j)*(2./(kj(j+1) + 2*kj(j) + kj(j-1)))
+	  * std::min(Dj(j+1),Dj(j));
 	  // * std::min(xj(j+1)-xj(j), xj(j)-xj(j-1));
-	  * std::min((xj(j+1),Cjr(j,1)) + (xj(j),Cjr(j,0)),
-		     (xj(j),Cjr(j,1)) + (xj(j-1),Cjr(j,0)) );
+	  // * std::min((Dxj(j+1),Cjr(j,1)) + (xj(j),Cjr(j,0)),
+	  //(xj(j),Cjr(j,1)) + (xj(j-1),Cjr(j,0)) );
       });
 
     double dt = std::numeric_limits<double>::max();
-- 
GitLab