A spring damper force law. This class connects two frames and applies a force in it, which depends in the distance and relative velocity between the two frames. More...
#include <spring_damper.h>
Public Member Functions | |
SpringDamper (const std::string &name="") | |
void | updateh (double, int i=0) |
void | updateg (double) |
void | updategd (double) |
void | connect (Frame *frame1, Frame *frame2) |
Connect the SpringDamper to frame1 and frame2. | |
bool | isActive () const |
bool | gActiveChanged () |
bool | isSingleValued () const |
asks the link if it contains single valued force laws that contribute to the right-hand side vector h More... | |
std::string | getType () const |
void | init (InitStage stage) |
plots time series header More... | |
void | setForceFunction (Function< double(double, double)> *func_) |
Set function for the force calculation. The first input parameter to that function is the distance g between frame2 and frame1. The second input parameter to that function is the relative velocity gd between frame2 and frame1. The return value of that function is used as the force of the SpringDamper. | |
void | plot (double t, double dt=1) |
plots time dependent data More... | |
void | initializeUsingXML (xercesc::DOMElement *element) |
![]() | |
LinkMechanics (const std::string &name) | |
constructor More... | |
virtual | ~LinkMechanics () |
destructor | |
virtual void | updatedhdz (double t) |
virtual void | closePlot () |
closes plot file | |
virtual void | updateWRef (const fmatvec::Mat &ref, int i=0) |
references to contact force direction matrix of dynamic system parent | |
virtual void | updateVRef (const fmatvec::Mat &ref, int i=0) |
references to condensed contact force direction matrix of dynamic system parent | |
virtual void | updatehRef (const fmatvec::Vec &hRef, int i=0) |
references to complete and link smooth force vector of dynamic system parent | |
virtual void | updatedhdqRef (const fmatvec::Mat &ref, int i=0) |
virtual void | updatedhduRef (const fmatvec::SqrMat &ref, int i=0) |
virtual void | updatedhdtRef (const fmatvec::Vec &ref, int i=0) |
virtual void | updaterRef (const fmatvec::Vec &ref, int i=0) |
references to nonsmooth force vector of dynamic system parent | |
const std::vector< Contour * > & | getContour () const |
virtual void | connect (Frame *frame_) |
virtual void | connect (Contour *contour_) |
const std::vector< Frame * > & | getFrame () const |
![]() | |
Link (const std::string &name) | |
constructor More... | |
virtual | ~Link () |
destructor | |
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 | 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 | initz () |
virtual void | writez (H5::GroupBase *group) |
virtual void | readz0 (H5::GroupBase *group) |
virtual void | setbInd (int bInd_) |
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 | hasSmoothPart () const |
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 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 | |
double | dist |
fmatvec::Vec3 | n |
Function< double(double, double)> * | func |
![]() | |
std::vector< fmatvec::Vec3 > | WF |
force and moment direction for smooth right hand side | |
std::vector< fmatvec::Vec3 > | WM |
std::vector< fmatvec::Mat3xV > | fF |
cartesian force and moment direction matrix for nonsmooth right hand side | |
std::vector< fmatvec::Mat3xV > | fM |
std::vector< Frame * > | frame |
array in which all frames are listed, connecting bodies via a link | |
std::vector< Contour * > | contour |
array in which all contours are listed, connecting bodies via link | |
![]() | |
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. | |
Private Attributes | |
std::string | saved_ref1 |
std::string | saved_ref2 |
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) | |
A spring damper force law. This class connects two frames and applies a force in it, which depends in the distance and relative velocity between the two frames.
|
inlinevirtual |
Implements MBSim::Link.
|
inlinevirtual |
Reimplemented from MBSim::LinkMechanics.
|
virtual |
|
inlinevirtual |
Implements MBSim::Link.
|
inlinevirtual |
asks the link if it contains single valued force laws that contribute to the right-hand side vector h
Reimplemented from MBSim::Link.
|
virtual |
plots time dependent data
simulation | time |
simulation | time step size for derivative calculation |
Reimplemented from MBSim::LinkMechanics.