From 9d05cafc4a2ba5dc87020e6554c959622b623f36 Mon Sep 17 00:00:00 2001
From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be>
Date: Thu, 10 Dec 2009 15:35:01 +0000
Subject: [PATCH] dg: correct Outside Boundary Condition

---
 Solver/TESTCASES/square.geo  | 4 ++--
 Solver/dgConservationLaw.cpp | 9 +++------
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/Solver/TESTCASES/square.geo b/Solver/TESTCASES/square.geo
index a214e082b0..59bee852b8 100644
--- a/Solver/TESTCASES/square.geo
+++ b/Solver/TESTCASES/square.geo
@@ -10,5 +10,5 @@ Line Loop(5) = {2, 3, 4, 1};
 Plane Surface(6) = {5};
 Physical Line("Border") = {1, 2, 3, 4};
 Physical Surface("Inside") = {6};
-Transfinite Line {1, 2, 4, 3} = 2 Using Progression 1;
-Transfinite Surface {6};
+//Transfinite Line {1, 2, 4, 3} = 2 Using Progression 1;
+//Transfinite Surface {6};
diff --git a/Solver/dgConservationLaw.cpp b/Solver/dgConservationLaw.cpp
index b977bc6007..d0fd5b45e0 100644
--- a/Solver/dgConservationLaw.cpp
+++ b/Solver/dgConservationLaw.cpp
@@ -4,28 +4,25 @@ class dgBoundaryConditionOutsideValue : public dgBoundaryCondition {
   dgConservationLaw &_claw;
   std::string _outsideValueFunctionName;
   class term : public dataCacheDouble {
+    dataCacheMap cacheMapRight; // new cacheMap to  pass to the Riemann solver
     dataCacheDouble &solutionRight;
     dataCacheDouble &solutionLeft;
     dataCacheDouble &outsideValue;
-    dataCacheMap cacheMapRight; // new cacheMap to  pass to the Riemann solver
     dataCacheDouble *riemannSolver;
     dgConservationLaw &_claw;
     public:
     term(dgConservationLaw &claw, dataCacheMap &cacheMapLeft,const std::string outsideValueFunctionName):
+      dataCacheDouble(cacheMapLeft.getNbEvaluationPoints(),claw.nbFields()),
+      cacheMapRight(cacheMapLeft.getNbEvaluationPoints()),
       solutionRight(cacheMapRight.provideData("Solution")),
       solutionLeft(cacheMapLeft.get("Solution",this)),
       outsideValue(cacheMapLeft.get(outsideValueFunctionName,this)),
-      cacheMapRight(cacheMapLeft.getNbEvaluationPoints()),
       _claw(claw)
     {
       riemannSolver=_claw.newRiemannSolver(cacheMapLeft,cacheMapRight);
     }
 
     void _eval() {
-      if(_value.size1()!=solutionLeft().size1()){
-        //adjust sizes
-        _value = fullMatrix<double>(solutionLeft().size1(),_claw.nbFields());
-      }
       solutionRight.set(outsideValue());
       if(riemannSolver){
         for(int i=0;i<_value.size1(); i++)
-- 
GitLab