mbsim
4.0.0
MBSim Kernel
|
mechanical link More...
#include <mechanical_link.h>
Public Member Functions | |
MechanicalLink (const std::string &name) | |
constructor More... | |
void | resetUpToDate () override |
virtual void | updatePositions () |
virtual void | updateVelocities () |
void | updateGeneralizedForces () override |
virtual void | updateForce () |
virtual void | updateMoment () |
virtual void | updateForceDirections () |
virtual void | updatelaF () |
virtual void | updatelaM () |
virtual void | updateR () |
const fmatvec::Vec3 & | evalForce (int i=1) |
const fmatvec::Vec3 & | evalMoment (int i=1) |
const fmatvec::Mat3xV & | evalRF (int i=1) |
const fmatvec::Mat3xV & | evalRM (int i=1) |
const fmatvec::VecV & | evallaF () |
const fmatvec::VecV & | evallaM () |
fmatvec::Vec3 & | getForce (int i=1, bool check=true) |
fmatvec::Vec3 & | getMoment (int i=1, bool check=true) |
Frame * | getPointOfApplication (int i) |
int | getNumberOfForces () |
void | init (InitStage stage, const InitConfigSet &config) override |
plots time series header More... | |
void | plot () override |
plots time dependent data More... | |
![]() | |
Link (const std::string &name) | |
constructor More... | |
virtual void | calcSize () |
int | getGeneralizedRelativePositionSize () |
int | getGeneralizedRelativeVelocitySize () |
int | getGeneralizedForceSize () |
virtual void | updateg () |
virtual void | updategd () |
virtual void | updatewb () |
virtual void | updateW (int i=0) |
virtual void | updateV (int i=0) |
virtual void | updater (int i=0) |
virtual void | updateJrla (int i=0) |
virtual void | updateh (int i=0) |
virtual void | updateStopVector () |
virtual void | updateStopVectorParameters () |
virtual void | updateLinkStatus () |
virtual void | updateLinkStatusReg () |
virtual void | updateJacobians (int j=0) |
virtual void | updateb () |
virtual void | updatedx () |
virtual void | updatexd () |
virtual void | calcxSize () |
const fmatvec::Vec & | getx () const |
fmatvec::Vec & | getx () |
const fmatvec::Vec & | getxd (bool check=true) const |
fmatvec::Vec & | getxd (bool check=true) |
int | getxInd () |
virtual void | setxInd (int xInd_) |
int | getxSize () const |
virtual void | updatexRef (fmatvec::Vec &ref) |
virtual void | updatexdRef (fmatvec::Vec &ref) |
virtual void | updatedxRef (fmatvec::Vec &ref) |
virtual void | updatebRef (fmatvec::Mat &hRef) |
void | init (InitStage stage, const InitConfigSet &config) override |
plots time series header More... | |
virtual void | initz () |
virtual void | writez (H5::GroupBase *group) |
virtual void | readz0 (H5::GroupBase *group) |
virtual void | setbInd (int bInd_) |
void | plot () override |
plots time dependent data More... | |
virtual void | updateWRef (fmatvec::Mat &ref, int i=0)=0 |
references to contact force direction matrix of dynamic system parent More... | |
virtual void | updateVRef (fmatvec::Mat &ref, int i=0)=0 |
references to condensed contact force direction matrix of dynamic system parent More... | |
virtual void | updatehRef (fmatvec::Vec &hRef, int i=0)=0 |
references to complete and link smooth force vector of dynamic system parent More... | |
virtual void | updaterRef (fmatvec::Vec &ref, int i=0)=0 |
references to nonsmooth force vector of dynamic system parent More... | |
virtual void | updateJrlaRef (fmatvec::Mat &ref, int i=0) |
virtual void | updatewbRef (fmatvec::Vec &ref) |
references to TODO of dynamic system parent More... | |
virtual void | updatelaRef (fmatvec::Vec &ref) |
references to contact force parameter of dynamic system parent More... | |
virtual void | updateLaRef (fmatvec::Vec &ref) |
references to contact force parameter of dynamic system parent More... | |
virtual void | deletelaRef () |
delete reference to contact force parameter of dynamic system parent | |
virtual void | updateInternalStateRef (fmatvec::Vec &cur, fmatvec::Vec &next) |
references to internal state of dynamic system parent More... | |
virtual void | updategRef (fmatvec::Vec &ref) |
references to contact relative distances of dynamic system parent More... | |
virtual void | updategdRef (fmatvec::Vec &ref) |
references to contact relative velocities of dynamic system parent More... | |
virtual void | updateresRef (fmatvec::Vec &ref) |
references to residuum of nonlinear contact equations of dynamic system parent More... | |
virtual void | updaterFactorRef (fmatvec::Vec &ref) |
references to rfactors of dynamic system parent More... | |
virtual void | updatesvRef (fmatvec::Vec &sv) |
references to stopvector of dynamic system parent (root function for event driven integration) More... | |
virtual void | updatejsvRef (fmatvec::VecInt &jsvParent) |
references to stopvector evaluation of dynamic system parent (root detection with corresponding bool array by event driven integrator) More... | |
virtual void | updateLinkStatusRef (fmatvec::VecInt &LinkStatusParent) |
reference to vector of link status (for set valued links with piecewise link equations) More... | |
virtual void | updateLinkStatusRegRef (fmatvec::VecInt &LinkStatusRegParent) |
reference to vector of link status (for single-valued links) More... | |
virtual void | calclaSize (int j) |
calculates size of contact force parameters More... | |
int | getisInd () |
int | getisSize () |
virtual void | calcisSize () |
virtual void | aboutToUpdateInternalState () |
virtual void | postprocessing () |
virtual void | calcgSize (int j) |
calculates size of relative distances More... | |
virtual void | calcgdSize (int j) |
calculates size of gap velocities More... | |
virtual void | calcrFactorSize (int j) |
calculates size of rfactors More... | |
virtual void | calcbSize () |
calculates size of rfactors More... | |
virtual void | calcsvSize () |
calculates size of stopvector (root function for event driven integration) More... | |
virtual void | calcLinkStatusSize () |
calculates size of vector LinkStatus More... | |
virtual void | calcLinkStatusRegSize () |
calculates size of vector LinkStatusReg More... | |
virtual bool | isSetValued () const |
asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore set valued More... | |
virtual bool | isSingleValued () const |
asks the link if it contains single valued force laws that contribute to the right-hand side vector h More... | |
virtual bool | isActive () const =0 |
virtual bool | gActiveChanged ()=0 |
virtual bool | detectImpact () |
virtual void | solveImpactsFixpointSingle () |
virtual void | solveConstraintsFixpointSingle () |
virtual void | solveImpactsGaussSeidel () |
virtual void | solveConstraintsGaussSeidel () |
virtual void | solveImpactsRootFinding () |
virtual void | solveConstraintsRootFinding () |
virtual void | jacobianConstraints () |
computes JACOBIAN and mass action matrix of nonlinear contact equations More... | |
virtual void | jacobianImpacts () |
computes JACOBIAN and mass action matrix of nonlinear contact equations on velocity level More... | |
virtual void | updaterFactors () |
update relaxation factors for contact equations More... | |
virtual void | checkImpactsForTermination () |
verify underlying force laws on velocity level concerning given tolerances More... | |
virtual void | checkConstraintsForTermination () |
verify underlying force laws concerning given tolerances More... | |
virtual void | checkActive (int j) |
check if set-valued contacts are active and set corresponding attributes More... | |
virtual void | setGeneralizedForceTolerance (double tol) |
virtual void | setGeneralizedImpulseTolerance (double tol) |
virtual void | setGeneralizedRelativePositionTolerance (double tol) |
virtual void | setGeneralizedRelativeVelocityTolerance (double tol) |
virtual void | setGeneralizedRelativeAccelerationTolerance (double tol) |
virtual void | setGeneralizedRelativePositionCorrectionValue (double corr) |
virtual void | setGeneralizedRelativeVelocityCorrectionValue (double corr) |
virtual void | setrMax (double rMax_) |
virtual void | setLinkStatusInd (int LinkStatusInd_) |
virtual void | setLinkStatusRegInd (int LinkStatusRegInd_) |
virtual void | setlaInd (int laInd_) |
virtual void | setisInd (int isInd_) |
virtual void | setgInd (int gInd_) |
virtual void | setgdInd (int gdInd_) |
virtual void | setrFactorInd (int rFactorInd_) |
virtual void | LinearImpactEstimation (double t, fmatvec::Vec &gInActive_, fmatvec::Vec &gdInActive_, int *IndInActive_, fmatvec::Vec &gAct_, int *IndActive_) |
get gap distance and calculate gap velocity of unilateral links to estimate impacts within the next step More... | |
virtual void | SizeLinearImpactEstimation (int *sizeInActive_, int *sizeActive_) |
calculates the number of active and inactive unilateral constraints and increments sizeActive/sizeInActive More... | |
virtual void | updatecorr (int j) |
virtual void | updatecorrRef (fmatvec::Vec &ref) |
virtual void | calccorrSize (int j) |
virtual void | setcorrInd (int corrInd_) |
virtual void | checkRoot () |
void | setx (const fmatvec::Vec &x_) |
virtual void | setsvInd (int svInd_) |
int | getsvSize () const |
int | getLinkStatusSize () const |
int | getLinkStatusRegSize () const |
const fmatvec::Vec & | getla (bool check=true) const |
const fmatvec::Vec & | getLa (bool check=true) const |
fmatvec::Vec & | getla (bool check=true) |
fmatvec::Vec & | getLa (bool check=true) |
fmatvec::Vec & | getwb (bool check=true) |
int | getlaInd () const |
int | getlaSize () const |
int | getbSize () const |
const fmatvec::Vec & | evalg () |
const fmatvec::Vec & | evalgd () |
const fmatvec::Vec & | evalla () |
const fmatvec::Vec & | evalLa () |
const fmatvec::Vec & | evalwb () |
const fmatvec::Vec & | evalxd () |
int | getgdInd () const |
int | getgSize () const |
int | getgdSize () const |
int | getrFactorSize () const |
const fmatvec::VecInt & | getrFactorUnsure () const |
void | resetUpToDate () override |
virtual void | updateGeneralizedPositions () |
virtual void | updateGeneralizedVelocities () |
virtual void | updateGeneralizedForces () |
const fmatvec::VecV & | evalGeneralizedRelativePosition () |
const fmatvec::VecV & | evalGeneralizedRelativeVelocity () |
const fmatvec::VecV & | evalGeneralizedForce () |
fmatvec::VecV & | getGeneralizedRelativePosition (bool check=true) |
fmatvec::VecV & | getGeneralizedRelativeVelocity (bool check=true) |
fmatvec::VecV & | getGeneralizedForce (bool check=true) |
void | savela () |
saves contact forces for use as starting value in next time step | |
void | saveLa () |
saves contact impulses for use as starting value in next time step | |
void | initla () |
load contact forces for use as starting value | |
void | initLa () |
load contact impulses for use as starting value | |
void | decreaserFactors () |
decrease rfactor if mass action matrix is not diagonal dominant (cf. Foerg: Dissertation, page 80 et seq.) | |
int | getcorrSize () const |
bool | getUpdaterrel () const |
void | createPlotGroup () override |
creates the plotGroup for H5-output More... | |
![]() | |
Element (const std::string &name) | |
constructor | |
~Element () override=default | |
destructor | |
void | throwError (const std::string &msg) const |
virtual void | setDynamicSystemSolver (DynamicSystemSolver *sys) |
sets the used dynamics system solver to the element More... | |
virtual void | plot () |
plots time dependent data More... | |
virtual void | plotAtSpecialEvent () |
plots time dependent data at special events More... | |
const std::string & | getName () const |
void | setName (const std::string &str) |
void | setPath (const std::string &str) |
DynamicSystemSolver * | getDynamicSystemSolver () |
virtual void | init (InitStage stage, const InitConfigSet &config=InitConfigSet()) |
plots time series header More... | |
virtual void | createPlotGroup () |
creates the plotGroup for H5-output More... | |
H5::GroupBase * | getPlotGroup () |
virtual H5::GroupBase * | getFramesPlotGroup () |
virtual H5::GroupBase * | getContoursPlotGroup () |
virtual H5::GroupBase * | getGroupsPlotGroup () |
virtual H5::GroupBase * | getObjectsPlotGroup () |
virtual H5::GroupBase * | getLinksPlotGroup () |
virtual H5::GroupBase * | getConstraintsPlotGroup () |
virtual H5::GroupBase * | getObserversPlotGroup () |
bool | getPlotFeature (const PlotFeatureEnum &pf) |
virtual void | setPlotFeature (const PlotFeatureEnum &pf, bool value) |
Set a plot feature. More... | |
void | setPlotFeatureForChildren (const PlotFeatureEnum &pf, bool value) |
Set a plot feature for the children of this object. More... | |
void | setPlotFeatureRecursive (const PlotFeatureEnum &pf, bool value) |
Set a plot feature for this object and the children of this object. More... | |
template<class T > | |
void | setPlotAttribute (const std::string &name, const T &value) |
Set a plot attribute: static data attached as key/value pairs to the plot datasets/groups. | |
void | setPlotAttribute (const std::string &name) |
virtual void | initializeUsingXML (xercesc::DOMElement *element) |
template<class T > | |
T * | getByPath (const std::string &path, bool initialCaller=true) const |
Get the object of type T represented by the path path. Do not set any argurment other than path! | |
std::string | getPath (const Element *relTo=nullptr, std::string sep="/") const |
Return the path of this object. If relativeTo is not NULL return a relative path to relativeTo. Do not set any argurment other than relTo and sep! | |
virtual Element * | getChildByContainerAndName (const std::string &container, const std::string &name) const |
Get the Element named name in the container named container. More... | |
virtual std::shared_ptr< OpenMBV::Group > | getOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getFramesOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getContoursOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getGroupsOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getObjectsOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getLinksOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getConstraintsOpenMBVGrp () |
virtual std::shared_ptr< OpenMBV::Group > | getObserversOpenMBVGrp () |
virtual Element * | getParent () |
virtual const Element * | getParent () const |
virtual void | setParent (Element *parent_) |
std::vector< Element * > | getDependencies () const |
checks dependency on other elements. More... | |
void | addDependency (Element *ele) |
int | computeLevel () |
computes the length of the pathes in the graph that represents the dependencies between all elements. More... | |
virtual void | updatePositions (Frame *frame) |
virtual void | updateVelocities (Frame *frame) |
virtual void | updateAccelerations (Frame *frame) |
virtual void | updateJacobians (Frame *frame, int j=0) |
virtual void | updateGyroscopicAccelerations (Frame *frame) |
virtual void | resetUpToDate () |
const double & | getTime () const |
double | getStepSize () const |
const MBXMLUtils::DOMEvalException & | getDOMEvalError () const |
Protected Attributes | |
std::vector< Frame * > | P |
std::vector< fmatvec::Mat3xV > | RF |
std::vector< fmatvec::Mat3xV > | RM |
fmatvec::VecV | lambdaF |
fmatvec::VecV | lambdaM |
std::vector< fmatvec::Vec3 > | F |
std::vector< fmatvec::Vec3 > | M |
fmatvec::RangeV | iF |
indices of forces and torques | |
fmatvec::RangeV | iM |
bool | updF |
bool | updM |
bool | updRMV |
bool | updlaF |
bool | updlaM |
![]() | |
int | ng |
int | ngd |
int | nla |
fmatvec::Vec | x |
order one parameters | |
fmatvec::Vec | xd |
differentiated order one parameters | |
fmatvec::Vec | dx |
fmatvec::Vec | x0 |
order one initial value | |
int | xSize |
size and local index of order one parameters | |
int | xInd |
fmatvec::Vec | sv |
stop vector for event driven integration (root function) | |
fmatvec::VecInt | jsv |
evaluation of roots of stop vector with a boolean vector | |
int | svSize |
size and local index of stop vector | |
int | svInd |
fmatvec::VecInt | LinkStatus |
status of link (default 0) describing which piece of the equation is valid (e.g. stick or slip) More... | |
int | LinkStatusSize |
size and local index of link status vector (set-valued) | |
int | LinkStatusInd |
fmatvec::VecInt | LinkStatusReg |
status of link More... | |
int | LinkStatusRegSize |
size and local index of single-valued link status vector | |
int | LinkStatusRegInd |
fmatvec::Vec | curis |
fmatvec::Vec | nextis |
fmatvec::Vec | g |
relative position, relative velocity, contact force and impact parameters | |
fmatvec::Vec | gd |
fmatvec::Vec | la |
fmatvec::Vec | La |
fmatvec::Vec | laS |
contact forces of smooth contact laws | |
int | isSize |
int | isInd |
int | gSize |
size and local index of relative distances | |
int | gInd |
int | gdSize |
size and local index of relative velocities | |
int | gdInd |
int | laSize |
size and local index of contact force parameters | |
int | laInd |
int | bSize |
size and local index of contact force parameters | |
int | bInd |
fmatvec::RangeV | Ig |
local index of relative distances and contact force parameters | |
fmatvec::RangeV | Ila |
double | gTol |
tolerance for relative position, relative velocity, relative acceleration, force and impact | |
double | gdTol |
double | gddTol |
double | laTol |
double | LaTol |
double | gCorr |
correction factor for relative position and relative velocity | |
double | gdCorr |
fmatvec::Vec | la0 |
attribute to save contact force parameter of previous time step | |
fmatvec::Vec | La0 |
fmatvec::Vec | rFactor |
vector of rfactors for relaxation of contact equations | |
fmatvec::VecInt | rFactorUnsure |
boolean vector defining if rfactor belongs to not diagonal dominant mass action matrix (cf. Foerg Dissertation, page 80 et seq.) | |
int | rFactorSize |
size and local index of rfactors | |
int | rFactorInd |
double | rMax |
maximum r-factor | |
fmatvec::Vec | res |
std::vector< fmatvec::Mat > | W [2] |
force direction matrix for nonsmooth right hand side | |
std::vector< fmatvec::Mat > | V [2] |
reduced force direction matrix for nonsmooth right hand side | |
std::vector< fmatvec::Vec > | h [2] |
smooth complete and link right hand side | |
std::vector< fmatvec::Mat > | dhdq |
smooth Jacobians for implicit integration | |
std::vector< fmatvec::Mat > | dhdu |
std::vector< fmatvec::Vec > | dhdt |
std::vector< fmatvec::Vec > | r [2] |
nonsmooth right hand side | |
std::vector< fmatvec::Mat > | Jrla [2] |
Jacobian dr/dla. | |
fmatvec::Vec | wb |
TODO. | |
fmatvec::Mat | b |
TODO. | |
int | corrSize |
int | corrInd |
fmatvec::Vec | corr |
fmatvec::VecV | rrel |
fmatvec::VecV | vrel |
fmatvec::VecV | lambda |
bool | updSize |
bool | updrrel |
bool | updvrel |
bool | updla |
![]() | |
Element * | parent { nullptr } |
std::string | name |
name of element | |
std::string | path |
The path of this object. Is set during the init stage reorganizeHierarchy. Before this the path is calculated dynamically using getPath() after this stage getPath just returns this value. | |
MBXMLUtils::DOMEvalException | domEvalError |
Special XML helper variable. | |
DynamicSystemSolver * | ds { nullptr } |
dynamic system | |
H5::VectorSerie< double > * | plotVectorSerie { nullptr } |
time series | |
std::vector< double > | plotVector |
one entry of time series | |
std::vector< std::string > | plotColumns |
columns of time series | |
H5::GroupBase * | plotGroup { nullptr } |
associated plot group | |
std::vector< Element * > | dependency |
vector containing all dependencies. | |
PlotFeatureMap | plotFeature |
plot feature | |
PlotFeatureMap | plotFeatureForChildren |
std::map< std::string, std::variant< std::monostate, int, double, std::string, std::vector< int >, std::vector< double >, std::vector< std::vector< double > > > > | plotAttribute |
Additional Inherited Members | |
![]() | |
enum | InitStage { resolveStringRef =0 , preInit , plotting , unknownStage , LASTINITSTAGE } |
The stages of the initialization. More... | |
![]() | |
void | updatePlotFeatures () |
void | addToPlot (const std::string &name) |
void | addToPlot (const std::string &name, int size) |
void | addToPlot (const std::string &name, const std::vector< std::string > &iname) |
template<class AT > | |
void | plot (const AT &x) |
template<class Type , class AT > | |
void | plot (const fmatvec::Vector< Type, AT > &x) |
mechanical link
MBSim::MechanicalLink::MechanicalLink | ( | const std::string & | name | ) |
constructor
name | of link |
|
overridevirtual |
plots time series header
invocing | parent class |
Reimplemented from MBSim::Link.
Reimplemented in MBSim::SpringDamper, MBSim::RigidBodyLink, MBSim::SingleContact, and MBSim::TyreContact.
|
overridevirtual |
plots time dependent data
simulation | time |
simulation | time step size for derivative calculation |
Reimplemented from MBSim::Link.
Reimplemented in MBSim::SpringDamper, and MBSim::TyreContact.
|
overridevirtual |
Reimplemented from MBSim::Link.
|
overridevirtual |
Reimplemented from MBSim::Link.