diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index ab89835fc07bb09193c3c67459e373cd91269a8f..5a0924847c8501afaf65db16e5cb15cbe57ff23e 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;