From 591811a1c6f5469ac75c6ef95f8f9e3538ede56b Mon Sep 17 00:00:00 2001 From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr> Date: Mon, 25 Jun 2018 08:50:02 +0200 Subject: [PATCH] modification condition CFL dans diffusion --- src/main.cpp | 3 ++- src/scheme/FiniteVolumesDiffusion.hpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f54a78561..15f267d92 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -154,6 +154,7 @@ int main(int argc, char *argv[]) Kokkos::View<double*> gammaj = unknowns.gammaj(); Kokkos::View<double*> cj = unknowns.cj(); Kokkos::View<double*> kj = unknowns.kj(); + Kokkos::View<double*> nuj = unknowns.nuj(); Kokkos::View<Rd*> uj = unknowns.uj(); BlockPerfectGas block_eos(rhoj, ej, pj, gammaj, cj); @@ -312,7 +313,7 @@ int main(int argc, char *argv[]) // DIFFUSION PURE - double dt = 0.4*finite_volumes_diffusion.diffusion_dt(rhoj,kj,cj); + double dt = 0.4*finite_volumes_diffusion.diffusion_dt(rhoj,kj,nuj,cj); if (t+dt > tmax) { dt = tmax-t; } diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp index 49f29b277..7b0ffa5e5 100644 --- a/src/scheme/FiniteVolumesDiffusion.hpp +++ b/src/scheme/FiniteVolumesDiffusion.hpp @@ -311,6 +311,7 @@ public: KOKKOS_INLINE_FUNCTION double diffusion_dt(const Kokkos::View<const double*>& rhoj, const Kokkos::View<const double*>& kj, + const Kokkos::View<const double*>& nuj, const Kokkos::View<const double*>& cj) const { Kokkos::View<double*> dt_j("dt_j", m_mesh.numberOfCells()); @@ -336,15 +337,25 @@ public: } double sum = 0.; + double sum1 = 0.; for (int m = 0; m < cell_nb_nodes(j); ++m) { sum += kj(cell_nodes(j,m)); + sum1 += nuj(cell_nodes(j,m)); } - if (sum == 0.) { - dt_j[j] = std::numeric_limits<double>::max(); + if (sum < sum1) { + if (sum == 0.) { + dt_j[j] = std::numeric_limits<double>::max(); + } else { + dt_j[j]= 0.5*rhoj(j)*Vj(j)*(1./sum)*minVl; + } } else { - dt_j[j]= 0.5*rhoj(j)*Vj(j)*(1./sum)*minVl; + if (sum1 == 0.) { + dt_j[j] = std::numeric_limits<double>::max(); + } else { + dt_j[j]= 0.5*rhoj(j)*Vj(j)*(1./sum1)*minVl; + } } }); -- GitLab