diff --git a/dune/gfe/localgeodesicfefunction.hh b/dune/gfe/localgeodesicfefunction.hh index d47d8ab5f1afd11b25df07da10235d32eee353c8..fd6b27653c748b0692c00b46ac19cfdc6f77aa98 100644 --- a/dune/gfe/localgeodesicfefunction.hh +++ b/dune/gfe/localgeodesicfefunction.hh @@ -598,21 +598,12 @@ public: Dune::FieldMatrix<ctype, embeddedDim, dim> result(0); // get translation part - for (int i=0; i<translationCoefficients_.size(); i++) { - - // get derivative of shape function - Dune::FieldVector<ctype,dim> sfDer; - if (i==0) - sfDer = -1; - else - for (int j=0; j<dim; j++) - sfDer[j] = (i-1)==j; - - for (int j=0; j<3; j++) - result[j].axpy(translationCoefficients_[i][j], sfDer); - - } + std::vector<Dune::FieldMatrix<ctype,1,dim> > sfDer(translationCoefficients_.size()); + localFiniteElement_.localBasis().evaluateJacobian(local, sfDer); + for (int i=0; i<translationCoefficients_.size(); i++) + for (int j=0; j<3; j++) + result[j].axpy(translationCoefficients_[i][j], sfDer[i][0]); // get orientation part Dune::FieldMatrix<ctype,4,dim> qResult = orientationFEFunction_->evaluateDerivative(local);