mbsim 4.0.0 MBSim Kernel

link.h
1 /* Copyright (C) 2004-2014 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: martin.o.foerg@googlemail.com
18 */
19
20 #ifndef _LINK_H_
21 #define _LINK_H_
22
23 #include "mbsim/element.h"
24 #include "mbsim/mbsim_event.h"
25
26 namespace H5 {
27 class Group;
28 }
29
30 namespace MBSim {
31
32 extern const PlotFeatureEnum generalizedRelativePosition, generalizedRelativeVelocity, generalizedForce;
33
47 //class Link : public Element, public LinkInterface, public ExtraDynamicInterface {
48 class Link : public Element {
49 public:
54 Link(const std::string &name);
55
56 virtual void calcSize() { }
57 int getGeneralizedRelativePositionSize() { if(updSize) calcSize(); return ng; }
58 int getGeneralizedRelativeVelocitySize() { if(updSize) calcSize(); return ngd; }
59 int getGeneralizedForceSize() { if(updSize) calcSize(); return nla; }
60
61 virtual void updateg() { }
62 virtual void updategd() { }
63 virtual void updatewb() { }
64 virtual void updateW(int i=0) { }
65 virtual void updateV(int i=0) { }
66 virtual void updater(int i=0) { }
67 virtual void updateJrla(int i=0) { }
68 virtual void updateh(int i=0) { }
69 virtual void updateStopVector() { }
70 virtual void updateStopVectorParameters() { }
71 virtual void updateLinkStatus() { }
72 virtual void updateLinkStatusReg() { }
73 virtual void updateJacobians(int j=0) { }
74 virtual void updateb() { }
75
76 virtual void updatedx();
77 virtual void updatexd() { }
78 virtual void calcxSize() { xSize = 0; }
79 const fmatvec::Vec& getx() const { return x; }
80 fmatvec::Vec& getx() { return x; }
81 const fmatvec::Vec& getxd(bool check=true) const;
82 fmatvec::Vec& getxd(bool check=true);
83 int getxInd() { return xInd; }
84 virtual void setxInd(int xInd_) { xInd = xInd_; };
85 int getxSize() const { return xSize; }
86 virtual void updatexRef(fmatvec::Vec& ref);
87 virtual void updatexdRef(fmatvec::Vec& ref);
88 virtual void updatedxRef(fmatvec::Vec& ref);
89 virtual void updatebRef(fmatvec::Mat &hRef);
90 void init(InitStage stage, const InitConfigSet &config) override;
91 virtual void initz();
92 virtual void writez(H5::GroupBase *group);
93 virtual void readz0(H5::GroupBase *group);
94
95 virtual void setbInd(int bInd_) { bInd = bInd_; };
96
97 /* INHERITED INTERFACE OF ELEMENT */
98 void plot() override;
99 /***************************************************/
100
101 /* INTERFACE TO BE DEFINED IN DERIVED CLASS */
105 virtual void updateWRef(fmatvec::Mat& ref, int i=0) = 0;
106
110 virtual void updateVRef(fmatvec::Mat& ref, int i=0) = 0;
111
115 virtual void updatehRef(fmatvec::Vec &hRef, int i=0) = 0;
116
120 virtual void updaterRef(fmatvec::Vec &ref, int i=0) = 0;
121
122 virtual void updateJrlaRef(fmatvec::Mat &ref, int i=0) {}
123
127 virtual void updatewbRef(fmatvec::Vec &ref);
128
132 virtual void updatelaRef(fmatvec::Vec& ref);
133
137 virtual void updateLaRef(fmatvec::Vec& ref);
138
142 virtual void deletelaRef();
143
147 virtual void updateInternalStateRef(fmatvec::Vec& cur, fmatvec::Vec& next);
148
152 virtual void updategRef(fmatvec::Vec& ref);
153
157 virtual void updategdRef(fmatvec::Vec& ref);
158
162 virtual void updateresRef(fmatvec::Vec& ref);
163
167 virtual void updaterFactorRef(fmatvec::Vec& ref);
168
172 virtual void updatesvRef(fmatvec::Vec &sv);
173
177 virtual void updatejsvRef(fmatvec::VecInt &jsvParent);
178
182 virtual void updateLinkStatusRef(fmatvec::VecInt &LinkStatusParent);
183
187 virtual void updateLinkStatusRegRef(fmatvec::VecInt &LinkStatusRegParent);
188
192 virtual void calclaSize(int j) { laSize = 0; }
193
194 int getisInd() { return isInd; }
195 int getisSize() { return isSize; }
196 virtual void calcisSize() { isSize = 0; }
197
203 virtual void aboutToUpdateInternalState() {}
204
205 virtual void postprocessing() {}
206
210 virtual void calcgSize(int j) { gSize = 0; }
211
218 virtual void calcgdSize(int j) { gdSize = 0; }
219
223 virtual void calcrFactorSize(int j) { rFactorSize = 0; }
224
228 virtual void calcbSize() { bSize = 0; }
229
233 virtual void calcsvSize() { svSize = 0; }
234
238 virtual void calcLinkStatusSize() { LinkStatusSize =0;}
239
243 virtual void calcLinkStatusRegSize() { LinkStatusRegSize =0;}
244
250 virtual bool isSetValued() const { return false; }
251
257 virtual bool isSingleValued() const { return false; }
258
262 virtual bool isActive() const = 0;
263
267 virtual bool gActiveChanged() = 0;
268
272 virtual bool detectImpact() { return false; }
273
278 virtual void solveImpactsFixpointSingle() { throwError("(Link::solveImpactsFixpointSingle): Not implemented."); }
279
283 virtual void solveConstraintsFixpointSingle() { throwError("(Link::solveConstraintsFixpointSingle): Not implemented."); }
284
289 virtual void solveImpactsGaussSeidel() { throwError("(Link::solveImpactsGaussSeidel): Not implemented."); }
290
294 virtual void solveConstraintsGaussSeidel() { throwError("(Link::solveConstraintsGaussSeidel): Not implemented."); }
295
300 virtual void solveImpactsRootFinding() { throwError("(Link::solveImpactsRootFinding): Not implemented."); }
301
305 virtual void solveConstraintsRootFinding() { throwError("(Link::solveConstraintsRootFinding): Not implemented."); }
306
310 virtual void jacobianConstraints() { throwError("(Link::jacobianConstraints): Not implemented."); }
311
315 virtual void jacobianImpacts() { throwError("(Link::jacobianImpacts): Not implemented."); }
316
320 virtual void updaterFactors() { throwError("(Link::updaterFactors): Not implemented."); }
321
325 virtual void checkImpactsForTermination() { throwError("(Link::checkImpactsForTermination): Not implemented."); }
326
330 virtual void checkConstraintsForTermination() { throwError("(Link::checkConstraintsForTermination): Not implemented."); }
331
338 virtual void checkActive(int j) { }
339
340 virtual void setGeneralizedForceTolerance(double tol) { laTol = tol; }
341 virtual void setGeneralizedImpulseTolerance(double tol) { LaTol = tol; }
342 virtual void setGeneralizedRelativePositionTolerance(double tol) { gTol = tol; }
343 virtual void setGeneralizedRelativeVelocityTolerance(double tol) { gdTol = tol; }
344 virtual void setGeneralizedRelativeAccelerationTolerance(double tol) { gddTol = tol; }
345 virtual void setGeneralizedRelativePositionCorrectionValue(double corr) { gCorr = corr; }
346 virtual void setGeneralizedRelativeVelocityCorrectionValue(double corr) { gdCorr = corr; }
347 virtual void setrMax(double rMax_) { rMax = rMax_; }
348 virtual void setLinkStatusInd(int LinkStatusInd_) { LinkStatusInd = LinkStatusInd_; };
349 virtual void setLinkStatusRegInd(int LinkStatusRegInd_) { LinkStatusRegInd = LinkStatusRegInd_; };
350 virtual void setlaInd(int laInd_) { laInd = laInd_;Ila=fmatvec::RangeV(laInd,laInd+laSize-1); }
351 virtual void setisInd(int isInd_) { isInd = isInd_; }
352 virtual void setgInd(int gInd_) { gInd = gInd_; Ig=fmatvec::RangeV(gInd,gInd+gSize-1); }
353 virtual void setgdInd(int gdInd_) { gdInd = gdInd_; }
354 virtual void setrFactorInd(int rFactorInd_) { rFactorInd = rFactorInd_; }
363 virtual void LinearImpactEstimation(double t, fmatvec::Vec &gInActive_,fmatvec::Vec &gdInActive_,int *IndInActive_,fmatvec::Vec &gAct_,int *IndActive_) { }
364
368 virtual void SizeLinearImpactEstimation(int *sizeInActive_, int *sizeActive_) { }
369 virtual void updatecorr(int j) { corr.init(0); }
370 virtual void updatecorrRef(fmatvec::Vec &ref);
371 virtual void calccorrSize(int j) { corrSize = 0; }
372 virtual void setcorrInd(int corrInd_) { corrInd = corrInd_; }
373 virtual void checkRoot() { }
374 /***************************************************/
375
376 void setx(const fmatvec::Vec &x_) { x = x_; }
377
378 virtual void setsvInd(int svInd_) { svInd = svInd_; };
379 int getsvSize() const { return svSize; }
380
381 int getLinkStatusSize() const { return LinkStatusSize; }
382
383 int getLinkStatusRegSize() const { return LinkStatusRegSize; }
384
385 const fmatvec::Vec& getla(bool check=true) const;
386 const fmatvec::Vec& getLa(bool check=true) const;
387 fmatvec::Vec& getla(bool check=true);
388 fmatvec::Vec& getLa(bool check=true);
389 fmatvec::Vec& getwb(bool check=true);
390
391 int getlaInd() const { return laInd; }
392 int getlaSize() const { return laSize; }
393 int getbSize() const { return bSize; }
394
395 const fmatvec::Vec& evalg();
396 const fmatvec::Vec& evalgd();
397 const fmatvec::Vec& evalla();
398 const fmatvec::Vec& evalLa();
399 const fmatvec::Vec& evalwb();
400 const fmatvec::Vec& evalxd();
401
402 int getgdInd() const { return gdInd; }
403 int getgSize() const { return gSize; }
404 int getgdSize() const { return gdSize; }
405
406 int getrFactorSize() const { return rFactorSize; }
407
408 const fmatvec::VecInt& getrFactorUnsure() const { return rFactorUnsure; }
409
410 void resetUpToDate() override { updrrel = true; updvrel = true; updla = true; }
411
412 virtual void updateGeneralizedPositions() { updrrel = false; }
413 virtual void updateGeneralizedVelocities() { updvrel = false; }
414 virtual void updateGeneralizedForces() { updla = false; }
415
416 const fmatvec::VecV& evalGeneralizedRelativePosition() { if(updrrel) updateGeneralizedPositions(); return rrel; }
417 const fmatvec::VecV& evalGeneralizedRelativeVelocity() { if(updvrel) updateGeneralizedVelocities(); return vrel; }
418 const fmatvec::VecV& evalGeneralizedForce() { if(updla) updateGeneralizedForces(); return lambda; }
419
420 fmatvec::VecV& getGeneralizedRelativePosition(bool check=true) { assert((not check) or (not updrrel)); return rrel; }
421 fmatvec::VecV& getGeneralizedRelativeVelocity(bool check=true) { assert((not check) or (not updvrel)); return vrel; }
422 fmatvec::VecV& getGeneralizedForce(bool check=true) { assert((not check) or (not updla)); return lambda; }
423
427 void savela();
428
432 void saveLa();
433
437 void initla();
438
442 void initLa();
443
447 void decreaserFactors();
448
449
450 int getcorrSize() const { return corrSize; }
451
452 bool getUpdaterrel() const { return updrrel; }
453
454 void createPlotGroup() override;
455
456 protected:
457 int ng, ngd, nla;
458
462 fmatvec::Vec x;
463
467 fmatvec::Vec xd;
468
469 fmatvec::Vec dx;
470
474 fmatvec::Vec x0;
475
479 int xSize, xInd;
480
484 fmatvec::Vec sv;
485
489 fmatvec::VecInt jsv;
490
494 int svSize, svInd;
495
500 fmatvec::VecInt LinkStatus;
501
505 int LinkStatusSize, LinkStatusInd;
506
511 fmatvec::VecInt LinkStatusReg;
512
516 int LinkStatusRegSize, LinkStatusRegInd;
517
518 fmatvec::Vec curis, nextis;
519
523 fmatvec::Vec g, gd, la, La;
524
528 fmatvec::Vec laS;
529
530 int isSize, isInd;
531
535 int gSize, gInd;
536
540 int gdSize, gdInd;
541
545 int laSize, laInd;
546
550 int bSize, bInd;
551
555 fmatvec::RangeV Ig, Ila;
556
560 double gTol, gdTol, gddTol, laTol, LaTol;
561
565 double gCorr, gdCorr;
566
570 fmatvec::Vec la0, La0;
571
575 fmatvec::Vec rFactor;
576
580 fmatvec::VecInt rFactorUnsure;
581
585 int rFactorSize, rFactorInd;
586
590 double rMax;
591
595 fmatvec::Vec res;
596
600 std::vector<fmatvec::Mat> W[2];
601
605 std::vector<fmatvec::Mat> V[2];
606
610 std::vector<fmatvec::Vec> h[2];
611
615 std::vector<fmatvec::Mat> dhdq;
616 std::vector<fmatvec::Mat> dhdu;
617 std::vector<fmatvec::Vec> dhdt;
618
622 std::vector<fmatvec::Vec> r[2];
623
627 std::vector<fmatvec::Mat> Jrla[2];
628
632 fmatvec::Vec wb;
633
637 fmatvec::Mat b;
638
639 int corrSize, corrInd;
640 fmatvec::Vec corr;
641
642 fmatvec::VecV rrel, vrel, lambda;
643
644 bool updSize, updrrel, updvrel, updla;
645 };
646 }
647
648 #endif /* _LINK_H_ */
MBSim::Link::x
fmatvec::Vec x
order one parameters
Definition: link.h:462
MBSim::Link::V
std::vector< fmatvec::Mat > V[2]
reduced force direction matrix for nonsmooth right hand side
Definition: link.h:605
MBSim::Link::createPlotGroup
void createPlotGroup() override
creates the plotGroup for H5-output
Definition: link.cc:259
MBSim::Link::updateLinkStatusRegRef
virtual void updateLinkStatusRegRef(fmatvec::VecInt &LinkStatusRegParent)
reference to vector of link status (for single-valued links)
Definition: link.cc:127
MBSim::Link::savela
void savela()
saves contact forces for use as starting value in next time step
Definition: link.cc:172
MBSim::Link::x0
fmatvec::Vec x0
order one initial value
Definition: link.h:474
MBSim::Link::decreaserFactors
void decreaserFactors()
decrease rfactor if mass action matrix is not diagonal dominant (cf. Foerg: Dissertation,...
Definition: link.cc:194
MBSim::Link::rMax
double rMax
maximum r-factor
Definition: link.h:590
MBSim::Link::g
fmatvec::Vec g
relative position, relative velocity, contact force and impact parameters
Definition: link.h:523
MBSim::Link
general link to one or more objects
Definition: link.h:48
MBSim::Link::updatewbRef
virtual void updatewbRef(fmatvec::Vec &ref)
references to TODO of dynamic system parent
Definition: link.cc:66
MBSim::Link::LinkStatusReg
fmatvec::VecInt LinkStatusReg
status of link
Definition: link.h:511
MBSim::Link::checkImpactsForTermination
virtual void checkImpactsForTermination()
verify underlying force laws on velocity level concerning given tolerances
Definition: link.h:325
MBSim::Link::b
fmatvec::Mat b
TODO.
Definition: link.h:637
MBSim::Link::laSize
int laSize
size and local index of contact force parameters
Definition: link.h:545
MBSim::Link::gdSize
int gdSize
size and local index of relative velocities
Definition: link.h:540
MBSim::Link::updateLaRef
virtual void updateLaRef(fmatvec::Vec &ref)
references to contact force parameter of dynamic system parent
Definition: link.cc:86
MBSim::Link::sv
fmatvec::Vec sv
stop vector for event driven integration (root function)
Definition: link.h:484
MBSim::Link::init
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: link.cc:137
MBSim::Link::solveConstraintsRootFinding
virtual void solveConstraintsRootFinding()
Definition: link.h:305
MBSim::Link::solveImpactsGaussSeidel
virtual void solveImpactsGaussSeidel()
Definition: link.h:289
MBSim::Link::calcgSize
virtual void calcgSize(int j)
calculates size of relative distances
Definition: link.h:210
MBSim::Link::xSize
int xSize
size and local index of order one parameters
Definition: link.h:479
MBSim::Link::updaterFactorRef
virtual void updaterFactorRef(fmatvec::Vec &ref)
references to rfactors of dynamic system parent
Definition: link.cc:111
MBSim::Link::bSize
int bSize
size and local index of contact force parameters
Definition: link.h:550
MBSim::Link::Link
Link(const std::string &name)
constructor
Definition: link.cc:39
MBSim::Link::saveLa
void saveLa()
saves contact impulses for use as starting value in next time step
Definition: link.cc:183
MBSim::Link::h
std::vector< fmatvec::Vec > h[2]
smooth complete and link right hand side
Definition: link.h:610
MBSim::Link::LinkStatus
fmatvec::VecInt LinkStatus
status of link (default 0) describing which piece of the equation is valid (e.g. stick or slip)
Definition: link.h:500
MBSim::Link::rFactor
fmatvec::Vec rFactor
vector of rfactors for relaxation of contact equations
Definition: link.h:575
MBSim::Link::updateInternalStateRef
virtual void updateInternalStateRef(fmatvec::Vec &cur, fmatvec::Vec &next)
references to internal state of dynamic system parent
Definition: link.cc:94
MBSim::Link::updatelaRef
virtual void updatelaRef(fmatvec::Vec &ref)
references to contact force parameter of dynamic system parent
Definition: link.cc:82
MBSim::Link::detectImpact
virtual bool detectImpact()
Definition: link.h:272
MBSim::Link::updateresRef
virtual void updateresRef(fmatvec::Vec &ref)
references to residuum of nonlinear contact equations of dynamic system parent
Definition: link.cc:107
MBSim::Link::jsv
fmatvec::VecInt jsv
evaluation of roots of stop vector with a boolean vector
Definition: link.h:489
MBSim::Element
basic class of MBSim mainly for plotting
Definition: element.h:56
MBSim::Link::LinkStatusSize
int LinkStatusSize
size and local index of link status vector (set-valued)
Definition: link.h:505
MBSim::Link::updateLinkStatusRef
virtual void updateLinkStatusRef(fmatvec::VecInt &LinkStatusParent)
reference to vector of link status (for set valued links with piecewise link equations)
Definition: link.cc:123
H5::GroupBase
MBSim::Link::checkActive
virtual void checkActive(int j)
check if set-valued contacts are active and set corresponding attributes
Definition: link.h:338
MBSim::Link::updategRef
virtual void updategRef(fmatvec::Vec &ref)
references to contact relative distances of dynamic system parent
Definition: link.cc:99
MBSim::Link::la0
fmatvec::Vec la0
attribute to save contact force parameter of previous time step
Definition: link.h:570
MBSim::Link::isActive
virtual bool isActive() const =0
MBSim::Link::updateWRef
virtual void updateWRef(fmatvec::Mat &ref, int i=0)=0
references to contact force direction matrix of dynamic system parent
MBSim::Link::solveConstraintsGaussSeidel
virtual void solveConstraintsGaussSeidel()
Definition: link.h:294
MBSim::Link::deletelaRef
virtual void deletelaRef()
delete reference to contact force parameter of dynamic system parent
Definition: link.cc:90
MBSim::Link::updatejsvRef
virtual void updatejsvRef(fmatvec::VecInt &jsvParent)
references to stopvector evaluation of dynamic system parent (root detection with corresponding bool ...
Definition: link.cc:119
MBSim::Link::calcbSize
virtual void calcbSize()
calculates size of rfactors
Definition: link.h:228
MBSim::Link::W
std::vector< fmatvec::Mat > W[2]
force direction matrix for nonsmooth right hand side
Definition: link.h:600
MBSim::Link::LinearImpactEstimation
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 s...
Definition: link.h:363
MBSim::Link::plot
void plot() override
plots time dependent data
Definition: link.cc:42
MBSim::Link::jacobianImpacts
virtual void jacobianImpacts()
computes JACOBIAN and mass action matrix of nonlinear contact equations on velocity level
Definition: link.h:315
MBSim::Link::Jrla
std::vector< fmatvec::Mat > Jrla[2]
Jacobian dr/dla.
Definition: link.h:627
MBSim::Link::checkConstraintsForTermination
virtual void checkConstraintsForTermination()
verify underlying force laws concerning given tolerances
Definition: link.h:330
MBSim::Link::updategdRef
virtual void updategdRef(fmatvec::Vec &ref)
references to contact relative velocities of dynamic system parent
Definition: link.cc:103
MBSim::Link::updaterRef
virtual void updaterRef(fmatvec::Vec &ref, int i=0)=0
references to nonsmooth force vector of dynamic system parent
MBSim::Element::InitStage
InitStage
The stages of the initialization.
Definition: element.h:62
MBSim::Link::svSize
int svSize
size and local index of stop vector
Definition: link.h:494
MBSim::Link::SizeLinearImpactEstimation
virtual void SizeLinearImpactEstimation(int *sizeInActive_, int *sizeActive_)
calculates the number of active and inactive unilateral constraints and increments sizeActive/sizeInA...
Definition: link.h:368
MBSim::Link::calcsvSize
virtual void calcsvSize()
calculates size of stopvector (root function for event driven integration)
Definition: link.h:233
MBSim::Link::aboutToUpdateInternalState
virtual void aboutToUpdateInternalState()
Definition: link.h:203
MBSim::Link::updatesvRef
virtual void updatesvRef(fmatvec::Vec &sv)
references to stopvector of dynamic system parent (root function for event driven integration)
Definition: link.cc:115
MBSim::Link::initla
void initla()
load contact forces for use as starting value
Definition: link.cc:176
MBSim::Link::r
std::vector< fmatvec::Vec > r[2]
nonsmooth right hand side
Definition: link.h:622
MBSim::Link::solveImpactsFixpointSingle
virtual void solveImpactsFixpointSingle()
Definition: link.h:278
MBSim::Link::Ig
fmatvec::RangeV Ig
local index of relative distances and contact force parameters
Definition: link.h:555
MBSim::Link::updateVRef
virtual void updateVRef(fmatvec::Mat &ref, int i=0)=0
references to condensed contact force direction matrix of dynamic system parent
MBSim::Element::name
std::string name
name of element
Definition: element.h:260
MBSim::Link::solveImpactsRootFinding
virtual void solveImpactsRootFinding()
Definition: link.h:300
MBSim::Link::solveConstraintsFixpointSingle
virtual void solveConstraintsFixpointSingle()
Definition: link.h:283
MBSim::Link::laS
fmatvec::Vec laS
contact forces of smooth contact laws
Definition: link.h:528
MBSim::Link::calcLinkStatusSize
virtual void calcLinkStatusSize()
calculates size of vector LinkStatus
Definition: link.h:238
MBSim::Link::res
fmatvec::Vec res
Definition: link.h:595
MBSim::Link::calcrFactorSize
virtual void calcrFactorSize(int j)
calculates size of rfactors
Definition: link.h:223
MBSim::Link::updatehRef
virtual void updatehRef(fmatvec::Vec &hRef, int i=0)=0
references to complete and link smooth force vector of dynamic system parent
MBSim::Link::initLa
void initLa()
load contact impulses for use as starting value
Definition: link.cc:187
MBSim::Link::gCorr
double gCorr
correction factor for relative position and relative velocity
Definition: link.h:565
MBSim::Link::updaterFactors
virtual void updaterFactors()
update relaxation factors for contact equations
Definition: link.h:320
MBSim::Link::gTol
double gTol
tolerance for relative position, relative velocity, relative acceleration, force and impact
Definition: link.h:560
MBSim::Link::gActiveChanged
virtual bool gActiveChanged()=0
MBSim::Link::dhdq
std::vector< fmatvec::Mat > dhdq
smooth Jacobians for implicit integration
Definition: link.h:615
MBSim::Link::calcLinkStatusRegSize
virtual void calcLinkStatusRegSize()
calculates size of vector LinkStatusReg
Definition: link.h:243
MBSim::Link::isSetValued
virtual bool isSetValued() const
asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore s...
Definition: link.h:250
MBSim::Link::gSize
int gSize
size and local index of relative distances
Definition: link.h:535
MBSim::Link::LinkStatusRegSize
int LinkStatusRegSize
size and local index of single-valued link status vector
Definition: link.h:516
MBSim::Link::wb
fmatvec::Vec wb
TODO.
Definition: link.h:632
MBSim::Link::jacobianConstraints
virtual void jacobianConstraints()
computes JACOBIAN and mass action matrix of nonlinear contact equations
Definition: link.h:310
MBSim::Link::rFactorSize
int rFactorSize
size and local index of rfactors
Definition: link.h:585
MBSim::Link::rFactorUnsure
fmatvec::VecInt rFactorUnsure
boolean vector defining if rfactor belongs to not diagonal dominant mass action matrix (cf....
Definition: link.h:580
MBSim::Link::isSingleValued
virtual bool isSingleValued() const
asks the link if it contains single valued force laws that contribute to the right-hand side vector h
Definition: link.h:257
MBSim::Link::calcgdSize
virtual void calcgdSize(int j)
calculates size of gap velocities
Definition: link.h:218
MBSim::Link::xd
fmatvec::Vec xd
differentiated order one parameters
Definition: link.h:467
MBSim::Link::calclaSize
virtual void calclaSize(int j)
calculates size of contact force parameters
Definition: link.h:192
MBSim
namespace MBSim
Definition: bilateral_constraint.cc:30