20 #ifndef _CONTOUR_LINK_H_
21 #define _CONTOUR_LINK_H_
23 #include "mbsim/links/link.h"
25 #include "mbsim/utils/boost_parameters.h"
26 #include "mbsim/utils/openmbv_utils.h"
56 virtual void updateh(
int i=0);
57 virtual void updateW(
int i=0);
58 virtual void updatedhdz();
66 std::string
getType()
const {
return "Link"; }
75 virtual void updatedhdqRef(
const fmatvec::Mat& ref,
int i=0);
77 virtual void updatedhdtRef(
const fmatvec::Vec& ref,
int i=0);
82 contour[0] = contour0;
83 contour[1] = contour1;
86 Contour* getContour(
int i) {
return contour[i]; }
87 ContourFrame* getContourFrame(
int i) {
return cFrame[i]; }
90 virtual void updatePositions() { }
91 virtual void updateVelocities() { }
92 virtual void updateForceDirections();
95 const fmatvec::Vec3& evalGlobalRelativePosition() {
if(updPos) updatePositions();
return WrP0P1; }
96 const fmatvec::Vec3& evalGlobalRelativeVelocity() {
if(updVel) updateVelocities();
return WvP0P1; }
97 const fmatvec::Vec3& evalGlobalRelativeAngularVelocity() {
if(updVel) updateVelocities();
return WomP0P1; }
98 const fmatvec::Mat3xV& evalGlobalForceDirection() {
if(updFD) updateForceDirections();
return DF; }
99 const fmatvec::Mat3xV& evalGlobalMomentDirection() {
if(updFD) updateForceDirections();
return DM; }
100 const fmatvec::Vec3& evalForce() {
if(updF) updateForce();
return F; }
101 const fmatvec::Vec3& evalMoment() {
if(updM) updateMoment();
return M; }
103 virtual void initializeUsingXML(xercesc::DOMElement *element);
105 void setOpenMBVForce(
const std::shared_ptr<OpenMBV::Arrow> &arrow) { openMBVArrowF = arrow; }
106 void setOpenMBVMoment(
const std::shared_ptr<OpenMBV::Arrow> &arrow) { openMBVArrowM = arrow; }
114 fmatvec::Mat3xV DF, DM;
118 fmatvec::Mat3xV RF, RM;
123 fmatvec::RangeV
iF, iM;
125 std::vector<Contour*> contour;
127 std::vector<ContourFrame*> cFrame;
129 std::shared_ptr<OpenMBV::Group> openMBVForceGrp;
130 std::shared_ptr<OpenMBV::Arrow> openMBVArrowF;
131 std::shared_ptr<OpenMBV::Arrow> openMBVArrowM;
133 bool updPos, updVel, updFD, updF, updM, updR;
136 std::string saved_ref1, saved_ref2;
general link to one or more objects
Definition: link.h:46
~ContourLink()
destructor
Definition: contour_link.cc:39
fmatvec::RangeV iF
indices of forces and torques
Definition: contour_link.h:123
virtual void updatehRef(const fmatvec::Vec &hRef, int i=0)
references to complete and link smooth force vector of dynamic system parent
Definition: contour_link.cc:104
std::string getType() const
Definition: contour_link.h:66
basic class for contour definition for rigid (which do not know about their shape) and flexible (they...
Definition: contour.h:40
virtual void updateWRef(const fmatvec::Mat &ref, int i=0)
references to contact force direction matrix of dynamic system parent
Definition: contour_link.cc:88
ContourLink(const std::string &name)
constructor
Definition: contour_link.cc:36
InitStage
The stages of the initialization.
Definition: element.h:97
contour link
Definition: contour_link.h:42
virtual void closePlot()
closes plot file
Definition: contour_link.cc:82
std::string name
name of element
Definition: element.h:298
virtual void init(InitStage stage)
plots time series header
Definition: contour_link.cc:170
virtual void updateVRef(const fmatvec::Mat &ref, int i=0)
references to condensed contact force direction matrix of dynamic system parent
Definition: contour_link.cc:96
fmatvec::Vec3 WrP0P1
difference vector of position, velocity and angular velocity
Definition: contour_link.h:112
virtual void updaterRef(const fmatvec::Vec &ref, int i=0)
references to nonsmooth force vector of dynamic system parent
Definition: contour_link.cc:126
virtual void plot()
plots time dependent data
Definition: contour_link.cc:48