20#ifndef _MECHANICAL_LINK_H_
21#define _MECHANICAL_LINK_H_
23#include "mbsim/links/link.h"
27 extern const PlotFeatureEnum force, moment;
41 void resetUpToDate()
override;
43 virtual void updatePositions() { }
44 virtual void updateVelocities() { }
45 void updateGeneralizedForces()
override;
46 virtual void updateForce() { }
47 virtual void updateMoment() { }
48 virtual void updateForceDirections() { }
49 virtual void updatelaF() { }
50 virtual void updatelaM() { }
51 virtual void updateR() { }
53 const fmatvec::Vec3& evalForce(
int i=1) {
if(updF) updateForce();
return F[i]; }
54 const fmatvec::Vec3& evalMoment(
int i=1) {
if(updM) updateMoment();
return M[i]; }
55 const fmatvec::Mat3xV& evalRF(
int i=1) {
if(updRMV) updateR();
return RF[i]; }
56 const fmatvec::Mat3xV& evalRM(
int i=1) {
if(updRMV) updateR();
return RM[i]; }
57 const fmatvec::VecV& evallaF() {
if(updlaF) updatelaF();
return lambdaF; }
58 const fmatvec::VecV& evallaM() {
if(updlaM) updatelaM();
return lambdaM; }
60 fmatvec::Vec3& getForce(
int i=1,
bool check=
true) { assert((not check) or (not updF));
return F[i]; }
61 fmatvec::Vec3& getMoment(
int i=1,
bool check=
true) { assert((not check) or (not updM));
return M[i]; }
63 Frame* getPointOfApplication(
int i) {
return P[i]; }
65 int getNumberOfForces() {
return F.size(); }
67 void init(
InitStage stage,
const InitConfigSet &config)
override;
71 std::vector<Frame*> P;
73 std::vector<fmatvec::Mat3xV> RF, RM;
75 fmatvec::VecV lambdaF, lambdaM;
77 std::vector<fmatvec::Vec3> F, M;
82 fmatvec::RangeV
iF, iM;
84 bool updF, updM, updRMV, updlaF, updlaM;
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
general link to one or more objects
Definition: link.h:48
mechanical link
Definition: mechanical_link.h:33
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: mechanical_link.cc:69
fmatvec::RangeV iF
indices of forces and torques
Definition: mechanical_link.h:82
void plot() override
plots time dependent data
Definition: mechanical_link.cc:55
MechanicalLink(const std::string &name)
constructor
Definition: mechanical_link.cc:37
namespace MBSim
Definition: bilateral_constraint.cc:30