general link to one or more objects More...
#include <link.h>
Public Member Functions | |
Link (const std::string &name) | |
constructor More... | |
virtual | ~Link () |
destructor | |
virtual void | updateg (double t)=0 |
virtual void | updategd (double t)=0 |
virtual void | updatewb (double t, int i=0) |
virtual void | updateW (double t, int i=0) |
virtual void | updateV (double t, int i=0) |
virtual void | updateh (double t, int i=0) |
virtual void | updateStopVector (double t) |
virtual void | updateLinkStatus (double t) |
virtual void | updateLinkStatusReg (double t) |
virtual void | updateJacobians (double t, int j=0) |
virtual void | updateb (double t) |
virtual void | updatedx (double t, double dt) |
virtual void | updatexd (double t) |
virtual void | calcxSize () |
virtual const fmatvec::Vec & | getx () const |
virtual fmatvec::Vec & | getx () |
virtual void | setxInd (int xInd_) |
virtual int | getxSize () const |
virtual void | updatexRef (const fmatvec::Vec &ref) |
virtual void | updatexdRef (const fmatvec::Vec &ref) |
virtual void | updatebRef (const fmatvec::Mat &hRef) |
virtual void | init (InitStage stage) |
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_) |
std::string | getType () const |
virtual void | plot (double t, double dt=1) |
plots time dependent data More... | |
virtual void | closePlot () |
closes plot file | |
virtual void | updateWRef (const fmatvec::Mat &ref, int i=0)=0 |
references to contact force direction matrix of dynamic system parent | |
virtual void | updateVRef (const fmatvec::Mat &ref, int i=0)=0 |
references to condensed contact force direction matrix of dynamic system parent | |
virtual void | updatehRef (const fmatvec::Vec &hRef, int i=0)=0 |
references to complete and link smooth force vector of dynamic system parent | |
virtual void | updaterRef (const fmatvec::Vec &ref, int i=0)=0 |
references to nonsmooth force vector of dynamic system parent | |
virtual void | updatewbRef (const fmatvec::Vec &ref) |
references to TODO of dynamic system parent | |
virtual void | updatelaRef (const 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 | updategRef (const fmatvec::Vec &ref) |
references to contact relative distances of dynamic system parent | |
virtual void | updategdRef (const fmatvec::Vec &ref) |
references to contact relative velocities of dynamic system parent | |
virtual void | updateresRef (const fmatvec::Vec &ref) |
references to residuum of nonlinear contact equations of dynamic system parent | |
virtual void | updaterFactorRef (const fmatvec::Vec &ref) |
references to rfactors of dynamic system parent | |
virtual void | updatesvRef (const fmatvec::Vec &sv) |
references to stopvector of dynamic system parent (root function for event driven integration) | |
virtual void | updatejsvRef (const fmatvec::VecInt &jsvParent) |
references to stopvector evaluation of dynamic system parent (root detection with corresponding bool array by event driven integrator) | |
virtual void | updateLinkStatusRef (const fmatvec::VecInt &LinkStatusParent) |
reference to vector of link status (for set valued links with piecewise link equations) | |
virtual void | updateLinkStatusRegRef (const fmatvec::VecInt &LinkStatusRegParent) |
reference to vector of link status (for single-valued links) | |
virtual void | calclaSize (int j) |
calculates size of contact force parameters | |
virtual void | calcgSize (int j) |
calculates size of relative distances | |
virtual void | calcgdSize (int j) |
calculates size of gap velocities More... | |
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 | 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 | hasSmoothPart () const |
virtual bool | isActive () const =0 |
virtual bool | gActiveChanged ()=0 |
virtual bool | detectImpact () |
virtual void | solveImpactsFixpointSingle (double dt) |
virtual void | solveConstraintsFixpointSingle () |
virtual void | solveImpactsGaussSeidel (double dt) |
virtual void | solveConstraintsGaussSeidel () |
virtual void | solveImpactsRootFinding (double dt) |
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 (double dt) |
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 double | computePotentialEnergy () |
compute potential energy | |
virtual void | setlaTol (double tol) |
virtual void | setLaTol (double tol) |
virtual void | setgTol (double tol) |
virtual void | setgdTol (double tol) |
virtual void | setgddTol (double tol) |
virtual void | setrMax (double rMax_) |
virtual void | setLinkStatusInd (int LinkStatusInd_) |
virtual void | setLinkStatusRegInd (int LinkStatusRegInd_) |
virtual void | setlaInd (int laInd_) |
virtual void | setgInd (int gInd_) |
virtual void | setgdInd (int gdInd_) |
virtual void | setrFactorInd (int rFactorInd_) |
virtual void | LinearImpactEstimation (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 (const fmatvec::Vec &ref) |
virtual void | calccorrSize (int j) |
virtual void | setcorrInd (int corrInd_) |
virtual void | checkRoot () |
const std::vector< fmatvec::Mat > & | getW (int i=0) const |
const std::vector< fmatvec::Mat > & | getV (int i=0) const |
const std::vector< fmatvec::Vec > & | geth (int i=0) const |
void | setx (const fmatvec::Vec &x_) |
const fmatvec::Vec & | getxd () const |
virtual void | setsvInd (int svInd_) |
int | getsvSize () const |
int | getLinkStatusSize () const |
int | getLinkStatusRegSize () const |
const fmatvec::Vec & | getla () const |
fmatvec::Vec & | getla () |
int | getlaInd () const |
int | getlaSize () const |
int | getbSize () const |
const fmatvec::Index & | getlaIndex () const |
const fmatvec::Vec & | getg () const |
fmatvec::Vec & | getg () |
const fmatvec::Vec & | getgd () const |
fmatvec::Vec & | getgd () |
const fmatvec::Vec & | getwb () const |
fmatvec::Vec & | getwb () |
int | getgdInd () const |
int | getgSize () const |
int | getgdSize () const |
const fmatvec::Index & | getgIndex () const |
int | getrFactorSize () const |
const fmatvec::VecInt & | getrFactorUnsure () const |
void | savela (double dt=1.0) |
saves contact force parameters for use as starting value in next time step | |
void | initla (double dt=1.0) |
load contact force parameters 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 |
![]() | |
Element (const std::string &name) | |
constructor | |
virtual | ~Element () |
destructor | |
virtual void | initDataInterfaceBase (DynamicSystemSolver *parentds) |
TODO. | |
virtual void | setDynamicSystemSolver (DynamicSystemSolver *sys) |
sets the used dynamics system solver to the element More... | |
virtual void | plotAtSpecialEvent (double t, double dt=1) |
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 | createPlotGroup () |
creates the plotGroup for H5-output | |
H5::GroupBase * | getPlotGroup () |
virtual void | setPlotFeature (PlotFeature pf, PlotFeatureStatus value) |
Set a plot feature. More... | |
void | setPlotFeatureForChildren (PlotFeature pf, PlotFeatureStatus value) |
Set a plot feature for the children of this object. More... | |
void | setPlotFeatureRecursive (PlotFeature pf, PlotFeatureStatus value) |
Set a plot feature for this object and the children of this object. More... | |
PlotFeatureStatus | getPlotFeature (PlotFeature pf) |
PlotFeatureStatus | getPlotFeatureForChildren (PlotFeature pf) |
virtual void | initializeUsingXML (xercesc::DOMElement *element) |
virtual xercesc::DOMElement * | writeXMLFile (xercesc::DOMNode *element) |
const std::vector < MBXMLUtils::EmbedDOMLocator > & | getLocationStack () const |
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=NULL, 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 Element * | getParent () |
virtual const Element * | getParent () const |
virtual void | setParent (Element *parent_) |
std::vector< Element * > | getElementsDependingOn () 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... | |
![]() | |
Atom & | operator= (const Atom &) |
void | setMessageStreamActive (MsgType type, bool active) |
void | getMessageStream (MsgType type, boost::shared_ptr< bool > &a, boost::shared_ptr< std::ostream > &s) |
void | adoptMessageStreams (const Atom *src=NULL) |
std::ostream & | msg (MsgType type) |
bool | msgAct (MsgType type) |
Protected Attributes | |
fmatvec::Vec | x |
order one parameters | |
fmatvec::Vec | xd |
differentiated order one parameters | |
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 | g |
relative distance, relative velocity, contact force parameters | |
fmatvec::Vec | gd |
fmatvec::Vec | la |
fmatvec::Vec | laS |
contact forces of smooth contact laws | |
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::Index | Ig |
local index of relative distances and contact force parameters | |
fmatvec::Index | Ila |
double | gTol |
tolerance for relative velocity, relative acceleration, force and impact | |
double | gdTol |
double | gddTol |
double | laTol |
double | LaTol |
fmatvec::Vec | la0 |
attribute to save contact force parameter of previous time step | |
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 | |
fmatvec::Vec | wb |
TODO. | |
fmatvec::Mat | b |
TODO. | |
int | corrSize |
int | corrInd |
fmatvec::Vec | corr |
![]() | |
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. | |
std::vector < MBXMLUtils::EmbedDOMLocator > | locationStack |
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. | |
Additional Inherited Members | |
![]() | |
enum | PlotFeatureStatus { enabled, disabled, unset } |
Plot feature status. More... | |
enum | PlotFeature { plotRecursive =0, separateFilePerGroup, state, stateDerivative, notMinimalState, rightHandSide, globalPosition, globalVelocity, globalAcceleration, energy, openMBV, generalizedLinkForce, linkKinematics, stopVector, debug, LASTPLOTFEATURE } |
Plot Features. More... | |
enum | InitStage { modelBuildup =0, resolveXMLPath, preInit, resize, relativeFrameContourLocation, worldFrameContourLocation, plotting, reorganizeHierarchy, unknownStage, calculateLocalInitialValues, LASTINITSTAGE } |
The stages of the initialization. More... | |
![]() | |
enum | MsgType |
![]() | |
static double | getDouble (xercesc::DOMElement *e) |
static int | getInt (xercesc::DOMElement *e) |
static bool | getBool (xercesc::DOMElement *e) |
static fmatvec::Vec3 | getVec3 (xercesc::DOMElement *e) |
static fmatvec::Vec | getVec (xercesc::DOMElement *e, int rows=0) |
static fmatvec::Mat3xV | getMat3xV (xercesc::DOMElement *e, int cols=0) |
static fmatvec::Mat | getMat (xercesc::DOMElement *e, int rows=0, int cols=0) |
static fmatvec::SqrMat3 | getSqrMat3 (xercesc::DOMElement *e) |
static fmatvec::SqrMat | getSqrMat (xercesc::DOMElement *e, int size=0) |
static fmatvec::SymMat3 | getSymMat3 (xercesc::DOMElement *e) |
static fmatvec::SymMat | getSymMat (xercesc::DOMElement *e, int size=0) |
![]() | |
static void | setCurrentMessageStream (MsgType type, const boost::shared_ptr< bool > &a=boost::make_shared< bool >(true), const boost::shared_ptr< std::ostream > &s=boost::make_shared< std::ostream >(std::cout.rdbuf())) |
static std::ostream & | msgStatic (MsgType type) |
static bool | msgActStatic (MsgType type) |
![]() | |
void | updatePlotFeatures () |
![]() | |
Atom (const Atom &src) | |
general link to one or more objects
MBSim::Link::Link | ( | const std::string & | name | ) |
constructor
name | of link |
|
inlinevirtual |
calculates size of gap velocities
flag | to decide which contacts are included in the calculation |
see SingleContact for the implementation and DynamicSystem for explanation
Reimplemented in MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::Gear, MBSim::Gearing, and MBSim::KinematicExcitation.
|
inlinevirtual |
check if set-valued contacts are active and set corresponding attributes
flag | to decide which criteria are used to define 'activity' |
see SingleContact for the implementation and DynamicSystem for explanation
Reimplemented in MBSim::Contact, and MBSim::SingleContact.
|
inlinevirtual |
Reimplemented in MBSim::Contact, and MBSim::SingleContact.
|
pure virtual |
Implemented in MBSim::GeneralizedSpringDamper, MBSim::DirectionalSpringDamper, MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::KineticExcitation, MBSim::IsotropicRotationalSpringDamper, MBSim::SpringDamper, MBSim::Gear, MBSim::ExternGeneralizedIO, MBSim::Gearing, MBSim::GeneralizedFriction, and MBSim::KinematicExcitation.
|
inlinevirtual |
Reimplemented from MBSim::Element.
Reimplemented in MBSim::GeneralizedSpringDamper, MBSim::DirectionalSpringDamper, MBSim::SingleContact, MBSim::LinkMechanics, and MBSim::SpringDamper.
|
inlinevirtual |
|
virtual |
plots time series header
invocing | parent class |
Reimplemented from MBSim::Element.
Reimplemented in MBSim::InverseKineticsJoint, MBSim::GeneralizedSpringDamper, MBSim::GeneralizedAccelerationExcitation, MBSim::DirectionalSpringDamper, MBSim::GeneralizedPositionExcitation, MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::LinkMechanics, MBSim::SpringDamper, MBSim::KineticExcitation, MBSim::Gear, MBSim::IsotropicRotationalSpringDamper, MBSim::ExternGeneralizedIO, MBSim::Gearing, MBSim::GeneralizedFriction, and MBSim::KinematicExcitation.
|
pure virtual |
Implemented in MBSim::GeneralizedSpringDamper, MBSim::DirectionalSpringDamper, MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::KineticExcitation, MBSim::IsotropicRotationalSpringDamper, MBSim::SpringDamper, MBSim::Gear, MBSim::ExternGeneralizedIO, MBSim::Gearing, MBSim::GeneralizedFriction, and MBSim::KinematicExcitation.
|
inlinevirtual |
asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore set valued
Reimplemented in MBSim::InverseKineticsJoint, MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::Gear, MBSim::Gearing, and MBSim::KinematicExcitation.
|
inlinevirtual |
asks the link if it contains single valued force laws that contribute to the right-hand side vector h
Reimplemented in MBSim::GeneralizedSpringDamper, MBSim::DirectionalSpringDamper, MBSim::Contact, MBSim::SingleContact, MBSim::Joint, MBSim::IsotropicRotationalSpringDamper, MBSim::KineticExcitation, MBSim::Gear, MBSim::SpringDamper, MBSim::ExternGeneralizedIO, and MBSim::GeneralizedFriction.
|
inlinevirtual |
get gap distance and calculate gap velocity of unilateral links to estimate impacts within the next step
gInActive | gap distance of inactive links (return) |
gdInActive | gap velocities of inactive links (return) |
IndInActive | index for gInActive/gdInActive; incremented with size after storage (return and input) |
gAct | gap distance of active links (return) |
IndActive | index for gActive; incremented with size after storage (return and input) |
Reimplemented in MBSim::Contact, and MBSim::SingleContact.
|
virtual |
plots time dependent data
simulation | time |
simulation | time step size for derivative calculation |
Reimplemented from MBSim::Element.
Reimplemented in MBSim::GeneralizedSpringDamper, MBSim::Contact, MBSim::DirectionalSpringDamper, MBSim::SingleContact, MBSim::Joint, MBSim::SpringDamper, MBSim::Gear, MBSim::KineticExcitation, MBSim::LinkMechanics, MBSim::Gearing, MBSim::GeneralizedFriction, MBSim::ExternGeneralizedIO, and MBSim::KinematicExcitation.
|
inlinevirtual |
solve contact equations of motion with single step fixed point scheme
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
inlinevirtual |
solve contact equations of motion with Gauss-Seidel scheme
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
inlinevirtual |
solve contact equations of motion with Newton scheme
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
inlinevirtual |
solve impact equations of motion with single step fixed point scheme on velocity level
time | step-size |
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
inlinevirtual |
solve impact equations of motion with Gauss-Seidel scheme on velocity level
time | step-size |
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
inlinevirtual |
solve impact equations of motion with Newton scheme on velocity level
time | step-size |
Reimplemented in MBSim::Contact, MBSim::SingleContact, and MBSim::Joint.
|
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)
|
protected |
status of link
for single valued links
|
protected |
residuum of nonlinear contact equations