mbsim 4.0.0 MBSim Kernel

Public Member Functions | Protected Attributes | Friends | List of all members
MBSim::GeneralizedGear Class Reference
Inheritance diagram for MBSim::GeneralizedGear:
[legend]

## Public Member Functions

| GeneralizedGear (const std::string &name="")
void | updateGeneralizedForces () override
void | setGearOutput (RigidBody *body_)
void | addGearInput (RigidBody *body_, double ratio_)
bool | isActive () const override
bool | gActiveChanged () override
void | init (InitStage stage, const InitConfigSet &config) override
| plots time series header More...
bool | isSetValued () const override
| asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore set valued More...
bool | isSingleValued () const override
| asks the link if it contains single valued force laws that contribute to the right-hand side vector h More...
void | setGeneralizedForceLaw (GeneralizedForceLaw *fl_)
void | initializeUsingXML (xercesc::DOMElement *element) override
Public Member Functions inherited from MBSim::RigidBodyLink
| RigidBodyLink (const std::string &name="")
void | calcSize () override
void | calclaSize (int j) override
| calculates size of contact force parameters
void | calcgSize (int j) override
| calculates size of relative distances
void | calcgdSize (int j) override
| calculates size of gap velocities More...
void | updateh (int i=0) override
void | updateW (int i=0) override
void | updateg () override
void | updategd () override
void | updatePositions (Frame *frame) override
void | updateGeneralizedPositions () override
void | updateGeneralizedVelocities () override
void | updateForce () override
void | updateMoment () override
void | updateForceDirections () override
void | updateR () override
void | updatewb () override
const fmatvec::Mat3xV & | evalGlobalForceDirection (int i)
const fmatvec::Mat3xV & | evalGlobalMomentDirection (int i)
fmatvec::Mat3xV & | getGlobalForceDirection (int i, bool check=true)
fmatvec::Mat3xV & | getGlobalMomentDirection (int i, bool check=true)
void | updatehRef (fmatvec::Vec &hParent, int j=0) override
| references to complete and link smooth force vector of dynamic system parent
void | updaterRef (fmatvec::Vec &hParent, int j=0) override
| references to nonsmooth force vector of dynamic system parent
void | updateWRef (fmatvec::Mat &WParent, int j=0) override
| references to contact force direction matrix of dynamic system parent
void | updateVRef (fmatvec::Mat &WParent, int j=0) override
| references to condensed contact force direction matrix of dynamic system parent
void | init (InitStage stage, const InitConfigSet &config) override
| plots time series header More...
void | initializeUsingXML (xercesc::DOMElement *element) override
void | resetUpToDate () override
virtual void | setSupportFrame (Frame *frame)
Public Member Functions inherited from MBSim::MechanicalLink
| MechanicalLink (const std::string &name)
| constructor More...
virtual void | updatePositions ()
virtual void | updateVelocities ()
void | updateGeneralizedForces () override
virtual void | updatelaF ()
virtual void | updatelaM ()
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 | plot () override
| plots time dependent data More...
Public Member Functions inherited from MBSim::Link
| Link (const std::string &name)
| constructor More...
int | getGeneralizedRelativePositionSize ()
int | getGeneralizedRelativeVelocitySize ()
int | getGeneralizedForceSize ()
virtual void | updateV (int i=0)
virtual void | updater (int i=0)
virtual void | updateJrla (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)
virtual void | initz ()
virtual void | writez (H5::GroupBase *group)
virtual void | readz0 (H5::GroupBase *group)
virtual void | setbInd (int bInd_)
virtual void | updateJrlaRef (fmatvec::Mat &ref, int i=0)
virtual void | updatewbRef (fmatvec::Vec &ref)
| references to TODO of dynamic system parent
virtual void | updatelaRef (fmatvec::Vec &ref)
| references to contact force parameter of dynamic system parent
virtual void | updateLaRef (fmatvec::Vec &ref)
| references to contact force parameter of dynamic system parent
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
virtual void | updategRef (fmatvec::Vec &ref)
| references to contact relative distances of dynamic system parent
virtual void | updategdRef (fmatvec::Vec &ref)
| references to contact relative velocities of dynamic system parent
virtual void | updateresRef (fmatvec::Vec &ref)
| references to residuum of nonlinear contact equations of dynamic system parent
virtual void | updaterFactorRef (fmatvec::Vec &ref)
| references to rfactors of dynamic system parent
virtual void | updatesvRef (fmatvec::Vec &sv)
| references to stopvector of dynamic system parent (root function for event driven integration)
virtual void | updatejsvRef (fmatvec::VecInt &jsvParent)
| references to stopvector evaluation of dynamic system parent (root detection with corresponding bool array by event driven integrator)
virtual void | updateLinkStatusRef (fmatvec::VecInt &LinkStatusParent)
| reference to vector of link status (for set valued links with piecewise link equations)
virtual void | updateLinkStatusRegRef (fmatvec::VecInt &LinkStatusRegParent)
| reference to vector of link status (for single-valued links)
int | getisInd ()
int | getisSize ()
virtual void | calcisSize ()
virtual void | aboutToUpdateInternalState ()
virtual void | postprocessing ()
virtual void | calcrFactorSize (int j)
| calculates size of rfactors
virtual void | calcbSize ()
| calculates size of rfactors
virtual void | calcsvSize ()
| calculates size of stopvector (root function for event driven integration)
virtual void | calcLinkStatusSize ()
| calculates size of vector LinkStatus
virtual void | calcLinkStatusRegSize ()
| calculates size of vector LinkStatusReg
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
virtual void | jacobianImpacts ()
| computes JACOBIAN and mass action matrix of nonlinear contact equations on velocity level
virtual void | updaterFactors ()
| update relaxation factors for contact equations
virtual void | checkImpactsForTermination ()
| verify underlying force laws on velocity level concerning given tolerances
virtual void | checkConstraintsForTermination ()
| verify underlying force laws concerning given tolerances
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
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
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
Public Member Functions inherited from MBSim::Element
| 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 | 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 ()
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)
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.
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 | updateVelocities (Frame *frame)
virtual void | updateAccelerations (Frame *frame)
virtual void | updateJacobians (Frame *frame, int j=0)
virtual void | updateGyroscopicAccelerations (Frame *frame)
const double & | getTime () const
double | getStepSize () const
const MBXMLUtils::DOMEvalException & | getDOMEvalError () const

