diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp index 1b7e98f415284155a35d0c52d5b1014c24baa3aa..99ab626e36b43270f21591516b8c2f98ce2f5d55 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();