From f51819fa84b751b528258011940594050bff3f52 Mon Sep 17 00:00:00 2001
From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr>
Date: Fri, 18 May 2018 11:40:46 +0200
Subject: [PATCH] Modifs dans boucle programme principal et CL sur k

---
 src/main.cpp                              | 32 ++++++++++++++++-------
 src/mesh/Mesh.hpp                         |  8 +++---
 src/scheme/FiniteVolumesEulerUnknowns.hpp | 20 +++++++-------
 3 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/src/main.cpp b/src/main.cpp
index e939a34cd..a3ab89c9a 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -156,33 +156,45 @@ int main(int argc, char *argv[])
     while((t<tmax) and (iteration<itermax)) {
 
       // ETAPE 1 DU SPLITTING - EULER
-
+      
       double dt_euler = 0.4*acoustic_solver.acoustic_dt(Vj, cj);
 
       if (t+dt_euler > tmax) {
 	dt_euler = tmax-t;
       }
       acoustic_solver.computeNextStep(t,dt_euler, unknowns);
-
+      t += dt_euler;
+      
       // ETAPE 2 DU SPLITTING - DIFFUSION
-
+      
       double dt_diff = finite_volumes_diffusion.diffusion_dt(rhoj, kj);
-      std::cout << dt_euler << ' ' << dt_diff << std::endl;
+ 
       if (dt_euler <= dt_diff) {
 	dt_diff = dt_euler;
 	finite_volumes_diffusion.computeNextStep(t, dt_diff, unknowns);
 	t += dt_euler;
       } else {
 	double t_diff = t + dt_diff;
-	while (t + dt_euler > t_diff) {
+	while ((t + dt_euler > t_diff) and (t_diff < tmax)) {
 	  finite_volumes_diffusion.computeNextStep(t_diff, dt_diff, unknowns);
 	  dt_diff = 0.4*finite_volumes_diffusion.diffusion_dt(rhoj, kj);
 	  t_diff += dt_diff;
-	  std::cout << t_diff << '\n';
 	}
 	t = t_diff;
       }
       
+
+      // DIFFUSION PURE
+
+      /*
+      double dt = 0.4*finite_volumes_diffusion.diffusion_dt(rhoj,kj);
+      if (t+dt > tmax) {
+	dt = tmax-t;
+      }
+      finite_volumes_diffusion.computeNextStep(t, dt, unknowns);
+      t += dt;
+      */
+      
       block_eos.updatePandCFromRhoE();    
     
       ++iteration;
@@ -228,7 +240,7 @@ int main(int argc, char *argv[])
     { // gnuplot output for density
      const Kokkos::View<const Rd*> xj   = mesh_data.xj();
      const Kokkos::View<const Rd*> uj = unknowns.uj();
-     std::ofstream fout("resultat rho");
+     std::ofstream fout("rho ns");
      fout.precision(15);
      for (size_t j=0; j<mesh.numberOfCells(); ++j) {
        fout << xj[j][0] << ' ' << rhoj[j] << '\n';
@@ -238,8 +250,8 @@ int main(int argc, char *argv[])
      { // gnuplot output for vitesse
      const Kokkos::View<const Rd*> xj   = mesh_data.xj();
      const Kokkos::View<const Rd*> uj = unknowns.uj();
-     // double pi = 4.*std::atan(1.);
-     std::ofstream fout("resultat u");
+     //double pi = 4.*std::atan(1.);
+     std::ofstream fout("u ns");
      fout.precision(15);
      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
@@ -252,7 +264,7 @@ int main(int argc, char *argv[])
      const Kokkos::View<const Rd*> xj   = mesh_data.xj();
      const Kokkos::View<const double*> Ej = unknowns.Ej();
      //double pi = 4.*std::atan(1.);
-     std::ofstream fout("resultat E");
+     std::ofstream fout("E ns");
      fout.precision(15);
      for (size_t j=0; j<mesh.numberOfCells(); ++j) {
        //fout << xj[j][0] << ' ' << Ej[j] << ' ' << (-(std::cos(pi*xj[j][0])*std::cos(pi*xj[j][0]))+(std::sin(pi*xj[j][0])*std::sin(pi*xj[j][0])))*0.5*(std::exp(-4.*pi*pi*0.2)-1.) + 2. <<'\n'; // cas k constant
diff --git a/src/mesh/Mesh.hpp b/src/mesh/Mesh.hpp
index 39539dbae..68c35a131 100644
--- a/src/mesh/Mesh.hpp
+++ b/src/mesh/Mesh.hpp
@@ -50,7 +50,7 @@ public:
 
   // pas constant
 
-  
+  /*
   Mesh(const Connectivity& connectivity)
     : m_connectivity(connectivity),
       m_xr("xr", connectivity.numberOfNodes())
@@ -60,11 +60,11 @@ public:
   	m_xr[r][0] = r*delta_x;
       });
   }
-  
+  */
 
   // pas non constant
   
-  /*      
+         
   Mesh(const Connectivity& connectivity)
   : m_connectivity(connectivity),
     m_xr("xr", connectivity.numberOfNodes())
@@ -85,7 +85,7 @@ public:
   	}
       });
   }
-  */
+  
 
   ~Mesh()
   {
diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp
index c19955de5..f74eebf7c 100644
--- a/src/scheme/FiniteVolumesEulerUnknowns.hpp
+++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp
@@ -183,7 +183,7 @@ public:
     return m_kR;
   }
 
-
+  
   // --- Acoustic Solver ---
 
   void initializeSod()
@@ -218,7 +218,8 @@ public:
     block_eos.updateEandCFromRhoP();
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
-  	m_Ej[j] = m_ej[j]+0.5*(m_uj[j],m_uj[j]);
+  	//m_Ej[j] = m_ej[j]+0.5*(m_uj[j],m_uj[j]);
+	m_Ej[j] = 2.;
       });
 
     const Kokkos::View<const double*> Vj = m_mesh_data.Vj();
@@ -231,20 +232,21 @@ public:
       });
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
-  	m_kj[j] = 1; 
+  	m_kj[j] = 0.0002*0.5; 
       });
 
      // Conditions aux bords de Dirichlet sur u et k
     
     m_uL[0] = zero;
     m_uR[0] = zero;
-    m_kL[0] = 1.;
-    m_kR[0] = 1.;
+    m_kL[0] = 0.0002*0.5;
+    m_kR[0] = 0.0002*0.5;
   }
 
+  
+  /*
 
-
-  /* DIFFUSION PURE
+  // DIFFUSION PURE
 
     void initializeSod()
     {
@@ -301,8 +303,8 @@ public:
     m_kR[0] = 1.;
 
   }
-
-  */
+*/
+  
 
 
   FiniteVolumesEulerUnknowns(const MeshDataType& mesh_data)
-- 
GitLab