20 #ifndef _KINETICEXCITATION_H_
21 #define _KINETICEXCITATION_H_
23 #include <mbsim/link_mechanics.h>
24 #include <mbsim/frame.h>
25 #include <mbsim/functions/function.h>
27 #ifdef HAVE_OPENMBVCPPINTERFACE
28 #include "mbsim/utils/boost_parameters.h"
29 #include "mbsim/utils/openmbv_utils.h"
54 virtual void updateh(
double t,
int i=0);
55 virtual void updateg(
double) {}
56 virtual void updategd(
double) {}
71 virtual void plot(
double t,
double dt = 1);
106 #ifdef HAVE_OPENMBVCPPINTERFACE
108 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBVForce, tag, (optional (scaleLength,(
double),1)(scaleSize,(
double),1)(referencePoint,(OpenMBV::Arrow::ReferencePoint),OpenMBV::Arrow::toPoint)(diffuseColor,(
const fmatvec::Vec3&),
"[-1;1;1]")(transparency,(
double),0))) {
109 OpenMBVArrow ombv(diffuseColor,transparency,OpenMBV::Arrow::toHead,referencePoint,scaleLength,scaleSize);
110 std::vector<bool> which; which.resize(2,
false);
112 LinkMechanics::setOpenMBVForceArrow(ombv.createOpenMBV(), which);
116 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBVMoment, tag, (optional (scaleLength,(
double),1)(scaleSize,(
double),1)(referencePoint,(OpenMBV::Arrow::ReferencePoint),OpenMBV::Arrow::toPoint)(diffuseColor,(
const fmatvec::Vec3&),
"[-1;1;1]")(transparency,(
double),0))) {
117 OpenMBVArrow ombv(diffuseColor,transparency,OpenMBV::Arrow::toDoubleHead,referencePoint,scaleLength,scaleSize);
118 std::vector<bool> which; which.resize(2,
false);
120 LinkMechanics::setOpenMBVMomentArrow(ombv.createOpenMBV(), which);
124 void initializeUsingXML(xercesc::DOMElement *element);
125 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *element);
127 virtual std::string
getType()
const {
return "KineticExcitation"; }
144 Function<fmatvec::VecV(double)> *
F, *M;
152 std::string saved_ref, saved_ref1, saved_ref2;
void setMomentDirection(const fmatvec::Mat3xV &md)
Definition: kinetic_excitation.cc:142
virtual void connect(Frame *frame_)
Definition: link_mechanics.cc:226
Frame C
own frame located in second partner with same orientation as first partner
Definition: kinetic_excitation.h:149
void connect(MBSim::Frame *frame1, MBSim::Frame *frame2)
Definition: kinetic_excitation.cc:83
void setForceDirection(const fmatvec::Mat3xV &fd)
Definition: kinetic_excitation.cc:134
kinetic excitations given by time dependent functions
Definition: kinetic_excitation.h:40
KineticExcitation(const std::string &name="")
constructor
Definition: kinetic_excitation.cc:36
virtual ~KineticExcitation()
destructor
Definition: kinetic_excitation.cc:38
void setMomentFunction(Function< fmatvec::VecV(double)> *func)
see setForce
Definition: kinetic_excitation.cc:156
void setForceFunction(Function< fmatvec::VecV(double)> *func)
Set the force excitation. forceDir*func(t) is the applied force vector in space. This force vector is...
Definition: kinetic_excitation.cc:150
bool gActiveChanged()
Definition: kinetic_excitation.h:67
InitStage
The stages of the initialization.
Definition: element.h:97
bool isSingleValued() const
asks the link if it contains single valued force laws that contribute to the right-hand side vector h...
Definition: kinetic_excitation.h:66
std::string name
name of element
Definition: element.h:290
virtual void plot(double t, double dt=1)
plots time dependent data
Definition: kinetic_excitation.cc:118
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_mechanics.h:48
void setFrameOfReferenceID(int ID)
The frame of reference ID for the force/moment direction vectors. If ID=0 the first frame...
Definition: kinetic_excitation.h:96
Function< fmatvec::VecV(double)> * F
portions of the force / moment in the specific directions
Definition: kinetic_excitation.h:144
virtual std::string getType() const
Definition: kinetic_excitation.h:127
fmatvec::Mat3xV forceDir
directions of force and moment in frame of reference
Definition: kinetic_excitation.h:139
Frame * refFrame
frame of reference the force is defined in
Definition: kinetic_excitation.h:133
bool isActive() const
Definition: kinetic_excitation.h:65
void calclaSize(int j)
calculates size of contact force parameters
Definition: kinetic_excitation.cc:113
virtual void init(InitStage stage)
plots time series header
Definition: kinetic_excitation.cc:43