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