From 04e07eac6ba7b11592a0262ba2e1653104e2d177 Mon Sep 17 00:00:00 2001
From: Fanny CHOPOT <fanny.chopot.ocre@cea.fr>
Date: Tue, 15 May 2018 15:31:14 +0200
Subject: [PATCH] correction solution exacte gnuplot et CL pour k non constant

---
 src/main.cpp                              |  3 ++-
 src/scheme/FiniteVolumesDiffusion.hpp     | 16 +++++++++-------
 src/scheme/FiniteVolumesEulerUnknowns.hpp |  4 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/main.cpp b/src/main.cpp
index c41d69c52..9f3e64828 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -227,7 +227,8 @@ int main(int argc, char *argv[])
      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
-       fout << xj[j][0] << ' ' << Ej[j] << ' ' << (0.5*pi*pi*xj[j][0]*(std::sin(pi*xj[j][0])*std::sin(pi*xj[j][0]) - std::cos(pi*xj[j][0])*std::cos(pi*xj[j][0])) - cos(xj[j][0])*sin(xj[j][0])*pi*0.5)*(std::exp(-2.*0.2) - 1.) + 2. <<'\n' ; // cas k non constant
+       fout << xj[j][0] << ' ' << Ej[j] << ' ' << ((xj[j][0]*pi*pi*0.5)*(std::sin(pi*xj[j][0])*std::sin(pi*xj[j][0]) - std::cos(xj[j][0]*pi)*std::cos(pi*xj[j][0])) - pi*0.5*std::sin(pi*xj[j][0])*std::cos(pi*xj[j][0]))*(std::exp(-2.*0.2)-1.) + 2. <<'\n' ; // cas k non constant
+       
      }
      }
 
diff --git a/src/scheme/FiniteVolumesDiffusion.hpp b/src/scheme/FiniteVolumesDiffusion.hpp
index 9a1f422b8..275214ac9 100644
--- a/src/scheme/FiniteVolumesDiffusion.hpp
+++ b/src/scheme/FiniteVolumesDiffusion.hpp
@@ -157,11 +157,11 @@ private:
 	m_Gl(l) = (1./sum2)*Fl(l)*sum;
       });
 
-     // Conditions aux bords
-      m_Gl(0) = Fl(0)*uL(0);
-      m_Gl(m_mesh.numberOfFaces()-1) = Fl(m_mesh.numberOfFaces()-1)*uR(0);
-
-      return m_Gl ;
+    // Conditions aux bords
+    m_Gl(0) = Fl(0)*uL(0);
+    m_Gl(m_mesh.numberOfFaces()-1) = Fl(m_mesh.numberOfFaces()-1)*uR(0);
+    
+    return m_Gl ;
 
   }
 
@@ -364,7 +364,7 @@ public:
     double exact_E = 0.;
     for (size_t j=0; j<m_mesh.numberOfCells(); ++j) {
       //exact_E = (-(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.;
-      exact_E = (0.5*pi*pi*xj[j][0]*(std::sin(pi*xj[j][0])*std::sin(pi*xj[j][0]) - std::cos(pi*xj[j][0])*std::cos(pi*xj[j][0])) - cos(xj[j][0])*sin(xj[j][0])*pi*0.5)*(std::exp(-2.*0.2) - 1.) + 2;
+      exact_E =  ((xj[j][0]*pi*pi*0.5)*(std::sin(pi*xj[j][0])*std::sin(pi*xj[j][0]) - std::cos(xj[j][0]*pi)*std::cos(pi*xj[j][0])) - pi*0.5*std::sin(pi*xj[j][0])*std::cos(pi*xj[j][0]))*(std::exp(-2.*0.2)-1.) + 2.;
       err_E += (exact_E - Ej[j])*(exact_E - Ej[j])*Vj(j);
     }
     err_E = std::sqrt(err_E);
@@ -406,6 +406,8 @@ public:
 
     const Kokkos::View<const double*> Vj = m_mesh_data.Vj();
 
+    const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
+
     double sum = 0.;
 
     for (size_t j=0; j<m_mesh.numberOfCells(); ++j) {
@@ -413,7 +415,7 @@ public:
     }
 
     return sum;
-
+   
   }
       
   
diff --git a/src/scheme/FiniteVolumesEulerUnknowns.hpp b/src/scheme/FiniteVolumesEulerUnknowns.hpp
index 71700408b..06610a3f2 100644
--- a/src/scheme/FiniteVolumesEulerUnknowns.hpp
+++ b/src/scheme/FiniteVolumesEulerUnknowns.hpp
@@ -288,8 +288,8 @@ void initializeSod()
     
     m_uL[0] = zero;
     m_uR[0] = zero;
-    m_kL[0] = 2.;
-    m_kR[0] = 2.;
+    m_kL[0] = 0.;
+    m_kR[0] = 1.;
 
   }
 
-- 
GitLab