20#ifndef _RIGID_BODY_LINK_H_
21#define _RIGID_BODY_LINK_H_
23#include "mbsim/links/mechanical_link.h"
24#include "mbsim/frames/floating_relative_frame.h"
32 std::vector<RigidBody*> body;
33 std::vector<double> ratio;
34 std::vector<FloatingRelativeFrame> C;
38 std::vector<fmatvec::Mat3xV> DF, DM;
44 void calcSize()
override;
49 void updateh(
int i=0)
override;
50 void updateW(
int i=0)
override;
51 void updateg()
override;
52 void updategd()
override;
53 void updatePositions(
Frame *frame)
override;
54 void updateGeneralizedPositions()
override;
55 void updateGeneralizedVelocities()
override;
56 void updateForce()
override;
57 void updateMoment()
override;
58 void updateForceDirections()
override;
59 void updateR()
override;
60 void updatewb()
override;
62 const fmatvec::Mat3xV& evalGlobalForceDirection(
int i) {
if(updFD) updateForceDirections();
return DF[i]; }
63 const fmatvec::Mat3xV& evalGlobalMomentDirection(
int i) {
if(updFD) updateForceDirections();
return DM[i]; }
65 fmatvec::Mat3xV& getGlobalForceDirection(
int i,
bool check=
true) { assert((not check) or (not updFD));
return DF[i]; }
66 fmatvec::Mat3xV& getGlobalMomentDirection(
int i,
bool check=
true) { assert((not check) or (not updFD));
return DM[i]; }
68 void updatehRef(fmatvec::Vec &hParent,
int j=0)
override;
69 void updaterRef(fmatvec::Vec &hParent,
int j=0)
override {}
70 void updateWRef(fmatvec::Mat &WParent,
int j=0)
override;
71 void updateVRef(fmatvec::Mat &WParent,
int j=0)
override;
73 void init(
InitStage stage,
const InitConfigSet &config)
override;
75 void initializeUsingXML(xercesc::DOMElement * element)
override;
77 void resetUpToDate()
override;
79 virtual void setSupportFrame(
Frame *frame) { support = frame; }
82 std::string saved_supportFrame;
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
int gSize
size and local index of relative distances
Definition: link.h:535
int laSize
size and local index of contact force parameters
Definition: link.h:545
int gdSize
size and local index of relative velocities
Definition: link.h:540
mechanical link
Definition: mechanical_link.h:33
Definition: rigid_body_link.h:30
void updateVRef(fmatvec::Mat &WParent, int j=0) override
references to condensed contact force direction matrix of dynamic system parent
Definition: rigid_body_link.cc:54
void updaterRef(fmatvec::Vec &hParent, int j=0) override
references to nonsmooth force vector of dynamic system parent
Definition: rigid_body_link.h:69
void updatehRef(fmatvec::Vec &hParent, int j=0) override
references to complete and link smooth force vector of dynamic system parent
Definition: rigid_body_link.cc:35
void updateWRef(fmatvec::Mat &WParent, int j=0) override
references to contact force direction matrix of dynamic system parent
Definition: rigid_body_link.cc:44
void calcgdSize(int j) override
calculates size of gap velocities
Definition: rigid_body_link.h:47
void calcgSize(int j) override
calculates size of relative distances
Definition: rigid_body_link.h:46
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: rigid_body_link.cc:166
void calclaSize(int j) override
calculates size of contact force parameters
Definition: rigid_body_link.h:45
namespace MBSim
Definition: bilateral_constraint.cc:30