## Protected Attributes

GeneralizedForceLaw * | fl {nullptr}
GeneralizedImpactLaw * | il {nullptr}
std::string | saved_gearOutput
std::vector< std::string > | saved_gearInput
Protected Attributes inherited from MBSim::RigidBodyLink
std::vector< RigidBody * > | body
std::vector< double > | ratio
std::vector< FloatingRelativeFrame > | C
bool | updPos {true}
bool | updVel {true}
bool | updFD {true}
std::vector< fmatvec::Mat3xV > | DF
std::vector< fmatvec::Mat3xV > | DM
Frame * | support
Protected Attributes inherited from MBSim::MechanicalLink
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
Protected Attributes inherited from MBSim::Link
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
Protected Attributes inherited from MBSim::Element
Element * | parent
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
| dynamic system
H5::VectorSerie< double > * | plotVectorSerie
| time series
std::vector< double > | plotVector
| one entry of time series
std::vector< std::string > | plotColumns
| columns of time series
H5::GroupBase * | plotGroup
| 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

## Friends

class | GeneralizedGearConstraint

## Additional Inherited Members

Public Types inherited from MBSim::Element
enum | InitStage { resolveStringRef =0, preInit, plotting, unknownStage, LASTINITSTAGE }
| The stages of the initialization. More...
Protected Member Functions inherited from MBSim::Element
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)

## Member Function Documentation

## ◆ gActiveChanged()

bool MBSim::GeneralizedGear::gActiveChanged | ( |  | ) |

inline override virtual

Returns
  has the relative distance vector changed?

Implements MBSim::Link.

## ◆ init()

void MBSim::GeneralizedGear::init | ( | InitStage | stage,
|  | const InitConfigSet & | config
| ) |  |

override virtual

plots time series header

Parameters

  invocing | parent class

Reimplemented from MBSim::Element.

## ◆ isActive()

bool MBSim::GeneralizedGear::isActive | ( |  | ) | const

inline override virtual

Returns
  are link equations active?

Implements MBSim::Link.

## ◆ isSetValued()

bool MBSim::GeneralizedGear::isSetValued | ( |  | ) | const

override virtual

asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore set valued

Returns
  set valued force laws used within the link?

Reimplemented from MBSim::Link.

## ◆ isSingleValued()

bool MBSim::GeneralizedGear::isSingleValued | ( |  | ) | const

inline override virtual

asks the link if it contains single valued force laws that contribute to the right-hand side vector h

Returns
  single valued force laws used within link?

Reimplemented from MBSim::Link.

The documentation for this class was generated from the following files:

- /mbsim-env/mbsim/kernel/mbsim/links/generalized_gear.h
- /mbsim-env/mbsim/kernel/mbsim/links/generalized_gear.cc