@@ -532,41 +532,29 @@ class SchemeBase : public Scheme
532532 if ((bodies[i]->type != Body::FREE) &&
533533 (bodies[i]->type != Body::CPLDPIN))
534534 continue ;
535- auto [pos, vel] = bodies[i]->initialize ();
536- auto r = AS_STATE (_r[0 ])->get (bodies[i]);
537- r.row (0 ).head (7 ) = pos.toVec7 ();
538- r.row (0 ).tail (6 ) = vel;
535+ bodies[i]->initialize (AS_STATE (_r[0 ])->get (bodies[i]));
536+ for (unsigned int j = 0 ; j < NDERIV; j++)
537+ AS_STATE (_rd[j])->get (bodies[i]).setZero ();
539538 }
540539
541540 for (unsigned int i = 0 ; i < rods.size (); i++) {
542541 if ((rods[i]->type != Rod::FREE) && (rods[i]->type != Rod::PINNED))
543542 continue ;
544- auto [pos, vel] = rods[i]->initialize ();
545- auto r = AS_STATE (_r[0 ])->get (rods[i]);
546- r.row (0 ).head (7 ) = pos.toVec7 ();
547- r.row (0 ).tail (6 ) = vel;
543+ rods[i]->initialize (AS_STATE (_r[0 ])->get (rods[i]));
548544 for (unsigned int j = 0 ; j < NDERIV; j++)
549545 AS_STATE (_rd[j])->get (rods[i]).setZero ();
550546 }
551547
552548 for (unsigned int i = 0 ; i < points.size (); i++) {
553549 if (points[i]->type != Point::FREE)
554550 continue ;
555- auto [pos, vel] = points[i]->initialize ();
556- auto r = AS_STATE (_r[0 ])->get (points[i]);
557- r.row (0 ).head (3 ) = pos;
558- r.row (0 ).tail (3 ) = vel;
551+ points[i]->initialize (AS_STATE (_r[0 ])->get (points[i]));
559552 for (unsigned int j = 0 ; j < NDERIV; j++)
560553 AS_STATE (_rd[j])->get (points[i]).setZero ();
561554 }
562555
563556 for (unsigned int i = 0 ; i < lines.size (); i++) {
564- auto [pos, vel] = lines[i]->initialize ();
565- auto r = AS_STATE (_r[0 ])->get (lines[i]);
566- for (unsigned int j = 0 ; j < pos.size (); j++) {
567- r.row (j).head (3 ) = pos[j];
568- r.row (j).segment (3 , 3 ) = vel[j];
569- }
557+ lines[i]->initialize (AS_STATE (_r[0 ])->get (lines[i]));
570558 for (unsigned int j = 0 ; j < NDERIV; j++)
571559 AS_STATE (_rd[j])->get (lines[i]).setZero ();
572560 }
0 commit comments