From 7b16aec23adeac43fe914dbabfcb86eed16882e6 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Wed, 22 Apr 2009 08:40:57 +0000 Subject: [PATCH] simpler evaluate of the function value. Now only works with in the triangle, because there are some singularities lurking outside [[Imported from SVN: r4076]] --- src/localgeodesicfefunction.hh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/localgeodesicfefunction.hh b/src/localgeodesicfefunction.hh index 25e27848..ad69cbe0 100644 --- a/src/localgeodesicfefunction.hh +++ b/src/localgeodesicfefunction.hh @@ -195,13 +195,17 @@ evaluate(const Dune::FieldVector<ctype, dim>& local) for (int i=0; i<dim; i++) extraCoord -= local[i]; - ctype normalizingFactor = extraCoord+local[0]; + ctype normalizingFactor = extraCoord; - TargetSpace result = TargetSpace::interpolate(coefficients_[0], coefficients_[1], local[0]/normalizingFactor); + TargetSpace result = coefficients_[0]; - for (int i=1; i<dim; i++) { + for (int i=0; i<dim; i++) { + assert(local[i]>=0); normalizingFactor += local[i]; - result = TargetSpace::interpolate(result, coefficients_[i+1], local[i] / normalizingFactor); + result = TargetSpace::interpolate(result, coefficients_[i+1], + (std::abs(normalizingFactor) > 1e-10) + ? local[i] / normalizingFactor + : 0); } return result; -- GitLab