diff --git a/src/mesh/Mesh.hpp b/src/mesh/Mesh.hpp
index a5ce53cca535cdffc3cab73058b848de2c8ca9ec..2a9bb022d4a9b5f67262a68653980480f821563c 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/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp
index 04558707e8ee74b1d813f511a459cb56ecac5db1..6e22152562978ae0f00ca052a409d278d88a1eae 100644
--- a/src/scheme/FiniteVolumesDiffusion.hpp
+++ b/src/scheme/FiniteVolumesDiffusion.hpp
@@ -76,8 +76,12 @@ private:
   // Calcule un Fl
   Kokkos::View<Rdd*> 
   computeFl(const Kokkos::View<const Rd**>& Cjr,
-	     const Kokkos::View<const Rd*>& uj,
-	     const Kokkos::View<const double*>& kj) {
+	    const Kokkos::View<const Rd*>& uj,
+	    const Kokkos::View<const double*>& kj,
+	    const Kokkos::View<const Rd*>& uL,
+	    const Kokkos::View<const Rd*>& uR,
+	    const Kokkos::View<const double*>& kL,
+	    const Kokkos::View<const double*>& kR) {
 
     const Kokkos::View<const unsigned int**>& face_cells = m_connectivity.faceCells();
 
@@ -101,6 +105,20 @@ private:
 
 	m_Fl(l) = ((sum2/face_nb_cells(l))/Vl(l))*sum;
 
+	
+	// Conditions aux bords 
+	
+	int cell_here = face_cells(0,0);
+	int local_face_number_in_cell = face_cell_local_face(0,0);
+	//m_Fl(0) = -(kL(0) + kj(cell_here))*0.5*(tensorProduct(uj(cell_here), Cjr(cell_here, local_face_number_in_cell)) - tensorProduct(uL(0), Cjr(cell_here, local_face_number_in_cell)));
+	m_Fl(0) = -(kL(0) + kj(0))*0.5*(tensorProduct(uj(0), Cjr(0, 0)));
+
+	cell_here = face_cells(m_mesh.numberOfFaces()-1,0);
+	local_face_number_in_cell = face_cell_local_face(m_mesh.numberOfFaces()-1,0);
+	//m_Fl(m_mesh.numberOfFaces()-1) = -(kR(0) + kj(cell_here))*0.5*(tensorProduct(uj(cell_here), Cjr(cell_here, local_face_number_in_cell)) - tensorProduct(uR(0), Cjr(cell_here, local_face_number_in_cell)));
+	m_Fl(m_mesh.numberOfFaces()-1) = -(kR(0) + kj(m_mesh.numberOfCells()-1))*0.5*(tensorProduct(uj(m_mesh.numberOfCells()-1), Cjr(m_mesh.numberOfCells()-1,1))); 
+	
+	
       });
 
     return m_Fl ;
@@ -161,9 +179,13 @@ private:
   KOKKOS_INLINE_FUNCTION
   void computeExplicitFluxes(const Kokkos::View<const Rd*>& uj,
 			     const Kokkos::View<const Rd**>& Cjr,
-			     const Kokkos::View<const double*>& kj) { 
+			     const Kokkos::View<const double*>& kj,
+			     const Kokkos::View<const Rd*>& uL,
+			     const Kokkos::View<const Rd*>& uR,
+			     const Kokkos::View<const double*>& kL,
+			     const Kokkos::View<const double*>& kR) { 
     Kokkos::View<Rdd*> Fl  = m_Fl ; 
-    Fl  = computeFl (Cjr, uj, kj);
+    Fl  = computeFl (Cjr, uj, kj, uL, uR, kL, kR);
     Kokkos::View<Rd*> Gl  = m_Gl ; 
     Gl  = computeGl (uj, Fl );
   }
@@ -247,12 +269,20 @@ public:
 
     const Kokkos::View<const double*> kj = unknowns.kj();
 
+    Kokkos::View<Rd*> uL = unknowns.uL();
+    Kokkos::View<Rd*> uR = unknowns.uR();
+    Kokkos::View<double*> kL = unknowns.kL();
+    Kokkos::View<double*> kR = unknowns.kR();
+
     const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
     const Kokkos::View<const double*> Vj = m_mesh_data.Vj();
     const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr();
 
+    
+    
+
     // Calcule les flux
-    computeExplicitFluxes(uj, Cjr, kj);
+    computeExplicitFluxes(uj, Cjr, kj, uL, uR, kL, kR);
 
     const Kokkos::View<const Rdd*> Fl  = m_Fl ;
     const Kokkos::View<const Rd *> Gl  = m_Gl ;
diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp
index c00df47701bd190d8145f9b1e587127acd2a0b90..5ea0d339006a53e47a316bd04faa7bebf7dea5e6 100644
--- a/src/scheme/FiniteVolumesEulerUnknowns.hpp
+++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp
@@ -27,6 +27,10 @@ private:
   Kokkos::View<double*> m_inv_mj;
   Kokkos::View<double*> m_kj;
   Kokkos::View<Rd*> m_Sj;
+  Kokkos::View<Rd*> m_uL;
+  Kokkos::View<Rd*> m_uR;
+  Kokkos::View<double*> m_kL;
+  Kokkos::View<double*> m_kR;
 
 public:
   Kokkos::View<double*> rhoj()
@@ -134,11 +138,53 @@ public:
    return m_Sj;
   }
 
-  const Kokkos::View<const double*> Sj() const
+  const Kokkos::View<const Rd*> Sj() const
   {
     return m_Sj;
   }
 
+  Kokkos::View<Rd*> uL()
+  {
+    return m_uL;
+  }
+
+  const Kokkos::View<const Rd*> uL() const
+  {
+    return m_uL;
+  }
+
+  Kokkos::View<Rd*> uR()
+  {
+    return m_uR;
+  }
+
+  const Kokkos::View<const Rd*> uR() const
+  {
+    return m_uR;
+  }
+
+  Kokkos::View<double*> kL()
+  {
+    return m_kL;
+  }
+
+  const Kokkos::View<const double*> kL() const
+  {
+    return m_kL;
+  }
+
+  Kokkos::View<double*> kR()
+  {
+    return m_kR;
+  }
+
+  const Kokkos::View<const double*> kR() const
+  {
+    return m_kR;
+  }
+
+  
+
   // --- Acoustic Solver ---
 
   // void initializeSod()
@@ -211,7 +257,6 @@ void initializeSod()
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
 	m_gammaj[j] = 2.;
-
       });
 
     BlockPerfectGas block_eos(m_rhoj, m_ej, m_pj, m_gammaj, m_cj);
@@ -238,7 +283,15 @@ void initializeSod()
 
     Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
     	m_Sj[j] = std::sin(pi*xj[j][0])*(pi*pi*xj[j][0]-1.) - std::cos(xj[j][0]*pi)*pi;
-    });
+      });
+
+    // Conditions aux bords de Dirichlet sur u et k
+    
+    m_uL[0] = zero;
+    m_uR[0] = zero;
+    m_kL[0] = 2.;
+    m_kR[0] = 2.;
+
   }
 
 
@@ -255,7 +308,12 @@ void initializeSod()
       m_mj("mj",m_mesh.numberOfCells()),
       m_inv_mj("inv_mj",m_mesh.numberOfCells()),
       m_kj("kj",m_mesh.numberOfCells()),
-      m_Sj("Sj",m_mesh.numberOfCells())
+      m_Sj("Sj",m_mesh.numberOfCells()),
+  m_uL("uL", 1),
+  m_uR("uR", 1),
+  m_kL("kL", 1),
+  m_kR("kR", 1)
+  
   {
     ;
   }