From 09c650f93729684fbe6ea27c9b05dcbe1219cd24 Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Mon, 7 May 2012 15:04:07 +0000 Subject: [PATCH] error in evalAtPoint corrected --- AMDiS/src/DOFVector.cc | 8 ++++---- AMDiS/src/DOFVector.hh | 10 +++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index 3eaf62de..36ac7118 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 ffb06041..15085ee9 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; } } -- GitLab