23#include "mbsim/element.h"
27 extern const PlotFeatureEnum generalizedPosition, generalizedVelocity, derivativeOfGeneralizedPosition, generalizedAcceleration;
49 virtual void calcSize() { }
50 int getGeneralizedPositionSize() {
if(updSize) calcSize();
return nq; }
51 int getGeneralizedVelocitySize() {
if(updSize) calcSize();
return nu; }
53 virtual void updateT() { }
54 virtual void updateh(
int j=0) { }
55 virtual void updateM() { }
56 virtual void updatedhdz();
57 virtual void updatedq();
58 virtual void updatedu();
59 virtual void updateud();
60 virtual void updateqd();
61 virtual void sethSize(
int hSize_,
int i=0) {
hSize[i] = hSize_; }
62 int gethSize(
int i=0)
const {
return hSize[i]; }
63 int getqSize()
const {
return qSize; }
64 int getuSize(
int i=0)
const {
return uSize[i]; }
65 virtual void calcqSize() { }
66 virtual void calcuSize(
int j) { }
67 int getqInd() {
return qInd; }
68 int getuInd(
int i=0) {
return uInd[i]; }
69 virtual void setqInd(
int qInd_) {
qInd = qInd_; }
70 virtual void setuInd(
int uInd_,
int i=0) { uInd[i] = uInd_; }
71 const fmatvec::Vec& getq()
const {
return q; }
72 const fmatvec::Vec& getu()
const {
return u; }
132 virtual void updatehRef(fmatvec::Vec& hRef,
int i=0);
146 virtual void updatedhduRef(fmatvec::SqrMat& dhduRef,
int i=0);
159 virtual void updaterRef(fmatvec::Vec& ref,
int i=0);
178 virtual void updateMRef(fmatvec::SymMat &ref);
190 void init(
InitStage stage,
const InitConfigSet &config)
override;
195 virtual void initz();
219 void setqSize(
int qSize_) {
qSize = qSize_; }
220 void setuSize(
int uSize_,
int i=0) {
uSize[i] = uSize_; }
221 int getzSize()
const {
return qSize +
uSize[0]; }
223 virtual void sethInd(
int hInd_,
int i=0) { hInd[i] = hInd_; }
224 int gethInd(
int i=0) {
return hInd[i]; }
226 const fmatvec::SymMat& getM(
bool check=
true)
const;
227 fmatvec::SymMat& getM(
bool check=
true);
228 const fmatvec::Vec& geth(
int i=0,
bool check=
true)
const;
229 fmatvec::Vec& geth(
int i=0,
bool check=
true);
231 fmatvec::Vec& getq() {
return q; };
232 fmatvec::Vec& getu() {
return u; };
234 const fmatvec::Vec& getq0()
const {
return q0; };
235 const fmatvec::Vec& getu0()
const {
return u0; };
236 fmatvec::Vec& getq0() {
return q0; };
237 fmatvec::Vec& getu0() {
return u0; };
239 const fmatvec::Mat& evalT();
240 const fmatvec::Vec& evalh(
int i=0);
241 const fmatvec::SymMat& evalM();
242 const fmatvec::SymMat& evalLLM();
243 const fmatvec::Vec& evalr(
int i=0);
244 const fmatvec::Vec& evalrdt();
245 const fmatvec::Vec& evalqd();
246 const fmatvec::Vec& evalud();
247 const fmatvec::Vec& evaludall();
249 fmatvec::Vec& getud(
bool check=
true);
250 fmatvec::Vec& getudall(
bool check=
true);
252 void resetUpToDate()
override { updq =
true; updu =
true; updqd =
true; updud =
true; }
254 virtual void updateGeneralizedPositions();
255 virtual void updateGeneralizedVelocities();
256 virtual void updateGeneralizedAccelerations();
257 virtual void updateDerivativeOfGeneralizedPositions();
259 const fmatvec::VecV& evalGeneralizedPosition() {
if(updq) updateGeneralizedPositions();
return qRel; }
260 const fmatvec::VecV& evalGeneralizedVelocity() {
if(updu) updateGeneralizedVelocities();
return uRel; }
261 const fmatvec::VecV& evalDerivativeOfGeneralizedPosition() {
if(updqd) updateDerivativeOfGeneralizedPositions();
return qdRel; }
262 const fmatvec::VecV& evalGeneralizedAcceleration() {
if(updud) updateGeneralizedAccelerations();
return udRel; }
263 fmatvec::VecV& getGeneralizedPosition(
bool check=
true) { assert((not check) or (not updq));
return qRel; }
264 fmatvec::VecV& getGeneralizedVelocity(
bool check=
true) { assert((not check) or (not updu));
return uRel; }
265 fmatvec::VecV& getDerivativeOfGeneralizedPosition(
bool check=
true) { assert((not check) or (not updqd));
return qdRel; }
266 fmatvec::VecV& getGeneralizedAcceleration(
bool check=
true) { assert((not check) or (not updud));
return udRel; }
268 void setq(
const fmatvec::Vec &q_) {
q = q_; }
269 void setu(
const fmatvec::Vec &u_) { u = u_; }
271 bool hasNonCostantMassMatrix() {
return nonConstantMassMatrix; }
274 void initializeUsingXML(xercesc::DOMElement *element)
override;
304 fmatvec::Vec
q, u, uall;
314 fmatvec::Vec
qd, ud, dq, du, udall;
319 fmatvec::Vec
h[2], r[2], rdt;
321 fmatvec::Mat W[2], V[2];
327 fmatvec::SqrMat dhdu;
345 fmatvec::VecV qRel, uRel, qdRel, udRel;
347 bool updSize, updq, updu, updqd, updud;
349 bool nonConstantMassMatrix{
true};
basic class of MBSim mainly for plotting
Definition: element.h:56
H5::GroupBase * plotGroup
associated plot group
Definition: element.h:297
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
class for all objects having own dynamics and mass
Definition: object.h:42
virtual void updateuRef(fmatvec::Vec &uRef)
references to velocities of dynamic system parent
Definition: object.cc:118
int hSize[2]
size of object h-vector (columns of J)
Definition: object.h:294
virtual void updateuallRef(fmatvec::Vec &uallRef)
references to velocities of dynamic system parent
Definition: object.cc:122
fmatvec::Mat dhdq
Jacobians of h.
Definition: object.h:326
virtual void updateqdRef(fmatvec::Vec &qdRef)
references to differentiated positions of dynamic system parent
Definition: object.cc:110
virtual void updaterRef(fmatvec::Vec &ref, int i=0)
references to nonsmooth force vector of dynamic system parent
Definition: object.cc:154
virtual void updatehRef(fmatvec::Vec &hRef, int i=0)
references to smooth force vector of dynamic system parent
Definition: object.cc:138
void createPlotGroup() override
creates the plotGroup for H5-output
Definition: object.cc:337
virtual void setUpInverseKinetics()
TODO.
Definition: object.h:215
void plot() override
plots time dependent data
Definition: object.cc:96
int uSize[2]
size of object velocities
Definition: object.h:289
int qSize
size of object positions
Definition: object.h:284
virtual void updateLLMRef(fmatvec::SymMat &ref)
references to Cholesky decomposition of dynamic system parent
Definition: object.cc:170
virtual void updateLLM()
perform Cholesky decomposition of mass martix
Definition: object.h:210
virtual void readz0(H5::GroupBase *group)
reads the z-Vector of a subgroup of the given group
Definition: object.cc:215
virtual void updateMRef(fmatvec::SymMat &ref)
references to mass matrix of dynamic system parent
Definition: object.cc:166
virtual void initz()
Definition: object.cc:192
fmatvec::Vec q0
initial position, velocity
Definition: object.h:309
virtual void updateTRef(fmatvec::Mat &ref)
references to linear transformation matrix between differentiated positions and velocities of dynamic...
Definition: object.cc:162
virtual void updatedhdtRef(fmatvec::Vec &dhdtRef, int i=0)
references to object Jacobian for implicit integration of dynamic system parent regarding time
Definition: object.cc:150
virtual void updatedqRef(fmatvec::Vec &dqRef)
references to differentiated positions of dynamic system parent
Definition: object.cc:114
virtual void updaterdtRef(fmatvec::Vec &ref)
references to nonsmooth force vector of dynamic system parent
Definition: object.cc:158
virtual void updateduRef(fmatvec::Vec &duRef)
references to differentiated velocities of dynamic system parent
Definition: object.cc:130
fmatvec::Vec qd
differentiated positions, velocities
Definition: object.h:314
fmatvec::Vec q
positions, velocities
Definition: object.h:304
virtual void updateudRef(fmatvec::Vec &udRef)
references to differentiated velocities of dynamic system parent
Definition: object.cc:126
virtual void writez(H5::GroupBase *group)
writes its z-Vector to a subgroup of the given group
Definition: object.cc:209
virtual void updatedhdqRef(fmatvec::Mat &dhdqRef, int i=0)
references to object Jacobian for implicit integration of dynamic system parent regarding positions
Definition: object.cc:142
Object(const std::string &name)
constructor
Definition: object.cc:43
fmatvec::SymMat LLM
LU-decomposition of mass matrix.
Definition: object.h:343
virtual void updateqRef(fmatvec::Vec &qRef)
references to positions of dynamic system parent
Definition: object.cc:106
fmatvec::SymMat M
mass matrix
Definition: object.h:338
fmatvec::Mat T
linear relation matrix of differentiated position and velocity parameters
Definition: object.h:333
void init(InitStage stage, const InitConfigSet &config) override
initialize object at start of simulation with respect to contours and frames
Definition: object.cc:174
int qInd
indices of positions, velocities, right hand side
Definition: object.h:299
virtual void updateudallRef(fmatvec::Vec &udallRef)
references to differentiated velocities of dynamic system parent
Definition: object.cc:134
fmatvec::Vec h[2]
complete and object smooth and nonsmooth right hand side
Definition: object.h:319
virtual void updatedhduRef(fmatvec::SqrMat &dhduRef, int i=0)
references to object Jacobian for implicit integration of dynamic system parent regarding velocities
Definition: object.cc:146
namespace MBSim
Definition: bilateral_constraint.cc:30