diff --git a/src/localgeodesicfefunction.hh b/src/localgeodesicfefunction.hh index 25e278482d128e7138185705bfe0304864e65768..ad69cbe0c04bb3a7855d4bf745e7619407441781 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;