From b58bbfbd8747cbfc987d61378ebfeeda95276f60 Mon Sep 17 00:00:00 2001 From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr> Date: Wed, 2 May 2018 10:14:38 +0200 Subject: [PATCH] test avec k non constant, presque ok --- src/main.cpp | 4 ++-- src/scheme/FiniteVolumesDiffusion.hpp | 22 +++++++++++----------- src/scheme/FiniteVolumesEulerUnknowns.hpp | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b0adab83e..1cfa843fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -184,8 +184,8 @@ int main(int argc, char *argv[]) double pi = 4.*std::atan(1.); std::ofstream fout("comparaison u"); for (size_t j=0; j<mesh.numberOfCells(); ++j) { - fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-2.*pi*pi*0.2) <<'\n'; //cas k constant - //fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-0.2) <<'\n'; // cas k non constant + //fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-2.*pi*pi*0.2) <<'\n'; //cas k constant + fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-0.2) <<'\n'; // cas k non constant } } diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp index bbb7d59b6..67774fc98 100644 --- a/src/scheme/FiniteVolumesDiffusion.hpp +++ b/src/scheme/FiniteVolumesDiffusion.hpp @@ -96,16 +96,16 @@ private: int cell_here = face_cells(l,j); int local_face_number_in_cell = face_cell_local_face(l,j); sum -= tensorProduct(uj(cell_here, local_face_number_in_cell), Cjr(cell_here, local_face_number_in_cell)); - // sum2 += kj(cell_here); + sum2 += kj(cell_here); } // k = x - //m_Fl(l) = ((sum2*0.5)/Vl(l))*sum; + m_Fl(l) = ((sum2*0.5)/Vl(l))*sum; // k = 2 - m_Fl(l)= (2./Vl(l))*sum; + //m_Fl(l)= (2./Vl(l))*sum; }); @@ -215,15 +215,15 @@ public: minVl = std::min(minVl, Vl(cell_faces(j, ll))); } //k=2 => (kj(j+1) + 2*kj(j) + kj(j-1)) = 8 - dt_j[j]= 0.5*rhoj(j)*Vj(j)*(2./8.)*minVl; + // dt_j[j]= 0.5*rhoj(j)*Vj(j)*(2./8.)*minVl; // k=x - //double sum = 0.; - //for (int m = 0; m < cell_nb_nodes(j); ++m) { - // sum += kj(cell_nodes(j,m)); - //} + double sum = 0.; + for (int m = 0; m < cell_nb_nodes(j); ++m) { + sum += kj(cell_nodes(j,m)); + } - //dt_j[j]= 0.5*rhoj(j)*Vj(j)*(1./(2.*kj(j) + sum))*minVl; + dt_j[j]= 0.5*rhoj(j)*Vj(j)*(1./(2.*kj(j) + sum))*minVl; }); @@ -279,8 +279,8 @@ public: momentum_fluxes += Fl(l)*Cjr(j,R); energy_fluxes += (Gl(l), Cjr(j,R)); } - //uj[j] += std::exp(-t)*(dt*inv_mj[j])*Vj(j)*Sj(j) + (dt*inv_mj[j]) * momentum_fluxes; - uj[j] += (dt*inv_mj[j]) * momentum_fluxes; + uj[j] += std::exp(-t)*(dt*inv_mj[j])*Vj(j)*Sj(j) + (dt*inv_mj[j]) * momentum_fluxes; + //uj[j] += (dt*inv_mj[j]) * momentum_fluxes; Ej[j] += (dt*inv_mj[j]) * energy_fluxes; }); diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp index e420de359..1ef763027 100644 --- a/src/scheme/FiniteVolumesEulerUnknowns.hpp +++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp @@ -228,12 +228,12 @@ void initializeSod() }); Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){ - m_kj[j] = 2; // k constant - //m_kj[j] = xj[j][0]; // k non constant, k = x + //m_kj[j] = 2; // k constant + m_kj[j] = xj[j][0]; // k non constant, k = x }); Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){ - m_Sj[j] = std::sin(pi*xj[j][0])*(xj[j][0]-1.) - std::cos(xj[j][0]*pi); + m_Sj[j] = std::sin(pi*xj[j][0])*(pi*pi*xj[j][0]-1.) - std::cos(xj[j][0]*pi)*pi; }); } -- GitLab