From 50a96b5330f8f2ee3f042c6d541251cd7bb517d9 Mon Sep 17 00:00:00 2001 From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr> Date: Thu, 28 Jun 2018 13:14:31 +0200 Subject: [PATCH] modif : tout le calcul se fait avec le pas de temps de la diffusion (sous cycle) --- src/main.cpp | 4 +++- src/scheme/AcousticSolver.hpp | 4 ++-- src/scheme/FiniteVolumesDiffusion.hpp | 12 ++++++------ src/scheme/FiniteVolumesEulerUnknowns.hpp | 8 ++++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9ca54fe27..6a13f8525 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -270,7 +270,7 @@ int main(int argc, char *argv[]) if (t+dt_euler > tmax) { dt_euler = tmax-t; } - acoustic_solver.computeNextStep(t,dt_euler, unknowns); + //acoustic_solver.computeNextStep(t,dt_euler, unknowns); t += dt_euler; // ETAPE 2 DU SPLITTING - DIFFUSION @@ -280,6 +280,7 @@ int main(int argc, char *argv[]) if (dt_euler <= dt_diff) { dt_diff = dt_euler; + acoustic_solver.computeNextStep(t_diff,dt_diff, unknowns); finite_volumes_diffusion.computeNextStep(t_diff, dt_diff, unknowns); } else { while (t > t_diff) { @@ -287,6 +288,7 @@ int main(int argc, char *argv[]) if (t_diff+dt_diff > t) { dt_diff = t-t_diff; } + acoustic_solver.computeNextStep(t_diff,dt_diff, unknowns); finite_volumes_diffusion.computeNextStep(t_diff, dt_diff, unknowns); t_diff += dt_diff; } diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp index 98762c84a..4370758c2 100644 --- a/src/scheme/AcousticSolver.hpp +++ b/src/scheme/AcousticSolver.hpp @@ -407,11 +407,11 @@ public: }); // Mise a jour de nu - /* + Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { nuj(j) = 0.5*(1.+xj[j][0]); }); - */ + } }; diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp index 56e63b96e..27fa0515f 100644 --- a/src/scheme/FiniteVolumesDiffusion.hpp +++ b/src/scheme/FiniteVolumesDiffusion.hpp @@ -249,12 +249,12 @@ private: double h = std::sqrt(1. - (t*t)/(50./9.)); // nu = (1+x)*0.5 - //m_Bl(0) = ((1.+h*x0[0][0])*3.*h*x0[0][0])/(100.*h*h*h*h); - //m_Bl(m_mesh.numberOfFaces()-1) = ((1.+h*xmax[0][0])*3.*h*xmax[0][0])/(100.*h*h*h*h); + m_Bl(0) = ((1.+h*x0[0][0])*3.*h*x0[0][0])/(100.*h*h*h*h); + m_Bl(m_mesh.numberOfFaces()-1) = ((1.+h*xmax[0][0])*3.*h*xmax[0][0])/(100.*h*h*h*h); // nu = 0.2 - m_Bl(0) = (0.2*3.*h*x0[0][0])/(50.*h*h*h*h); - m_Bl(m_mesh.numberOfFaces()-1) = (0.2*3.*h*xmax[0][0])/(50.*h*h*h*h); + //m_Bl(0) = (0.2*3.*h*x0[0][0])/(50.*h*h*h*h); + //m_Bl(m_mesh.numberOfFaces()-1) = (0.2*3.*h*xmax[0][0])/(50.*h*h*h*h); return m_Bl ; @@ -475,8 +475,8 @@ public: // ajout second membre pour kidder (k = x) uj[j][0] += (dt*inv_mj[j])*Vj(j)*(t/((50./9.)-t*t)); - Ej[j] -= (dt*inv_mj[j])*Vj(j)*((2.*xj[j][0]*t*t)/(((50./9.)-t*t)*((50./9.)-t*t))+(0.2*3.)/(50.*h*h*h*h)); - //Ej[j] -= (dt*inv_mj[j])*Vj(j)*((2.*xj[j][0]*t*t)/(((50./9.)-t*t)*((50./9.)-t*t))+(6*xj[j][0]+3.)/(100*(1-t*t/(50/9))*(1-t*t/(50/9)))); + //Ej[j] -= (dt*inv_mj[j])*Vj(j)*((2.*xj[j][0]*t*t)/(((50./9.)-t*t)*((50./9.)-t*t))+(0.2*3.)/(50.*h*h*h*h)); + Ej[j] -= (dt*inv_mj[j])*Vj(j)*((2.*xj[j][0]*t*t)/(((50./9.)-t*t)*((50./9.)-t*t))+(6*xj[j][0]+3.)/(100*(1-t*t/(50/9))*(1-t*t/(50/9)))); }); // Calcul de e par la formule e = E-0.5 u^2 diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp index 66775dd20..0c8b9c01c 100644 --- a/src/scheme/FiniteVolumesEulerUnknowns.hpp +++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp @@ -396,8 +396,8 @@ public: m_S0(j) = m_entropy(j); }); Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){ - //m_nuj(j) = 0.5*(1.+xj[j][0]); - m_nuj(j) = 0.2; + m_nuj(j) = 0.5*(1.+xj[j][0]); + //m_nuj(j) = 0.2; }); Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){ @@ -408,8 +408,8 @@ public: m_TL[0] = 1.; m_TR[0] = 103./100.; - m_nuL[0] = 0.2; - m_nuR[0] = 0.2; + m_nuL[0] = 0.5; + m_nuR[0] = 1.; } -- GitLab