diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index 3eaf62deba8cd03868de19621b1eb0b020d9790f..36ac7118450e2caff0f6fe525265fccc09080b12 100644 --- a/AMDiS/src/DOFVector.cc +++ b/AMDiS/src/DOFVector.cc @@ -96,8 +96,8 @@ namespace AMDiS { if (inside) { basFcts->getLocalIndices(elInfo->getElement(), feSpace->getAdmin(), localIndices); - ElementVector uh(lambda.size()); - for (int i = 0; i < lambda.size(); i++) + ElementVector uh(nBasFcts); + for (int i = 0; i < nBasFcts; i++) uh[i] = operator[](localIndices[i]); value = basFcts->evalUh(lambda, uh); } else @@ -145,8 +145,8 @@ namespace AMDiS { if (inside) { basFcts->getLocalIndices(elInfo->getElement(), feSpace->getAdmin(), localIndices); - mtl::dense_vector<WorldVector<double> > uh(lambda.size()); - for (int i = 0; i < lambda.size(); i++) + mtl::dense_vector<WorldVector<double> > uh(nBasFcts); + for (int i = 0; i < nBasFcts; i++) uh[i] = operator[](localIndices[i]); *val = basFcts->evalUh(lambda, uh); } else diff --git a/AMDiS/src/DOFVector.hh b/AMDiS/src/DOFVector.hh index ffb06041eb8c87c832b8fba3bd40ac229627ca28..15085ee91fc07fb259592f391ae590b0784ecf09 100644 --- a/AMDiS/src/DOFVector.hh +++ b/AMDiS/src/DOFVector.hh @@ -980,16 +980,20 @@ namespace AMDiS { return false; basFcts->getLocalIndices(elInfo->getElement(), this->feSpace->getAdmin(), localIndices); - FixVec<WorldVector<double>, VERTEX> coords = elInfo->getCoords(); + + WorldVector<double> coord; int minIdx = -1; double minDist = 1.e15; - for (int i = 0; i < coords.size(); i++) { - WorldVector<double> dist = coords[i] - p; + for (int i = 0; i < numBasFcts; i++) { + elInfo->coordToWorld(*(basFcts->getCoords(i)), coord); + WorldVector<double> dist = coord - p; double newDist = norm(dist); if (newDist < minDist) { minIdx = i; minDist = newDist; + if (minDist < 1.e-10) + break; } }