MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
vehj.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/vehj.h,v 1.62 2017/07/23 15:09:35 zanoni 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 /* Deformable hinges */
33 
34 
35 #ifndef VEHJ_H
36 #define VEHJ_H
37 
38 #include "joint.h"
39 #include "constltp.h"
40 
41 extern const char* psConstLawNames[];
42 
43 /* DeformableHingeJoint - begin */
44 
46 virtual public Elem, public Joint, public ConstitutiveLaw3DOwner {
47 protected:
50  mutable Mat3x3 tilde_R1h;
51  mutable Mat3x3 tilde_R2h;
52 
54 
55 private:
56 #ifdef USE_NETCDF
57  NcVar *Var_Phi;
58  NcVar *Var_Omega;
59 #endif // USE_NETCDF
60 
61 protected:
62  bool bFirstRes;
63 
65 
68 
69  /* for invariant stuff */
72 
73  /* Jacobian matrix helpers */
74  virtual void
76 
77  void
79 
80  void
82 
83  virtual void
85  FullSubMatrixHandler& WMB, doublereal dCoef);
86 
87  void
89  FullSubMatrixHandler& WMB, doublereal dCoef);
90 
91  /* output helper */
92  void OutputInv(OutputHandler& OH) const;
93 
94  /* priv data helper */
96  dGetPrivDataInv(unsigned int i) const;
97  virtual void AfterPredict(void) = 0;
98 
99 public:
100  /* Costruttore non banale */
101  DeformableHingeJoint(unsigned int uL,
102  const DofOwner* pDO,
103  const ConstitutiveLaw3D* pCL,
104  const StructNode* pN1,
105  const StructNode* pN2,
106  const Mat3x3& tilde_R1h,
107  const Mat3x3& tilde_R2h,
108  const OrientationDescription& od,
109  flag fOut);
110 
111  /* Distruttore */
112  virtual ~DeformableHingeJoint(void);
113 
114  /* Tipo di Joint */
115  virtual Joint::Type GetJointType(void) const {
116  return Joint::DEFORMABLEHINGE;
117  };
118 
119  /* Contributo al file di restart */
120  virtual std::ostream& Restart(std::ostream& out) const;
121 
122  void OutputPrepare(OutputHandler& OH);
123  virtual void Output(OutputHandler& OH) const;
124 
125  /* Aggiorna le deformazioni ecc. */
126  virtual void AfterPredict(VectorHandler& X, VectorHandler& XP);
127 
128  void SetValue(DataManager *pDM,
130  SimulationEntity::Hints *ph = 0);
131  virtual void SetInitialValue(VectorHandler& /* X */ );
132 
133  virtual Hint *
134  ParseHint(DataManager *pDM, const char *s) const;
135 
136  /* Tipo di DeformableHinge */
137  virtual ConstLawType::Type GetConstLawType(void) const = 0;
138 
139  virtual unsigned int iGetNumDof(void) const {
140  return 0;
141  };
142 
143  virtual void
144  WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
145  *piNumRows = 6;
146  *piNumCols = 6;
147  };
148 
149  /* inverse dynamics capable element */
150  virtual bool bInverseDynamics(void) const;
151 
152  /* funzioni usate nell'assemblaggio iniziale */
153 
154  virtual unsigned int iGetInitialNumDof(void) const {
155  return 0;
156  };
157 
158  /* *******PER IL SOLUTORE PARALLELO******** */
159  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
160  * utile per l'assemblaggio della matrice di connessione fra i dofs */
161  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
162  connectedNodes.resize(2);
163  connectedNodes[0] = pNode1;
164  connectedNodes[1] = pNode2;
165  };
166  /* ************************************************ */
167 
168  virtual unsigned int iGetNumPrivData(void) const;
169  virtual unsigned int iGetPrivDataIdx(const char *s) const;
170  virtual doublereal dGetPrivData(unsigned int i) const;
171 };
172 
173 /* DeformableHingeJoint - end */
174 
175 
176 /* ElasticHingeJoint - begin */
177 
178 class ElasticHingeJoint : virtual public Elem, public DeformableHingeJoint {
179 protected:
182 
183  virtual void AfterPredict(void);
184  virtual void AssMat(FullSubMatrixHandler& WM, doublereal dCoef);
185  virtual void AssVec(SubVectorHandler& WorkVec);
186 
187 public:
188  ElasticHingeJoint(unsigned int uL,
189  const DofOwner* pDO,
190  const ConstitutiveLaw3D* pCL,
191  const StructNode* pN1,
192  const StructNode* pN2,
193  const Mat3x3& tilde_R1h,
194  const Mat3x3& tilde_R2h,
195  const OrientationDescription& od,
196  flag fOut);
197 
198  virtual ~ElasticHingeJoint(void);
199 
200  virtual void
201  AfterConvergence(const VectorHandler& X, const VectorHandler& XP);
202 
203  /* Tipo di DeformableHinge */
204  virtual ConstLawType::Type GetConstLawType(void) const {
205  return ConstLawType::ELASTIC;
206  };
207 
208 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
209  virtual void SetValue(DataManager *pDM,
211  SimulationEntity::Hints *ph = 0)
212  {
213  DeformableHingeJoint::SetValue(pDM, X, XP, ph);
214  };
215 
216  virtual Hint *
217  ParseHint(DataManager *pDM, const char *s) const
218  {
219  return DeformableHingeJoint::ParseHint(pDM, s);
220  };
221 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
222 
223  /* assemblaggio jacobiano */
224  virtual VariableSubMatrixHandler&
226  doublereal dCoef,
227  const VectorHandler& XCurr,
228  const VectorHandler& XPrimeCurr);
229 
230  /* assemblaggio jacobiano */
231  virtual void
233  VariableSubMatrixHandler& WorkMatB,
234  const VectorHandler& XCurr,
235  const VectorHandler& XPrimeCurr);
236 
237  /* assemblaggio residuo */
238  virtual SubVectorHandler&
239  AssRes(SubVectorHandler& WorkVec,
240  doublereal dCoef,
241  const VectorHandler& XCurr,
242  const VectorHandler& XPrimeCurr);
243 
244  /* Inverse Dynamics Jacobian matrix assembly */
247  const VectorHandler& XCurr);
248 
249  /* Inverse Dynamics residual assembly */
251  AssRes(SubVectorHandler& WorkVec,
252  const VectorHandler& XCurr,
253  const VectorHandler& XPrimeCurr,
254  const VectorHandler& XPrimePrimeCurr,
256 
257  /* Inverse Dynamics update */
259 
260  virtual void AfterConvergence(const VectorHandler& X,
261  const VectorHandler& XP,
262  const VectorHandler& XPP);
263 
264  virtual void InitialWorkSpaceDim(integer* piNumRows,
265  integer* piNumCols) const {
266  *piNumRows = 6;
267  *piNumCols = 6;
268  };
269 
270  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
271  virtual VariableSubMatrixHandler&
273  const VectorHandler& XCurr);
274 
275  /* Contributo al residuo durante l'assemblaggio iniziale */
276  virtual SubVectorHandler&
277  InitialAssRes(SubVectorHandler& WorkVec, const VectorHandler& XCurr);
278 
279 #if 0
280  virtual unsigned int iGetNumPrivData(void) const {
282  };
283 
284  virtual unsigned int iGetPrivDataIdx(const char *s) const {
286  };
287 
288  virtual doublereal dGetPrivData(unsigned int i) const {
290  };
291 #endif
292 };
293 
294 /* ElasticHingeJoint - end */
295 
296 
297 /* ElasticHingeJointInv - begin */
298 
299 class ElasticHingeJointInv : virtual public Elem, public ElasticHingeJoint {
300 protected:
301  virtual void
303 
304  /* AssMatMDE is OK as MDE is updated fine by AfterPredict();
305  * AssMatMDEPrime is not needed */
306 
307  virtual void AfterPredict(void);
308  virtual void AssVec(SubVectorHandler& WorkVec);
309 
310 public:
311  ElasticHingeJointInv(unsigned int uL,
312  const DofOwner* pDO,
313  const ConstitutiveLaw3D* pCL,
314  const StructNode* pN1,
315  const StructNode* pN2,
316  const Mat3x3& tilde_R1h,
317  const Mat3x3& tilde_R2h,
318  const OrientationDescription& od,
319  flag fOut);
320 
321  virtual ~ElasticHingeJointInv(void);
322 
323  virtual void Output(OutputHandler& OH) const;
324 
325  virtual doublereal dGetPrivData(unsigned int i) const;
326 
327 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
328  virtual void
329  AfterConvergence(const VectorHandler& X, const VectorHandler& XP)
330  {
332  };
333 
334  virtual void SetValue(DataManager *pDM,
336  SimulationEntity::Hints *ph = 0)
337  {
338  ElasticHingeJoint::SetValue(pDM, X, XP, ph);
339  };
340 
341  virtual Hint *
342  ParseHint(DataManager *pDM, const char *s) const
343  {
344  return ElasticHingeJoint::ParseHint(pDM, s);
345  };
346 
347  virtual unsigned int iGetNumPrivData(void) const {
349  };
350 
351  virtual unsigned int iGetPrivDataIdx(const char *s) const {
353  };
354 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
355 };
356 
357 /* ElasticHingeJointInv - end */
358 
359 
360 /* ViscousHingeJoint - begin */
361 
362 class ViscousHingeJoint : virtual public Elem, public DeformableHingeJoint {
363 protected:
365 
366  virtual void AfterPredict(void);
367  virtual void AssMats(FullSubMatrixHandler& WMA,
369  doublereal dCoef);
370  virtual void AssVec(SubVectorHandler& WorkVec);
371 
372 public:
373  ViscousHingeJoint(unsigned int uL,
374  const DofOwner* pDO,
375  const ConstitutiveLaw3D* pCL,
376  const StructNode* pN1,
377  const StructNode* pN2,
378  const Mat3x3& tilde_R1h,
379  const Mat3x3& tilde_R2h,
380  const OrientationDescription& od,
381  flag fOut);
382 
383  virtual ~ViscousHingeJoint(void);
384 
385  virtual void
386  AfterConvergence(const VectorHandler& X, const VectorHandler& XP);
387 
388  /* Tipo di DeformableHinge */
389  virtual ConstLawType::Type GetConstLawType(void) const {
390  return ConstLawType::VISCOUS;
391  };
392 
393 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
394  virtual void SetValue(DataManager *pDM,
396  SimulationEntity::Hints *ph = 0)
397  {
398  DeformableHingeJoint::SetValue(pDM, X, XP, ph);
399  };
400 
401  virtual Hint *
402  ParseHint(DataManager *pDM, const char *s) const
403  {
404  return DeformableHingeJoint::ParseHint(pDM, s);
405  };
406 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
407 
408  /* assemblaggio jacobiano */
409  virtual VariableSubMatrixHandler&
411  doublereal dCoef,
412  const VectorHandler& XCurr,
413  const VectorHandler& XPrimeCurr);
414 
415  /* assemblaggio jacobiano */
416  virtual void
418  VariableSubMatrixHandler& WorkMatB,
419  const VectorHandler& XCurr,
420  const VectorHandler& XPrimeCurr);
421 
422  /* assemblaggio residuo */
423  virtual SubVectorHandler&
424  AssRes(SubVectorHandler& WorkVec,
425  doublereal dCoef,
426  const VectorHandler& XCurr,
427  const VectorHandler& XPrimeCurr);
428 
429  /* Inverse Dynamics residual assembly */
431  AssRes(SubVectorHandler& WorkVec,
432  const VectorHandler& XCurr,
433  const VectorHandler& XPrimeCurr,
434  const VectorHandler& XPrimePrimeCurr,
436 
437  virtual void InitialWorkSpaceDim(integer* piNumRows,
438  integer* piNumCols) const {
439  *piNumRows = 6;
440  *piNumCols = 12;
441  };
442 
443  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
444  virtual VariableSubMatrixHandler&
446  const VectorHandler& XCurr);
447 
448  /* Contributo al residuo durante l'assemblaggio iniziale */
449  virtual SubVectorHandler&
450  InitialAssRes(SubVectorHandler& WorkVec, const VectorHandler& XCurr);
451 
452 #if 0
453  virtual unsigned int iGetNumPrivData(void) const {
455  };
456 
457  virtual unsigned int iGetPrivDataIdx(const char *s) const {
459  };
460 
461  virtual doublereal dGetPrivData(unsigned int i) const {
463  };
464 #endif
465 };
466 
467 /* ViscousHingeJoint - end */
468 
469 
470 /* ViscousHingeJointInv - begin */
471 
472 class ViscousHingeJointInv : virtual public Elem, public ViscousHingeJoint {
473 protected:
474  /* AssMatMDEPrime is not needed */
475  virtual void
477  virtual void
479  FullSubMatrixHandler& WMB, doublereal dCoef);
480 
481  virtual void AfterPredict(void);
482  virtual void AssVec(SubVectorHandler& WorkVec);
483 
484 public:
485  ViscousHingeJointInv(unsigned int uL,
486  const DofOwner* pDO,
487  const ConstitutiveLaw3D* pCL,
488  const StructNode* pN1,
489  const StructNode* pN2,
490  const Mat3x3& tilde_R1h,
491  const Mat3x3& tilde_R2h,
492  const OrientationDescription& od,
493  flag fOut);
494 
495  virtual ~ViscousHingeJointInv(void);
496 
497  virtual void Output(OutputHandler& OH) const;
498 
499  virtual doublereal dGetPrivData(unsigned int i) const;
500 
501 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
502  virtual void
503  AfterConvergence(const VectorHandler& X, const VectorHandler& XP)
504  {
506  };
507 
508  virtual void SetValue(DataManager *pDM,
510  SimulationEntity::Hints *ph = 0)
511  {
512  DeformableHingeJoint::SetValue(pDM, X, XP, ph);
513  };
514 
515  virtual Hint *
516  ParseHint(DataManager *pDM, const char *s) const
517  {
518  return DeformableHingeJoint::ParseHint(pDM, s);
519  };
520 
521  virtual unsigned int iGetNumPrivData(void) const {
523  };
524 
525  virtual unsigned int iGetPrivDataIdx(const char *s) const {
527  };
528 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
529 };
530 
531 /* ViscousHingeJointInv - end */
532 
533 
534 /* ViscoElasticHingeJoint - begin */
535 
537 : virtual public Elem, public DeformableHingeJoint {
538 protected:
541 
543 
544  virtual void AssMats(FullSubMatrixHandler& WMA,
546  doublereal dCoef);
547 
548  virtual void AfterPredict(void);
549  virtual void AssVec(SubVectorHandler& WorkVec);
550 
551 public:
552  ViscoElasticHingeJoint(unsigned int uL,
553  const DofOwner* pDO,
554  const ConstitutiveLaw3D* pCL,
555  const StructNode* pN1,
556  const StructNode* pN2,
557  const Mat3x3& tilde_R1h,
558  const Mat3x3& tilde_R2h,
559  const OrientationDescription& od,
560  flag fOut);
561 
563 
564  virtual void
565  AfterConvergence(const VectorHandler& X, const VectorHandler& XP);
566 
567  /* Tipo di DeformableHinge */
568  virtual ConstLawType::Type GetConstLawType(void) const {
570  };
571 
572 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
573  virtual void SetValue(DataManager *pDM,
575  SimulationEntity::Hints *ph = 0)
576  {
577  DeformableHingeJoint::SetValue(pDM, X, XP, ph);
578  };
579 
580  virtual Hint *
581  ParseHint(DataManager *pDM, const char *s) const
582  {
583  return DeformableHingeJoint::ParseHint(pDM, s);
584  };
585 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
586 
587  /* assemblaggio jacobiano */
588  virtual VariableSubMatrixHandler&
590  doublereal dCoef,
591  const VectorHandler& XCurr,
592  const VectorHandler& XPrimeCurr);
593 
594  virtual void
596  VariableSubMatrixHandler& WorkMatB,
597  const VectorHandler& XCurr,
598  const VectorHandler& XPrimeCurr);
599 
600  /* assemblaggio residuo */
601  virtual SubVectorHandler&
602  AssRes(SubVectorHandler& WorkVec,
603  doublereal dCoef,
604  const VectorHandler& XCurr,
605  const VectorHandler& XPrimeCurr);
606 
607  /* Inverse Dynamics residual assembly */
609  AssRes(SubVectorHandler& WorkVec,
610  const VectorHandler& XCurr,
611  const VectorHandler& XPrimeCurr,
612  const VectorHandler& XPrimePrimeCurr,
614 
615  virtual void InitialWorkSpaceDim(integer* piNumRows,
616  integer* piNumCols) const {
617  *piNumRows = 6;
618  *piNumCols = 12;
619  };
620 
621  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
622  virtual VariableSubMatrixHandler&
624  const VectorHandler& XCurr);
625 
626  /* Contributo al residuo durante l'assemblaggio iniziale */
627  virtual SubVectorHandler&
628  InitialAssRes(SubVectorHandler& WorkVec, const VectorHandler& XCurr);
629 
630 #if 0
631  virtual unsigned int iGetNumPrivData(void) const {
633  };
634 
635  virtual unsigned int iGetPrivDataIdx(const char *s) const {
637  };
638 
639  virtual doublereal dGetPrivData(unsigned int i) const {
641  };
642 #endif
643 };
644 
645 /* ViscoElasticHingeJoint - end */
646 
647 /* ViscoElasticHingeJointInv - begin */
648 
650 : virtual public Elem, public ViscoElasticHingeJoint {
651 protected:
652  /* AssMatMDEPrime is not needed */
653  virtual void
655  virtual void
657  FullSubMatrixHandler& WMB, doublereal dCoef);
658 
659  virtual void AfterPredict(void);
660  virtual void AssVec(SubVectorHandler& WorkVec);
661 
662 public:
663  ViscoElasticHingeJointInv(unsigned int uL,
664  const DofOwner* pDO,
665  const ConstitutiveLaw3D* pCL,
666  const StructNode* pN1,
667  const StructNode* pN2,
668  const Mat3x3& tilde_R1h,
669  const Mat3x3& tilde_R2h,
670  const OrientationDescription& od,
671  flag fOut);
672 
674 
675  virtual void Output(OutputHandler& OH) const;
676 
677  virtual doublereal dGetPrivData(unsigned int i) const;
678 
679 #ifdef MBDYN_X_WORKAROUND_GCC_3_2
680  virtual void
681  AfterConvergence(const VectorHandler& X, const VectorHandler& XP)
682  {
684  };
685 
686  virtual void SetValue(DataManager *pDM,
688  SimulationEntity::Hints *ph = 0)
689  {
690  DeformableHingeJoint::SetValue(pDM, X, XP, ph);
691  };
692 
693  virtual Hint *
694  ParseHint(DataManager *pDM, const char *s) const
695  {
696  return DeformableHingeJoint::ParseHint(pDM, s);
697  };
698 
699  virtual unsigned int iGetNumPrivData(void) const {
701  };
702 
703  virtual unsigned int iGetPrivDataIdx(const char *s) const {
705  };
706 #endif /* MBDYN_X_WORKAROUND_GCC_3_2 */
707 };
708 
709 /* ViscoElasticHingeJointInv - end */
710 
711 
712 /* InvAngularCLR - begin */
713 
714 struct InvAngularCLR : public ConstitutiveLawRead<Vec3, Mat3x3> {
716  Read(const DataManager* pDM, MBDynParser& HP, ConstLawType::Type& CLType);
717 };
718 
719 /* InvAngularCLR - end */
720 
721 #endif /* VEHJ_H */
722 
Definition: hint.h:38
~ViscoElasticHingeJointInv(void)
Definition: vehj.cc:1713
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:1754
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:777
Type
Definition: joint.h:66
virtual ~ElasticHingeJoint(void)
Definition: vehj.cc:558
void Update(const VectorHandler &XCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
Definition: vehj.cc:763
long int flag
Definition: mbdyn.h:43
virtual void AssMats(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:1074
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: vehj.cc:1387
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: vehj.cc:1219
Definition: matvec3.h:98
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:1323
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:1309
Vec3 ThetaRef
Definition: vehj.h:180
virtual Joint::Type GetJointType(void) const
Definition: vehj.h:115
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:83
virtual void AfterPredict(void)
Definition: vehj.cc:861
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: simentity.cc:76
virtual void AssMats(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:1500
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: simentity.cc:142
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: vehj.cc:1653
ViscoElasticHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:1364
virtual unsigned int iGetNumPrivData(void) const
Definition: vehj.cc:408
virtual void AssMatMDEPrime(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:1761
ElasticHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:885
OrientationDescription
Definition: matvec3.h:1597
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: vehj.cc:1600
virtual ConstLawType::Type GetConstLawType(void) const
Definition: vehj.h:204
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:683
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: vehj.h:437
virtual ~ElasticHingeJointInv(void)
Definition: vehj.cc:900
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: vehj.cc:344
virtual unsigned int iGetNumDof(void) const
Definition: vehj.h:139
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: vehj.cc:386
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual void SetInitialValue(VectorHandler &)
Definition: vehj.cc:380
virtual doublereal dGetPrivData(unsigned int i) const
Definition: vehj.cc:943
Mat3x3 hat_I
Definition: vehj.h:70
virtual unsigned int iGetInitialNumDof(void) const
Definition: vehj.h:154
virtual doublereal dGetPrivData(unsigned int i) const
Definition: vehj.cc:470
virtual doublereal dGetPrivData(unsigned int i) const
Definition: vehj.cc:1805
const StructNode * pNode1
Definition: vehj.h:48
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:1001
virtual void Output(OutputHandler &OH) const
Definition: vehj.cc:1348
virtual void AssMatM(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:906
void AssMatMDE(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:113
ViscousHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:1262
ElasticHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:541
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: vehj.h:144
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:1769
doublereal dGetPrivDataInv(unsigned int i) const
Definition: vehj.cc:511
ViscousHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:953
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: vehj.cc:975
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:1511
OrientationDescription od
Definition: vehj.h:53
Mat3x3 hat_IT
Definition: vehj.h:71
virtual void AfterPredict(void)
Definition: vehj.cc:1719
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:912
virtual ConstLawType::Type GetConstLawType(void) const
Definition: vehj.h:568
virtual ConstLawType::Type GetConstLawType(void) const
Definition: vehj.h:389
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: vehj.cc:799
~ViscoElasticHingeJoint(void)
Definition: vehj.cc:1381
virtual void Output(OutputHandler &OH) const
Definition: vehj.cc:937
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:1572
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: vehj.h:615
virtual void AssMat(FullSubMatrixHandler &WM, doublereal dCoef)
Definition: vehj.cc:666
virtual void AfterPredict(void)
Definition: vehj.cc:642
DeformableHingeJoint(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:45
void AssMatMDEPrimeInv(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:143
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: vehj.cc:831
virtual ~ViscousHingeJoint(void)
Definition: vehj.cc:969
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: vehj.cc:564
virtual void AfterPredict(void)=0
virtual unsigned int iGetNumPrivData(void) const
Definition: simentity.cc:136
virtual ~ViscousHingeJointInv(void)
Definition: vehj.cc:1277
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: vehj.h:161
void OutputInv(OutputHandler &OH) const
Definition: vehj.cc:289
virtual void AssVec(SubVectorHandler &WorkVec)
Definition: vehj.cc:1145
virtual void AssMatMDEPrime(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:1315
Definition: elem.h:75
ViscoElasticHingeJointInv(unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw3D *pCL, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &tilde_R1h, const Mat3x3 &tilde_R2h, const OrientationDescription &od, flag fOut)
Definition: vehj.cc:1698
virtual std::ostream & Restart(std::ostream &out) const
Definition: vehj.cc:163
void OutputPrepare(OutputHandler &OH)
Definition: vehj.cc:177
virtual bool bInverseDynamics(void) const
Definition: vehj.cc:374
virtual ~DeformableHingeJoint(void)
Definition: vehj.cc:75
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: vehj.h:264
virtual ConstitutiveLaw< Vec3, Mat3x3 > * Read(const DataManager *pDM, MBDynParser &HP, ConstLawType::Type &CLType)
Definition: vehj.cc:1921
virtual void AssMats(VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:608
Mat3x3 tilde_R1h
Definition: vehj.h:50
Vec3 ThetaCurr
Definition: vehj.h:181
virtual void AfterPredict(void)
Definition: vehj.cc:1283
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:1084
Definition: joint.h:50
virtual void AfterPredict(void)
Definition: vehj.cc:982
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: vehj.cc:414
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: vehj.cc:1166
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *h=0)
Definition: simentity.cc:63
double doublereal
Definition: colamd.c:52
virtual void Output(OutputHandler &OH) const
Definition: vehj.cc:195
const char * psConstLawNames[]
Definition: enums.cc:225
long int integer
Definition: colamd.c:51
virtual doublereal dGetPrivData(unsigned int i) const
Definition: vehj.cc:1354
virtual void Output(OutputHandler &OH) const
Definition: vehj.cc:1799
virtual void AfterPredict(void)
Definition: vehj.cc:1394
Mat3x3 MDEPrime
Definition: vehj.h:67
Mat3x3 tilde_R2h
Definition: vehj.h:51
virtual ConstLawType::Type GetConstLawType(void) const =0
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:1427
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: vehj.cc:572
void AssMatMInv(FullSubMatrixHandler &WMA, doublereal dCoef)
Definition: vehj.cc:95
const StructNode * pNode2
Definition: vehj.h:49
virtual void AssMatMDEPrime(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef)
Definition: vehj.cc:126