diff --git a/dirneucoupling.cc b/dirneucoupling.cc index e4eb0ce21fe2f2ee78476be1b6c8f8ecb21d4796..bc535e9128cf6da4cf1ecb0ca1cc187cc2551d0e 100644 --- a/dirneucoupling.cc +++ b/dirneucoupling.cc @@ -153,7 +153,8 @@ int main (int argc, char *argv[]) try // Initial solution // ////////////////////////// - RodFactory<RodGridType::LeafGridView>::makeStraightRod(rodX, complex.rodGrids_["rod"]->size(1), rodRestEndPoint[0], rodRestEndPoint[1]); + RodFactory<RodGridType::LeafGridView> rodFactory(complex.rodGrids_["rod"]->leafView()); + rodFactory.create(rodX, rodRestEndPoint[0], rodRestEndPoint[1]); // ///////////////////////////////////////// // Read Dirichlet values diff --git a/dune/gfe/rodfactory.hh b/dune/gfe/rodfactory.hh index bfec883640f08bd0b168ab1aa54aa51bf3a4e7de..8f450ad671a5431b2327c2c0a8213a8325aa6741 100644 --- a/dune/gfe/rodfactory.hh +++ b/dune/gfe/rodfactory.hh @@ -28,7 +28,7 @@ public: \param[in] n The number of vertices */ template <int dim> - static void makeStraightRod(std::vector<RigidBodyMotion<dim> >& rod, int n, + void create(std::vector<RigidBodyMotion<dim> >& rod, const Dune::FieldVector<double,3>& beginning, const Dune::FieldVector<double,3>& end) { // Compute the correct orientation @@ -48,16 +48,8 @@ template <int dim> if (angle != 0) orientation = Rotation<3,double>(axis, angle); - // Set the values - rod.resize(n); - for (int i=0; i<n; i++) { - - rod[i].r = beginning; - rod[i].r.axpy(double(i) / (n-1), end-beginning); - rod[i].q = orientation; - - } - + // Set the values + create(rod, RigidBodyMotion<dim>(beginning,orientation), RigidBodyMotion<dim>(end,orientation)); }