mbsim  4.0.0
MBSim Kernel
MBSim::Link Class Referenceabstract

general link to one or more objects More...

#include <link.h>

Inheritance diagram for MBSim::Link:
[legend]

Public Member Functions

 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...
 
- 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 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)
 
DynamicSystemSolvergetDynamicSystemSolver ()
 
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::GroupBasegetPlotGroup ()
 
virtual H5::GroupBasegetFramesPlotGroup ()
 
virtual H5::GroupBasegetContoursPlotGroup ()
 
virtual H5::GroupBasegetGroupsPlotGroup ()
 
virtual H5::GroupBasegetObjectsPlotGroup ()
 
virtual H5::GroupBasegetLinksPlotGroup ()
 
virtual H5::GroupBasegetConstraintsPlotGroup ()
 
virtual H5::GroupBasegetObserversPlotGroup ()
 
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 ElementgetChildByContainerAndName (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::GroupgetOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetFramesOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetContoursOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetGroupsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetObjectsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetLinksOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetConstraintsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetObserversOpenMBVGrp ()
 
virtual ElementgetParent ()
 
virtual const ElementgetParent () 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::DOMEvalExceptiongetDOMEvalError () const
 

Protected Attributes

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
Elementparent { 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.
 
DynamicSystemSolverds { 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::GroupBaseplotGroup { 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

- 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)
 

Detailed Description

general link to one or more objects

Author
Martin Foerg
Date
2009-03-26 some comments (Thorsten Schindler)
2009-04-06 ExtraDynamicInterface included / MechanicalLink added (Thorsten Schindler)
2009-07-16 splitted link / object right hand side (Thorsten Schindler)
2009-07-27 enhanced structure for implicit integration (Thorsten Schindler)
2009-07-28 splitted interfaces (Thorsten Schindler)
2009-12-14 revised inverse kinetics (Martin Foerg)
2010-07-06 added LinkStatus and LinearImpactEstimation for timestepper ssc (Robert Huber)
2012-05-08 added LinkStatusReg for AutoTimeSteppingSSCIntegrator (Jan Clauberg)
2014-09-16 contact forces are calculated on acceleration level (Thorsten Schindler)

Constructor & Destructor Documentation

◆ Link()

MBSim::Link::Link ( const std::string &  name)

constructor

Parameters
nameof link

Member Function Documentation

◆ aboutToUpdateInternalState()

virtual void MBSim::Link::aboutToUpdateInternalState ( )
inlinevirtual

This function is called just before the internal state vector gets updated. This means that the internal state is still at its old value when this function is called but get updated immediately afterwards. You can use this function to do actions which should only be done at valid integrator states (but not at integrates states which may be rejected later on).

◆ calcbSize()

virtual void MBSim::Link::calcbSize ( )
inlinevirtual

calculates size of rfactors

Reimplemented in MBSim::InverseKineticsJoint.

◆ calcgdSize()

virtual void MBSim::Link::calcgdSize ( int  j)
inlinevirtual

calculates size of gap velocities

Parameters
flagto decide which contacts are included in the calculation

see SingleContact for the implementation and DynamicSystem for explanation

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::FloatingFrameLink, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::GeneralizedKinematicExcitation, MBSim::InitialCondition, MBSim::Joint, MBSim::MaxwellContact, MBSim::RigidBodyLink, and MBSim::SingleContact.

◆ calcgSize()

◆ calclaSize()

◆ calcLinkStatusRegSize()

virtual void MBSim::Link::calcLinkStatusRegSize ( )
inlinevirtual

calculates size of vector LinkStatusReg

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ calcLinkStatusSize()

virtual void MBSim::Link::calcLinkStatusSize ( )
inlinevirtual

calculates size of vector LinkStatus

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ calcrFactorSize()

virtual void MBSim::Link::calcrFactorSize ( int  j)
inlinevirtual

◆ calcsvSize()

virtual void MBSim::Link::calcsvSize ( )
inlinevirtual

calculates size of stopvector (root function for event driven integration)

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ checkActive()

virtual void MBSim::Link::checkActive ( int  j)
inlinevirtual

check if set-valued contacts are active and set corresponding attributes

Parameters
flagto decide which criteria are used to define 'activity'

see SingleContact for the implementation and DynamicSystem for explanation

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ checkConstraintsForTermination()

virtual void MBSim::Link::checkConstraintsForTermination ( )
inlinevirtual

verify underlying force laws concerning given tolerances

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ checkImpactsForTermination()

virtual void MBSim::Link::checkImpactsForTermination ( )
inlinevirtual

verify underlying force laws on velocity level concerning given tolerances

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ createPlotGroup()

void MBSim::Link::createPlotGroup ( )
overridevirtual

creates the plotGroup for H5-output

Reimplemented from MBSim::Element.

◆ detectImpact()

virtual bool MBSim::Link::detectImpact ( )
inlinevirtual
Returns
has an impact occured?

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ gActiveChanged()

◆ init()

void MBSim::Link::init ( InitStage  stage,
const InitConfigSet &  config 
)
overridevirtual

plots time series header

Parameters
invocingparent class

Reimplemented from MBSim::Element.

Reimplemented in MBSim::SpringDamper, MBSim::MaxwellContact, MBSim::MechanicalLink, MBSim::RigidBodyLink, MBSim::SingleContact, and MBSim::TyreContact.

◆ isActive()

◆ isSetValued()

virtual bool MBSim::Link::isSetValued ( ) const
inlinevirtual

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 in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedConnection, MBSim::GeneralizedFriction, MBSim::GeneralizedGear, MBSim::GeneralizedKinematicExcitation, MBSim::InitialCondition, MBSim::Joint, MBSim::InverseKineticsJoint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ isSingleValued()

◆ jacobianConstraints()

virtual void MBSim::Link::jacobianConstraints ( )
inlinevirtual

computes JACOBIAN and mass action matrix of nonlinear contact equations

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ jacobianImpacts()

virtual void MBSim::Link::jacobianImpacts ( )
inlinevirtual

computes JACOBIAN and mass action matrix of nonlinear contact equations on velocity level

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ LinearImpactEstimation()

virtual void MBSim::Link::LinearImpactEstimation ( double  t,
fmatvec::Vec &  gInActive_,
fmatvec::Vec &  gdInActive_,
int *  IndInActive_,
fmatvec::Vec &  gAct_,
int *  IndActive_ 
)
inlinevirtual

get gap distance and calculate gap velocity of unilateral links to estimate impacts within the next step

Parameters
gInActivegap distance of inactive links (return)
gdInActivegap velocities of inactive links (return)
IndInActiveindex for gInActive/gdInActive; incremented with size after storage (return and input)
gActgap distance of active links (return)
IndActiveindex for gActive; incremented with size after storage (return and input)

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ plot()

void MBSim::Link::plot ( )
overridevirtual

plots time dependent data

Parameters
simulationtime
simulationtime step size for derivative calculation

Reimplemented from MBSim::Element.

Reimplemented in MBSim::SpringDamper, MBSim::MaxwellContact, MBSim::MechanicalLink, and MBSim::TyreContact.

◆ resetUpToDate()

void MBSim::Link::resetUpToDate ( )
inlineoverridevirtual

Reimplemented from MBSim::Element.

◆ SizeLinearImpactEstimation()

virtual void MBSim::Link::SizeLinearImpactEstimation ( int *  sizeInActive_,
int *  sizeActive_ 
)
inlinevirtual

calculates the number of active and inactive unilateral constraints and increments sizeActive/sizeInActive

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveConstraintsFixpointSingle()

virtual void MBSim::Link::solveConstraintsFixpointSingle ( )
inlinevirtual

solve contact equations of motion with single step fixed point scheme

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveConstraintsGaussSeidel()

virtual void MBSim::Link::solveConstraintsGaussSeidel ( )
inlinevirtual

solve contact equations of motion with Gauss-Seidel scheme

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveConstraintsRootFinding()

virtual void MBSim::Link::solveConstraintsRootFinding ( )
inlinevirtual

solve contact equations of motion with Newton scheme

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveImpactsFixpointSingle()

virtual void MBSim::Link::solveImpactsFixpointSingle ( )
inlinevirtual

solve impact equations of motion with single step fixed point scheme on velocity level

Parameters
timestep-size

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::GeneralizedClutch, MBSim::GeneralizedFriction, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveImpactsGaussSeidel()

virtual void MBSim::Link::solveImpactsGaussSeidel ( )
inlinevirtual

solve impact equations of motion with Gauss-Seidel scheme on velocity level

Parameters
timestep-size

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ solveImpactsRootFinding()

virtual void MBSim::Link::solveImpactsRootFinding ( )
inlinevirtual

solve impact equations of motion with Newton scheme on velocity level

Parameters
timestep-size

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::Joint, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ updategdRef()

void MBSim::Link::updategdRef ( fmatvec::Vec &  ref)
virtual

references to contact relative velocities of dynamic system parent

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ updategRef()

void MBSim::Link::updategRef ( fmatvec::Vec &  ref)
virtual

references to contact relative distances of dynamic system parent

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updatehRef()

virtual void MBSim::Link::updatehRef ( fmatvec::Vec &  hRef,
int  i = 0 
)
pure virtual

references to complete and link smooth force vector of dynamic system parent

Implemented in MBSim::TestElement, MBSim::InitialCondition, MBSim::RigidBodyLink, MBSim::ContourLink, MBSim::FrameLink, MBSim::Contact, and MBSim::MaxwellContact.

◆ updateInternalStateRef()

void MBSim::Link::updateInternalStateRef ( fmatvec::Vec &  cur,
fmatvec::Vec &  next 
)
virtual

references to internal state of dynamic system parent

Reimplemented in MBSim::Contact.

◆ updatejsvRef()

void MBSim::Link::updatejsvRef ( fmatvec::VecInt &  jsvParent)
virtual

references to stopvector evaluation of dynamic system parent (root detection with corresponding bool array by event driven integrator)

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updatelaRef()

void MBSim::Link::updatelaRef ( fmatvec::Vec &  ref)
virtual

references to contact force parameter of dynamic system parent

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ updateLaRef()

void MBSim::Link::updateLaRef ( fmatvec::Vec &  ref)
virtual

references to contact force parameter of dynamic system parent

Reimplemented in MBSim::Contact, MBSim::DiskContact, MBSim::MaxwellContact, and MBSim::SingleContact.

◆ updateLinkStatusRef()

void MBSim::Link::updateLinkStatusRef ( fmatvec::VecInt &  LinkStatusParent)
virtual

reference to vector of link status (for set valued links with piecewise link equations)

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updateLinkStatusRegRef()

void MBSim::Link::updateLinkStatusRegRef ( fmatvec::VecInt &  LinkStatusRegParent)
virtual

reference to vector of link status (for single-valued links)

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updateresRef()

void MBSim::Link::updateresRef ( fmatvec::Vec &  ref)
virtual

references to residuum of nonlinear contact equations of dynamic system parent

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updaterFactorRef()

void MBSim::Link::updaterFactorRef ( fmatvec::Vec &  ref)
virtual

references to rfactors of dynamic system parent

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updaterFactors()

virtual void MBSim::Link::updaterFactors ( )
inlinevirtual

◆ updaterRef()

virtual void MBSim::Link::updaterRef ( fmatvec::Vec &  ref,
int  i = 0 
)
pure virtual

references to nonsmooth force vector of dynamic system parent

Implemented in MBSim::TestElement, MBSim::InitialCondition, MBSim::RigidBodyLink, MBSim::Contact, MBSim::MaxwellContact, MBSim::ContourLink, and MBSim::FrameLink.

◆ updatesvRef()

void MBSim::Link::updatesvRef ( fmatvec::Vec &  sv)
virtual

references to stopvector of dynamic system parent (root function for event driven integration)

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updateVRef()

virtual void MBSim::Link::updateVRef ( fmatvec::Mat &  ref,
int  i = 0 
)
pure virtual

references to condensed contact force direction matrix of dynamic system parent

Implemented in MBSim::TestElement, MBSim::ContourLink, MBSim::FrameLink, MBSim::Contact, MBSim::MaxwellContact, MBSim::InitialCondition, and MBSim::RigidBodyLink.

◆ updatewbRef()

void MBSim::Link::updatewbRef ( fmatvec::Vec &  ref)
virtual

references to TODO of dynamic system parent

Reimplemented in MBSim::Contact, and MBSim::MaxwellContact.

◆ updateWRef()

virtual void MBSim::Link::updateWRef ( fmatvec::Mat &  ref,
int  i = 0 
)
pure virtual

Member Data Documentation

◆ LinkStatus

fmatvec::VecInt MBSim::Link::LinkStatus
protected

status of link (default 0) describing which piece of the equation is valid (e.g. stick or slip)

for set valued links with piecewise link equation (e.g. unilateral contacts or coulomb friction)

◆ LinkStatusReg

fmatvec::VecInt MBSim::Link::LinkStatusReg
protected

status of link

for single valued links

◆ res

fmatvec::Vec MBSim::Link::res
protected

residuum of nonlinear contact equations


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