diff --git a/Solver/dgConservationLawPerfectGas.cpp b/Solver/dgConservationLawPerfectGas.cpp
index cf95a2987f08ddb736cea089ac220232ec0e866a..11ac62e37e33a8be5c9a2710e3be6a435e2242bb 100644
--- a/Solver/dgConservationLawPerfectGas.cpp
+++ b/Solver/dgConservationLawPerfectGas.cpp
@@ -443,26 +443,29 @@ public:
 
 class dgPerfectGasLaw2d::clipToPhysics : public dataCacheDouble {
   dataCacheDouble /
+  double _presMin, _rhoMin;
 public:
-  clipToPhysics(dataCacheMap &cacheMap):
+  clipToPhysics(dataCacheMap &cacheMap, double presMin, double rhoMin):
     sol(cacheMap.get("Solution",this))
-  {};
+  {
+    _presMin=presMin;
+    _rhoMin=rhoMin;
+    _value=fullMatrix<double>(cacheMap.getNbEvaluationPoints(),4);
+  };
   void _eval () { 
-    double rhomin = 1.e-3;
-    double presmin= 1.e-3;
     const int nQP = sol().size1();      
     for (size_t k = 0 ; k < nQP; k++ ){
       _value(k,0) = sol(k,0);
       _value(k,1) = sol(k,1);
       _value(k,2) = sol(k,1);
       _value(k,3) = sol(k,3);
-      if (sol(k,0) < rhomin)  
-	_value(k,0) = rhomin;
+      if (sol(k,0) < _rhoMin)  
+	_value(k,0) = _rhoMin;
       double rhoV2 = sol(k,1)*sol(k,1)+sol(k,2)*sol(k,2);
       rhoV2 /= sol(k,0);
       const double p = (GAMMA-1)*(sol(k,3) - 0.5*rhoV2);
-      if (p < presmin) 
-	_value(k,3) = presmin / (GAMMA-1) +  0.5 *rhoV2 ; 
+      if (p < _presMin) 
+	_value(k,3) = _presMin / (GAMMA-1) +  0.5 *rhoV2 ; 
      }
   }
 };
@@ -634,7 +637,7 @@ dataCacheDouble *dgPerfectGasLaw2d::newSourceTerm (dataCacheMap &cacheMap) const
     return new source(cacheMap,_sourceFunctionName);    
 }
 dataCacheDouble *dgPerfectGasLaw2d::newClipToPhysics( dataCacheMap &cacheMap) const {
-  return new clipToPhysics(cacheMap);
+  return new clipToPhysics(cacheMap,1e-3,1e-3);
 }
 
 dgPerfectGasLaw2d::dgPerfectGasLaw2d() 
diff --git a/Solver/dgSlopeLimiter.cpp b/Solver/dgSlopeLimiter.cpp
index d8a205f18a2651b3b0df5a0c3f8a2cc82cd17692..2f475d9743953be93f38ff20b3196e0544f9556a 100644
--- a/Solver/dgSlopeLimiter.cpp
+++ b/Solver/dgSlopeLimiter.cpp
@@ -92,26 +92,25 @@ bool dgSlopeLimiter::apply ( dgDofContainer &solution,
 
     }
   }  
-
+/*
   //  --- CLIPPING: check unphysical values
- //  fullMatrix<double> solutionQP (group->getNbIntegrationPoints(),group->getNbElements() * nbFields);
-//   group->getCollocationMatrix().mult(solleft, solutionQP);
-//   //dataCacheDouble &solutionQPe = cacheMap.provideData("Solution");
-//   //solutionQPe.set(fullMatrix<double>(group.getNbIntegrationPoints(),nbFields));
-//   //dataCacheElement &cacheElement = cacheMap.getElement();
-//   dataCacheMap cacheMap(group->getNbIntegrationPoints());
-//   dataCacheDouble *clipping = _claw->newClipToPhysics(cacheMap);
-//   fullMatrix<double> clippedSol;
-//    for (int iElement=0 ; iElement<group->getNbElements() ;++iElement) {
-//      clippedSol.setAsProxy(solutionQP, iElement*nbFields, nbFields );
-//      for (int iPt =0; iPt< group->getNbIntegrationPoints(); iPt++) {
-//        for (int k=0;k<nbFields;k++)
-// 	 clippedSol(iPt,k) =  (*clipping)(iPt,k);
-//      }
-//      //cacheElement.set(group.getElement(iElement));
-//    }
-//    solleft.gemm(group->getRedistributionMatrix(),solutionQP);
+  dataCacheMap cacheMap(group->getNbNodes());
+  dgGroupOfElements* group = eGroups[0];   
+  fullMatrix<double> &solGroup = solution.getGroupProxy(0);
+  dataCacheDouble &solutionE = cacheMap.provideData("Solution");
+  solutionE.set(fullMatrix<double>(group.getNbNodes(),nbFields));
+  dataCacheElement &cacheElement = cacheMap.getElement();
+  dataCacheDouble *solutionEClipped = _claw->newClipToPhysics(cacheMap);
+  for (int iElement=0 ; iElement<group->getNbElements() ;++iElement) {
+    cacheElement.set(group.getElement(iElement));
+    solutionE.setAsProxy(solGroup,iElement*nbFields,nbFields);
+    for (int iPt =0; iPt< group->getNbNodes(); iPt++) {
+      solutionE.set((*solutionEclipped)());
+    }
+  }
+  delete solutionEClipped;
 
+*/
   //#if 0
 //   double rhomin = 1.e-3;
 //   double presmin= 1.e-3;