MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
gimbal.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/gimbal.h,v 1.21 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 /* Deformable hinges */
33 
34 
35 #ifndef GIMBAL_H
36 #define GIMBAL_H
37 
38 #include "joint.h"
39 
40 
41 /* GimbalRotationJoint - begin */
42 
44 virtual public Elem, public Joint {
45 private:
46 protected:
49  const Mat3x3 R1h;
50  const Mat3x3 R2h;
51 
54 
56 
57  void AssMat(FullSubMatrixHandler& WM, doublereal dCoef);
58  void AssVec(SubVectorHandler& WorkVec, doublereal dCoef);
59 
60 public:
61  /* Costruttore non banale */
62  GimbalRotationJoint(unsigned int uL,
63  const DofOwner* pDO,
64  const StructNode* pN1,
65  const StructNode* pN2,
66  const Mat3x3& R1,
67  const Mat3x3& R2,
69  flag fOut);
70 
71  /* Distruttore */
72  virtual ~GimbalRotationJoint(void);
73 
74  /* Tipo di joint */
75  virtual Joint::Type GetJointType(void) const {
76  return GIMBAL;
77  };
78 
79  /* Contributo al file di restart */
80  virtual std::ostream& Restart(std::ostream& out) const;
81 
82  virtual void Output(OutputHandler& OH) const;
83 
84  virtual unsigned int iGetNumDof(void) const {
85  return 5;
86  };
87 
88  virtual DofOrder::Order GetDofType(unsigned int i) const {
89  ASSERT(i >= 0 && i < iGetNumDof());
90  return DofOrder::ALGEBRAIC;
91  };
92 
93  virtual DofOrder::Order GetEqType(unsigned int i) const {
94  ASSERT(i >= 0 && i < iGetNumDof());
95  return DofOrder::ALGEBRAIC;
96  };
97 
98  virtual void WorkSpaceDim(integer* piNumRows,
99  integer* piNumCols) const {
100  *piNumRows = 11;
101  *piNumCols = 11;
102  };
103 
104  /* assemblaggio jacobiano */
105  virtual VariableSubMatrixHandler&
107  doublereal dCoef,
108  const VectorHandler& XCurr,
109  const VectorHandler& XPrimeCurr);
110 
111  /* assemblaggio residuo */
112  virtual SubVectorHandler&
113  AssRes(SubVectorHandler& WorkVec,
114  doublereal dCoef,
115  const VectorHandler& XCurr,
116  const VectorHandler& XPrimeCurr);
117 
118  /* Aggiorna le deformazioni ecc. */
119  virtual void AfterPredict(VectorHandler& X, VectorHandler& XP);
120  /* funzioni usate nell'assemblaggio iniziale */
121  virtual unsigned int iGetInitialNumDof(void) const {
122  return 5;
123  };
124 
125  virtual void InitialWorkSpaceDim(integer* piNumRows,
126  integer* piNumCols) const {
127  *piNumRows = 11;
128  *piNumCols = 11;
129  };
130 
131  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
132  virtual VariableSubMatrixHandler&
134  const VectorHandler& XCurr);
135 
136  /* Contributo al residuo durante l'assemblaggio iniziale */
137  virtual SubVectorHandler&
139  const VectorHandler& XCurr);
140 
141  /* Dati privati (aggiungere magari le reazioni vincolari) */
142  virtual unsigned int iGetNumPrivData(void) const;
143  virtual unsigned int iGetPrivDataIdx(const char *s) const;
144  virtual doublereal dGetPrivData(unsigned int i = 0) const;
145 
146  /* *******PER IL SOLUTORE PARALLELO******** */
147  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
148  utile per l'assemblaggio della matrice di connessione fra i dofs */
149  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
150  connectedNodes.resize(2);
151  connectedNodes[0] = pNode1;
152  connectedNodes[1] = pNode2;
153  };
154  /* ************************************************ */
155 };
156 
157 /* GimbalRotationJoint - end */
158 
159 #endif /* GIMBAL_H */
160 
virtual doublereal dGetPrivData(unsigned int i=0) const
Definition: gimbal.cc:459
Type
Definition: joint.h:66
virtual void Output(OutputHandler &OH) const
Definition: gimbal.cc:86
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: gimbal.h:88
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: gimbal.cc:391
void AssVec(SubVectorHandler &WorkVec, doublereal dCoef)
Definition: gimbal.cc:314
long int flag
Definition: mbdyn.h:43
const StructNode * pNode1
Definition: gimbal.h:47
Definition: matvec3.h:98
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: gimbal.h:149
virtual DofOrder::Order GetEqType(unsigned int i) const
Definition: gimbal.h:93
const Mat3x3 R1h
Definition: gimbal.h:49
OrientationDescription
Definition: matvec3.h:1597
virtual unsigned int iGetNumDof(void) const
Definition: gimbal.h:84
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: gimbal.cc:352
const StructNode * pNode2
Definition: gimbal.h:48
doublereal dTheta
Definition: gimbal.h:53
OrientationDescription od
Definition: gimbal.h:55
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: gimbal.cc:133
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: gimbal.cc:275
GimbalRotationJoint(unsigned int uL, const DofOwner *pDO, const StructNode *pN1, const StructNode *pN2, const Mat3x3 &R1, const Mat3x3 &R2, const OrientationDescription &od, flag fOut)
Definition: gimbal.cc:43
virtual unsigned int iGetNumPrivData(void) const
Definition: gimbal.cc:424
virtual ~GimbalRotationJoint(void)
Definition: gimbal.cc:64
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: gimbal.h:98
#define ASSERT(expression)
Definition: colamd.c:977
virtual Joint::Type GetJointType(void) const
Definition: gimbal.h:75
virtual std::ostream & Restart(std::ostream &out) const
Definition: gimbal.cc:72
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: gimbal.h:125
virtual unsigned int iGetInitialNumDof(void) const
Definition: gimbal.h:121
Definition: elem.h:75
const Mat3x3 R2h
Definition: gimbal.h:50
Definition: joint.h:50
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
void AssMat(FullSubMatrixHandler &WM, doublereal dCoef)
Definition: gimbal.cc:183
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: gimbal.cc:175
doublereal dPhi
Definition: gimbal.h:53
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: gimbal.cc:430