diff --git a/dune/gfe/rodfactory.hh b/dune/gfe/rodfactory.hh index fa8f755f25c778f250e332e8df3dcb2edf101af7..efb95762312dc1f5b0e488ffa3fa1966baa655a5 100644 --- a/dune/gfe/rodfactory.hh +++ b/dune/gfe/rodfactory.hh @@ -80,16 +80,6 @@ template <int dim> max = std::max(max, vIt->geometry().corner(0)[0]); } - //////////////////////////////////////////////////////////////////////////////////// - // Make a 1d geodesic finite element function, which will do the interpolation - //////////////////////////////////////////////////////////////////////////////////// - - std::vector<RigidBodyMotion<3> > coefficients(2); - coefficients[0] = beginning; - coefficients[1] = end; - - LocalGeodesicFEFunction<1,double,RigidBodyMotion<3> > localGFEFunction(coefficients); - //////////////////////////////////////////////////////////////////////////////////// // Interpolate according to arc-length //////////////////////////////////////////////////////////////////////////////////// @@ -99,7 +89,10 @@ template <int dim> for (vIt = gridView_.template begin<dim>(); vIt != vEndIt; ++vIt) { int idx = gridView_.indexSet().index(*vIt); Dune::FieldVector<double,1> local = (vIt->geometry().corner(0)[0] - min) / (max - min); - rod[idx] = localGFEFunction.evaluate(local); + + for (int i=0; i<3; i++) + rod[idx].r[i] = (1-local)*beginning.r[i] + local*end.r[i]; + rod[idx].q = Rotation<3,double>::interpolate(beginning.q, end.q, local); } }