diff --git a/src/localgeodesicfefunction.hh b/src/localgeodesicfefunction.hh index f465e3fa8ac41790666b8026fb7924eacf613386..1fe579953530f697d2ca28b7be0901492ca6a8eb 100644 --- a/src/localgeodesicfefunction.hh +++ b/src/localgeodesicfefunction.hh @@ -39,8 +39,8 @@ public: private: - static Dune::FieldVector<ctype,dim+1> barycentricCoordinates(const Dune::FieldVector<ctype,dim>& local) { - Dune::FieldVector<ctype,dim+1> result; + static std::vector<ctype> barycentricCoordinates(const Dune::FieldVector<ctype,dim>& local) { + std::vector<ctype> result(dim+1); result[0] = 1; for (int i=0; i<dim; i++) { result[0] -= local[i]; @@ -59,15 +59,9 @@ TargetSpace LocalGeodesicFEFunction<dim,ctype,TargetSpace>:: evaluate(const Dune::FieldVector<ctype, dim>& local) { // First compute the coordinates on the standard simplex (in R^{n+1}) - std::vector<ctype> barycentricCoordinates(dim+1); + std::vector<ctype> w = barycentricCoordinates(local); - barycentricCoordinates[0] = 1; - for (int i=0; i<dim; i++) { - barycentricCoordinates[0] -= local[i]; - barycentricCoordinates[i+1] = local[i]; - } - - AverageDistanceAssembler<TargetSpace> assembler(coefficients_, barycentricCoordinates); + AverageDistanceAssembler<TargetSpace> assembler(coefficients_, w); TargetSpaceRiemannianTRSolver<TargetSpace> solver; @@ -129,7 +123,7 @@ evaluateDerivative(const Dune::FieldVector<ctype, dim>& local) Dune::FMatrixHelp::multMatrix(dFdw,B, RHS); // the actual system matrix - Dune::FieldVector<ctype,dim+1> w = barycentricCoordinates(local); + std::vector<ctype> w = barycentricCoordinates(local); AverageDistanceAssembler<TargetSpace> assembler(coefficients_, w); Dune::FieldMatrix<ctype,dim+1,dim+1> dFdq(0);