From 08a27a7ca1f211651cc291838a49959f70ef79d1 Mon Sep 17 00:00:00 2001
From: Thomas Witkowski <thomas.witkowski@gmx.de>
Date: Wed, 26 May 2010 13:16:28 +0000
Subject: [PATCH] Bugfix for integration of DOFVectors with dual mesh.

---
 AMDiS/src/DOFVector.cc | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc
index ab89835f..5a092484 100644
--- a/AMDiS/src/DOFVector.cc
+++ b/AMDiS/src/DOFVector.cc
@@ -758,6 +758,9 @@ namespace AMDiS {
     TEST_EXIT_DBG(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts())
       ("invalid basis functions");
 
+    if (smallElInfo->getMesh() == feSpace->getMesh())
+      return getVecAtQPs(smallElInfo, quad, quadFast, vecAtQPs);
+
     const BasisFunction *basFcts = feSpace->getBasisFcts();
     int nPoints = 
       quadFast ? quadFast->getQuadrature()->getNumPoints() : quad->getNumPoints(); 
@@ -943,11 +946,11 @@ namespace AMDiS {
       double det = dualElInfo.smallElInfo->getDet();
       double tmp = 0.0;      
       vec1.getVecAtQPs(dualElInfo.smallElInfo, dualElInfo.largeElInfo,
-		       quad, fastQuad, &(qp1[0]));
+		       quad, NULL, &(qp1[0]));
       vec2.getVecAtQPs(dualElInfo.smallElInfo, dualElInfo.largeElInfo,
-		       quad, fastQuad, &(qp2[0]));      
-      for (int iq = 0; iq < fastQuad->getNumPoints(); iq++)
- 	tmp += fastQuad->getWeight(iq) * (*fct)(qp1[iq], qp2[iq]);
+		       quad, NULL, &(qp2[0]));      
+      for (int iq = 0; iq < quad->getNumPoints(); iq++)
+ 	tmp += quad->getWeight(iq) * (*fct)(qp1[iq], qp2[iq]);
       
       value += tmp * det;
       
-- 
GitLab