MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
planej.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/planej.h,v 1.50 2017/01/12 14:46:43 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32 /* Giunti piani */
33 
34 #ifndef PLANEJ_H
35 #define PLANEJ_H
36 
37 #include "joint.h"
38 #include "drive.h"
39 #include "friction.h"
40 
41 /* PlaneHingeJoint - begin */
42 
43 class PlaneHingeJoint : virtual public Elem, public Joint {
44  private:
45  /* Cerniera piana - asse di rotazione dato dall'asse 3 del sistema di
46  * riferimento della cerniera. Tale sistema e' noto relativamente ai due
47  * nodi. In particolare rispetto al nodo 1 la trasformazione dal sistema
48  * di riferimento della cerniera al sistema globale e': R1*R1h, mentre per
49  * il nodo 2 la medesima trasformazion e': R2*R2h.
50  * I vettori d1 e d2 esprimono, nel sistema di riferimento dei rispettivi
51  * nodi, la distanza della cerniera dai nodi stessi.
52  * I vettori F, M esprimono le reazioni vincolari di forza e coppia. */
61 #ifdef USE_NETCDF
62  NcVar *Var_Phi;
63  NcVar *Var_Omega;
64 // NcVar *Var_MFR;
65 // NcVar *Var_MU;
66 #endif // USE_NETCDF
67 
69  mutable int NTheta;
71 
72  /* friction related data */
74  BasicFriction *const fc;
76  const doublereal r;
78  static const unsigned int NumSelfDof;
79  static const unsigned int NumDof;
80  /* end of friction related data */
81 
82  protected:
84 
85  public:
86  /* Costruttore non banale */
87  PlaneHingeJoint(unsigned int uL, const DofOwner* pDO,
88  const StructNode* pN1, const StructNode* pN2,
89  const Vec3& dTmp1, const Vec3& dTmp2,
90  const Mat3x3& R1hTmp, const Mat3x3& R2hTmp,
92  flag fOut,
93  const bool _calcInitdTheta = true,
94  const doublereal initDTheta = 0.,
95  const doublereal rr = 0.,
96  const doublereal pref = 0.,
97  BasicShapeCoefficient *const sh = 0,
98  BasicFriction *const f = 0);
99 
100  /* Distruttore */
101  ~PlaneHingeJoint(void);
102 
103  virtual void ReadInitialState(MBDynParser& HP);
104 
105  /* Contributo al file di restart */
106  virtual std::ostream& Restart(std::ostream& out) const;
107 
108  /* Tipo di Joint */
109  virtual Joint::Type GetJointType(void) const {
110  return Joint::PLANEHINGE;
111  };
112 
113  virtual unsigned int iGetNumDof(void) const;
114 
115  virtual std::ostream& DescribeDof(std::ostream& out,
116  const char *prefix = "",
117  bool bInitial = false) const;
118 
119  virtual void DescribeDof(std::vector<std::string>& desc,
120  bool bInitial = false, int i = -1) const;
121 
122  virtual std::ostream& DescribeEq(std::ostream& out,
123  const char *prefix = "",
124  bool bInitial = false) const;
125 
126  virtual void DescribeEq(std::vector<std::string>& desc,
127  bool bInitial = false, int i = -1) const;
128 
129  DofOrder::Order GetDofType(unsigned int i) const;
130 
131  virtual void SetValue(DataManager *pDM,
133  SimulationEntity::Hints *ph = 0);
134 
135  virtual Hint *
136  ParseHint(DataManager *pDM, const char *s) const;
137 
138  virtual void AfterConvergence(const VectorHandler& X,
139  const VectorHandler& XP);
140 
141  void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
142  *piNumRows = NumDof;
143  *piNumCols = NumDof;
144  if (fc) {
145  *piNumRows += fc->iGetNumDof();
146  *piNumCols += fc->iGetNumDof();
147  }
148  };
149 
150 
152  doublereal dCoef,
153  const VectorHandler& XCurr,
154  const VectorHandler& XPrimeCurr);
156  doublereal dCoef,
157  const VectorHandler& XCurr,
158  const VectorHandler& XPrimeCurr);
159 
160  DofOrder::Order GetEqType(unsigned int i) const;
161 
162  void OutputPrepare(OutputHandler &OH);
163  void Output(OutputHandler& OH) const;
164 
165 
166  /* funzioni usate nell'assemblaggio iniziale */
167 
168  virtual unsigned int iGetInitialNumDof(void) const {
169  return 10;
170  };
171  virtual void InitialWorkSpaceDim(integer* piNumRows,
172  integer* piNumCols) const {
173  *piNumRows = 34;
174  *piNumCols = 34;
175  };
176 
177  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
179  const VectorHandler& XCurr);
180 
181  /* Contributo al residuo durante l'assemblaggio iniziale */
183  const VectorHandler& XCurr);
184 
185  /* Dati privati */
186  virtual unsigned int iGetNumPrivData(void) const;
187  virtual unsigned int iGetPrivDataIdx(const char *s) const;
188  virtual doublereal dGetPrivData(unsigned int i) const;
189 
190  /* *******PER IL SOLUTORE PARALLELO******** */
191  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
192  utile per l'assemblaggio della matrice di connessione fra i dofs */
193  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
194  connectedNodes.resize(2);
195  connectedNodes[0] = pNode1;
196  connectedNodes[1] = pNode2;
197  };
198  /* ************************************************ */
199 };
200 
201 /* PlaneHingeJoint - end */
202 
203 
204 /* PlaneRotationJoint - begin */
205 
206 class PlaneRotationJoint : virtual public Elem, public Joint {
207  private:
208  /* Cerniera piana - asse di rotazione dato dall'asse 3 del sistema di
209  * riferimento della cerniera. Tale sistema e' noto relativamente ai due
210  * nodi. In particolare rispetto al nodo 1 la trasformazione dal sistema
211  * di riferimento della cerniera al sistema globale e': R1*R1h, mentre per
212  * il nodo 2 la medesima trasformazion e': R2*R2h.
213  * I vettori d1 e d2 esprimono, nel sistema di riferimento dei rispettivi
214  * nodi, la distanza della cerniera dai nodi stessi.
215  * I vettori F, M esprimono le reazioni vincolari di forza e coppia. */
221  mutable int NTheta;
223 #ifdef USE_NETCDF
224  NcVar *Var_Phi;
225  NcVar *Var_Omega;
226 #endif // USE_NETCDF
227 
228  protected:
230 
231  public:
232  /* Costruttore non banale */
233  PlaneRotationJoint(unsigned int uL, const DofOwner* pDO,
234  const StructNode* pN1, const StructNode* pN2,
235  const Mat3x3& R1hTmp, const Mat3x3& R2hTmp,
236  const OrientationDescription& od,
237  flag fOut);
238 
239  /* Distruttore */
240  ~PlaneRotationJoint(void);
241 
242  /* Contributo al file di restart */
243  virtual std::ostream& Restart(std::ostream& out) const;
244 
245  /* Tipo di Joint */
246  virtual Joint::Type GetJointType(void) const {
247  return Joint::PLANEROTATION;
248  };
249 
250  virtual unsigned int iGetNumDof(void) const {
251  return 2;
252  };
253 
254  virtual std::ostream& DescribeDof(std::ostream& out,
255  const char *prefix = "",
256  bool bInitial = false) const;
257 
258  virtual void DescribeDof(std::vector<std::string>& desc,
259  bool bInitial = false, int i = -1) const;
260 
261  virtual std::ostream& DescribeEq(std::ostream& out,
262  const char *prefix = "",
263  bool bInitial = false) const;
264 
265  virtual void DescribeEq(std::vector<std::string>& desc,
266  bool bInitial = false, int i = -1) const;
267 
268  DofOrder::Order GetDofType(unsigned int i) const {
269  ASSERT(i >= 0 && i < 2);
270  return DofOrder::ALGEBRAIC;
271  };
272 
273  virtual void SetValue(DataManager *pDM,
275  SimulationEntity::Hints *ph = 0);
276 
277  virtual Hint *
278  ParseHint(DataManager *pDM, const char *s) const;
279 
280  virtual void AfterConvergence(const VectorHandler& X,
281  const VectorHandler& XP);
282 
283  void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
284  *piNumRows = 3+3+2;
285  *piNumCols = 3+3+2;
286  };
287 
288 
290  doublereal dCoef,
291  const VectorHandler& XCurr,
292  const VectorHandler& XPrimeCurr);
294  doublereal dCoef,
295  const VectorHandler& XCurr,
296  const VectorHandler& XPrimeCurr);
297 
298  DofOrder::Order GetEqType(unsigned int i) const;
299 
300  void OutputPrepare(OutputHandler &OH);
301  void Output(OutputHandler& OH) const;
302 
303 
304  /* funzioni usate nell'assemblaggio iniziale */
305 
306  virtual unsigned int iGetInitialNumDof(void) const {
307  return 2+2;
308  };
309  virtual void InitialWorkSpaceDim(integer* piNumRows,
310  integer* piNumCols) const {
311  *piNumRows = 3+3+3+3+2+2;
312  *piNumCols = 3+3+3+3+2+2;
313  };
314 
315  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
317  const VectorHandler& XCurr);
318 
319  /* Contributo al residuo durante l'assemblaggio iniziale */
321  const VectorHandler& XCurr);
322 
323  /* Dati privati */
324  virtual unsigned int iGetNumPrivData(void) const;
325  virtual unsigned int iGetPrivDataIdx(const char *s) const;
326  virtual doublereal dGetPrivData(unsigned int i) const;
327 
328  /* *******PER IL SOLUTORE PARALLELO******** */
329  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
330  utile per l'assemblaggio della matrice di connessione fra i dofs */
331  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
332  connectedNodes.resize(2);
333  connectedNodes[0] = pNode1;
334  connectedNodes[1] = pNode2;
335  };
336  /* ************************************************ */
337 };
338 
339 /* PlaneRotationJoint - end */
340 
341 
342 /* AxialRotationJoint - begin */
343 
344 class AxialRotationJoint : virtual public Elem,
345 public Joint, public DriveOwner {
346  private:
347  /* Rotazione assiale attorno ad una cerniera piana -
348  * asse di rotazione dato dall'asse 3 del sistema di
349  * riferimento della cerniera. Tale sistema e' noto relativamente ai due
350  * nodi. In particolare rispetto al nodo 1 la trasformazione dal sistema
351  * di riferimento della cerniera al sistema globale e': R1*R1h, mentre per
352  * il nodo 2 la medesima trasformazione e': R2*R2h.
353  * I vettori d1 e d2 esprimono, nel sistema di riferimento dei rispettivi
354  * nodi, la distanza della cerniera dai nodi stessi.
355  * I vettori F, M esprimono le reazioni vincolari di forza e coppia.
356  * La velocita' di rotazione e' imposta attraverso un driver. */
365  mutable int NTheta;
367 
368 #ifdef USE_NETCDF
369  NcVar *Var_Phi;
370  NcVar *Var_Omega;
371 // NcVar *Var_MFR;
372 // NcVar *Var_MU;
373 #endif // USE_NETCDF
374 
375  /* friction related data */
379  const doublereal r;
381  static const unsigned int NumSelfDof;
382  static const unsigned int NumDof;
383  /* end of friction related data */
384 
385  protected:
387 
388  public:
389  /* Costruttore non banale */
390  AxialRotationJoint(unsigned int uL, const DofOwner* pDO,
391  const StructNode* pN1, const StructNode* pN2,
392  const Vec3& dTmp1, const Vec3& dTmp2,
393  const Mat3x3& R1hTmp, const Mat3x3& R2hTmp,
394  const DriveCaller* pDC,
395  const OrientationDescription& od,
396  flag fOut,
397  const doublereal rr = 0.,
398  const doublereal pref = 0.,
399  BasicShapeCoefficient *const sh = 0,
400  BasicFriction *const f = 0);
401 
402  /* Distruttore */
403  ~AxialRotationJoint(void);
404 
405  /* Tipo di Joint */
406  virtual Joint::Type GetJointType(void) const {
407  return Joint::AXIALROTATION;
408  };
409 
410  /* Contributo al file di restart */
411  virtual std::ostream& Restart(std::ostream& out) const;
412 
413  virtual unsigned int iGetNumDof(void) const {
414  unsigned int i = NumSelfDof;
415  if (fc) {
416  i+=fc->iGetNumDof();
417  }
418  return i;
419  };
420 
421  virtual std::ostream& DescribeDof(std::ostream& out,
422  const char *prefix = "",
423  bool bInitial = false) const;
424 
425  virtual void DescribeDof(std::vector<std::string>& desc,
426  bool bInitial = false, int i = -1) const;
427 
428  virtual std::ostream& DescribeEq(std::ostream& out,
429  const char *prefix = "",
430  bool bInitial = false) const;
431 
432  virtual void DescribeEq(std::vector<std::string>& desc,
433  bool bInitial = false, int i = -1) const;
434 
435  DofOrder::Order GetDofType(unsigned int i) const {
436  ASSERT(i >= 0 && i < iGetNumDof());
437  if (i<NumSelfDof) {
438  return DofOrder::ALGEBRAIC;
439  } else {
440  return fc->GetDofType(i-NumSelfDof);
441  }
442  };
443 
444  virtual void SetValue(DataManager *pDM,
446  SimulationEntity::Hints *ph = 0);
447 
448  virtual Hint *
449  ParseHint(DataManager *pDM, const char *s) const;
450 
451  virtual void AfterConvergence(const VectorHandler& X,
452  const VectorHandler& XP);
453 
454  void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
455  *piNumRows = NumDof;
456  *piNumCols = NumDof;
457  if (fc) {
458  *piNumRows += fc->iGetNumDof();
459  *piNumCols += fc->iGetNumDof();
460  }
461  };
462 
463 
465  doublereal dCoef,
466  const VectorHandler& XCurr,
467  const VectorHandler& XPrimeCurr);
469  doublereal dCoef,
470  const VectorHandler& XCurr,
471  const VectorHandler& XPrimeCurr);
472 
473  DofOrder::Order GetEqType(unsigned int i) const;
474 
475  void OutputPrepare(OutputHandler &OH);
476  void Output(OutputHandler& OH) const;
477 
478 
479  /* funzioni usate nell'assemblaggio iniziale */
480 
481  virtual unsigned int iGetInitialNumDof(void) const {
482  return 11;
483  };
484  virtual void InitialWorkSpaceDim(integer* piNumRows,
485  integer* piNumCols) const {
486  *piNumRows = 35;
487  *piNumCols = 35;
488  };
489 
490  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
492  const VectorHandler& XCurr);
493 
494  /* Contributo al residuo durante l'assemblaggio iniziale */
496  const VectorHandler& XCurr);
497 
498  /* Dati privati */
499  virtual unsigned int iGetNumPrivData(void) const;
500  virtual unsigned int iGetPrivDataIdx(const char *s) const;
501  virtual doublereal dGetPrivData(unsigned int i) const;
502 
503  /* *******PER IL SOLUTORE PARALLELO******** */
504  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
505  utile per l'assemblaggio della matrice di connessione fra i dofs */
506  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
507  connectedNodes.resize(2);
508  connectedNodes[0] = pNode1;
509  connectedNodes[1] = pNode2;
510  };
511  /* ************************************************ */
512 };
513 
514 /* AxialRotationJoint - end */
515 
516 
517 /* PlanePinJoint - begin */
518 
519 /* Incastro con liberta' di rotazione su un asse */
520 
521 class PlanePinJoint : virtual public Elem, public Joint {
522  private:
531  mutable int NTheta;
533 
534  public:
535  /* Costruttore non banale */
536  PlanePinJoint(unsigned int uL, const DofOwner* pDO,
537  const StructNode* pN,
538  const Vec3& X0Tmp, const Mat3x3& R0Tmp,
539  const Vec3& dTmp, const Mat3x3& RhTmp,
540  flag fOut, const bool _calcInitdTheta,
541  const doublereal initDTheta);
542 
543  ~PlanePinJoint(void);
544 
545  /* Tipo di Joint */
546  virtual Joint::Type GetJointType(void) const {
547  return Joint::PIN;
548  };
549 
550  /* legge lo sato iniziale*/
551  virtual void ReadInitialState(MBDynParser& HP);
552 
553  /* Contributo al file di restart */
554  virtual std::ostream& Restart(std::ostream& out) const;
555 
556  virtual unsigned int iGetNumDof(void) const {
557  return 5;
558  };
559 
560  virtual std::ostream& DescribeDof(std::ostream& out,
561  const char *prefix = "",
562  bool bInitial = false) const;
563 
564  virtual void DescribeDof(std::vector<std::string>& desc,
565  bool bInitial = false, int i = -1) const;
566 
567  virtual std::ostream& DescribeEq(std::ostream& out,
568  const char *prefix = "",
569  bool bInitial = false) const;
570 
571  virtual void DescribeEq(std::vector<std::string>& desc,
572  bool bInitial = false, int i = -1) const;
573 
574  virtual DofOrder::Order GetDofType(unsigned int i) const {
575  ASSERT(i >= 0 && i < 5);
576  return DofOrder::ALGEBRAIC;
577  };
578 
579  DofOrder::Order GetEqType(unsigned int i) const;
580 
581  virtual void SetValue(DataManager *pDM,
583  SimulationEntity::Hints *ph = 0);
584 
585  virtual Hint *
586  ParseHint(DataManager *pDM, const char *s) const;
587 
588  virtual void AfterConvergence(const VectorHandler& X,
589  const VectorHandler& XP);
590 
591  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
592  *piNumRows = 11;
593  *piNumCols = 11;
594  };
595 
597  doublereal dCoef,
598  const VectorHandler& XCurr,
599  const VectorHandler& XPrimeCurr);
601  doublereal dCoef,
602  const VectorHandler& XCurr,
603  const VectorHandler& XPrimeCurr);
604 
605  virtual void Output(OutputHandler& OH) const;
606 
607 
608  /* funzioni usate nell'assemblaggio iniziale */
609 
610  virtual unsigned int iGetInitialNumDof(void) const {
611  return 10;
612  };
613  virtual void InitialWorkSpaceDim(integer* piNumRows,
614  integer* piNumCols) const {
615  *piNumRows = 22;
616  *piNumCols = 22;
617  };
618 
619  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
621  const VectorHandler& XCurr);
622 
623  /* Contributo al residuo durante l'assemblaggio iniziale */
625  const VectorHandler& XCurr);
626 
627  /* Dati privati */
628  virtual unsigned int iGetNumPrivData(void) const;
629  virtual unsigned int iGetPrivDataIdx(const char *s) const;
630  virtual doublereal dGetPrivData(unsigned int i) const;
631 
632  /* *******PER IL SOLUTORE PARALLELO******** */
633  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
634  utile per l'assemblaggio della matrice di connessione fra i dofs */
635  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
636  connectedNodes.resize(1);
637  connectedNodes[0] = pNode;
638  };
639  /* ************************************************ */
640 };
641 
642 /* PlanePinJoint - end */
643 
644 #endif /* PLANEJ_H */
645 
Definition: hint.h:38
virtual unsigned int iGetNumDof(void) const
Definition: planej.h:250
virtual Joint::Type GetJointType(void) const
Definition: planej.h:109
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:283
const doublereal preF
Definition: planej.h:75
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: planej.cc:432
const StructNode * pNode2
Definition: planej.h:358
Type
Definition: joint.h:66
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:1947
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:4457
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:4358
doublereal M3
Definition: planej.h:77
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:4111
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:540
static void sh(int signum)
long int flag
Definition: mbdyn.h:43
virtual unsigned int iGetInitialNumDof(void) const
Definition: planej.h:481
OrientationDescription od
Definition: planej.h:229
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: planej.cc:4260
virtual Joint::Type GetJointType(void) const
Definition: planej.h:406
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: planej.cc:4305
Definition: matvec3.h:98
void OutputPrepare(OutputHandler &OH)
Definition: planej.cc:949
virtual unsigned int iGetInitialNumDof(void) const
Definition: planej.h:610
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:4003
static const unsigned int NumDof
Definition: planej.h:79
void Output(OutputHandler &OH) const
Definition: planej.cc:3391
PlaneRotationJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &R1hTmp, const Mat3x3 &R2hTmp, const OrientationDescription &od, flag fOut)
Definition: planej.cc:1533
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:98
virtual unsigned int iGetInitialNumDof(void) const
Definition: planej.h:306
virtual std::ostream & Restart(std::ostream &out) const
Definition: planej.cc:1796
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: planej.cc:1772
doublereal dTheta
Definition: planej.h:366
const StructNode * pNode2
Definition: planej.h:54
BasicShapeCoefficient *const Sh_c
Definition: planej.h:73
virtual Joint::Type GetJointType(void) const
Definition: planej.h:246
~PlaneRotationJoint(void)
Definition: planej.cc:1557
const doublereal r
Definition: planej.h:76
virtual unsigned int iGetNumDof(void) const
Definition: planej.cc:917
OrientationDescription
Definition: matvec3.h:1597
doublereal dThetaWrapped
Definition: planej.h:366
int NTheta
Definition: planej.h:531
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:813
void Output(OutputHandler &OH) const
Definition: planej.cc:975
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: planej.h:193
BasicFriction *const fc
Definition: planej.h:377
DofOrder::Order GetEqType(unsigned int i) const
Definition: planej.cc:937
virtual unsigned int iGetNumPrivData(void) const
Definition: planej.cc:1440
std::vector< Hint * > Hints
Definition: simentity.h:89
void OutputPrepare(OutputHandler &OH)
Definition: planej.cc:3365
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:591
AxialRotationJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN1, const StructNode *pN2, const Vec3 &dTmp1, const Vec3 &dTmp2, const Mat3x3 &R1hTmp, const Mat3x3 &R2hTmp, const DriveCaller *pDC, const OrientationDescription &od, flag fOut, const doublereal rr=0., const doublereal pref=0., BasicShapeCoefficient *const sh=0, BasicFriction *const f=0)
Definition: planej.cc:2521
~PlaneHingeJoint(void)
Definition: planej.cc:86
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: planej.cc:1720
bool calcInitdTheta
Definition: planej.h:68
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:454
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: planej.cc:374
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: planej.cc:4529
virtual Joint::Type GetJointType(void) const
Definition: planej.h:546
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:613
doublereal dThetaWrapped
Definition: planej.h:222
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: planej.h:506
DofOrder::Order GetDofType(unsigned int i) const
Definition: planej.cc:927
const StructNode * pNode
Definition: planej.h:523
Mat3x3 Rh
Definition: planej.h:527
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: planej.cc:1333
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: planej.cc:1079
const doublereal preF
Definition: planej.h:378
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: planej.cc:2853
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:3248
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:171
void OutputPrepare(OutputHandler &OH)
Definition: planej.cc:2027
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: planej.cc:2347
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:2705
virtual unsigned int iGetNumPrivData(void) const
Definition: planej.cc:2432
virtual unsigned int iGetNumPrivData(void) const
Definition: planej.cc:3887
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: planej.cc:3773
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: planej.cc:2912
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:141
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: planej.cc:3893
static const unsigned int NumDof
Definition: planej.h:382
BasicFriction *const fc
Definition: planej.h:74
virtual void Output(OutputHandler &OH) const
Definition: planej.cc:4513
virtual std::ostream & Restart(std::ostream &out) const
Definition: planej.cc:519
virtual unsigned int iGetNumPrivData(void) const
Definition: planej.cc:4786
bool calcInitdTheta
Definition: planej.h:530
virtual doublereal dGetPrivData(unsigned int i) const
Definition: planej.cc:3930
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:1642
Mat3x3 R0
Definition: planej.h:525
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: planej.cc:1750
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: planej.cc:473
DofOrder::Order GetEqType(unsigned int i) const
Definition: planej.cc:4297
virtual DofOrder::Order GetDofType(unsigned int i) const =0
doublereal dTheta
Definition: planej.h:222
DofOrder::Order GetDofType(unsigned int i) const
Definition: planej.h:268
~AxialRotationJoint(void)
Definition: planej.cc:2554
#define ASSERT(expression)
Definition: colamd.c:977
PlanePinJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN, const Vec3 &X0Tmp, const Mat3x3 &R0Tmp, const Vec3 &dTmp, const Mat3x3 &RhTmp, flag fOut, const bool _calcInitdTheta, const doublereal initDTheta)
Definition: planej.cc:3977
DofOrder::Order GetDofType(unsigned int i) const
Definition: planej.h:435
const doublereal r
Definition: planej.h:379
OrientationDescription od
Definition: planej.h:83
doublereal M3
Definition: planej.h:380
virtual doublereal dGetPrivData(unsigned int i) const
Definition: planej.cc:4829
virtual void ReadInitialState(MBDynParser &HP)
Definition: planej.cc:510
virtual unsigned int iGetNumDof(void) const
Definition: planej.h:413
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:1812
BasicShapeCoefficient *const Sh_c
Definition: planej.h:376
virtual unsigned int iGetNumDof(void) const =0
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: planej.h:635
doublereal dThetaWrapped
Definition: planej.h:70
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:484
OrientationDescription od
Definition: planej.h:386
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: planej.cc:2952
~PlanePinJoint(void)
Definition: planej.cc:3996
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: planej.h:309
virtual std::ostream & Restart(std::ostream &out) const
Definition: planej.cc:4336
Definition: elem.h:75
SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: planej.cc:4691
virtual unsigned int iGetNumDof(void) const
Definition: planej.h:556
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: planej.cc:1446
virtual doublereal dGetPrivData(unsigned int i) const
Definition: planej.cc:1482
doublereal dThetaWrapped
Definition: planej.h:532
Mat3x3 R2h
Definition: planej.h:58
void Output(OutputHandler &OH) const
Definition: planej.cc:2045
static const unsigned int NumSelfDof
Definition: planej.h:381
virtual std::ostream & Restart(std::ostream &out) const
Definition: planej.cc:2989
virtual unsigned int iGetInitialNumDof(void) const
Definition: planej.h:168
const StructNode * pNode1
Definition: planej.h:357
PlaneHingeJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN1, const StructNode *pN2, const Vec3 &dTmp1, const Vec3 &dTmp2, const Mat3x3 &R1hTmp, const Mat3x3 &R2hTmp, const OrientationDescription &od, flag fOut, const bool _calcInitdTheta=true, const doublereal initDTheta=0., const doublereal rr=0., const doublereal pref=0., BasicShapeCoefficient *const sh=0, BasicFriction *const f=0)
Definition: planej.cc:49
Definition: joint.h:50
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: planej.h:331
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: planej.cc:3007
const StructNode * pNode2
Definition: planej.h:217
virtual void ReadInitialState(MBDynParser &HP)
Definition: planej.cc:4329
doublereal dTheta
Definition: planej.h:532
double doublereal
Definition: colamd.c:52
DofOrder::Order GetEqType(unsigned int i) const
Definition: planej.cc:3351
const StructNode * pNode1
Definition: planej.h:216
Mat3x3 R1h
Definition: planej.h:56
long int integer
Definition: colamd.c:51
virtual doublereal dGetPrivData(unsigned int i) const
Definition: planej.cc:2472
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:1564
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:237
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: planej.cc:4792
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: planej.cc:3494
const StructNode * pNode1
Definition: planej.h:53
DofOrder::Order GetEqType(unsigned int i) const
Definition: planej.cc:2018
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: planej.h:574
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: planej.cc:2567
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: planej.cc:2438
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: planej.cc:4219
doublereal dTheta
Definition: planej.h:70
static const unsigned int NumSelfDof
Definition: planej.h:78
VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: planej.cc:2133