MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
drvdisp.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/drvdisp.h,v 1.20 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 DRVDISP_H
36 #define DRVDISP_H
37 
38 #include "joint.h"
39 
40 /* DriveDisplacementJoint - begin */
41 
43 virtual public Elem, public Joint, public TplDriveOwner<Vec3> {
44 private:
45 
46 protected:
49  mutable Vec3 f1;
50  mutable Vec3 f2;
51 
54 
57 
59 
60  void AssMat(FullSubMatrixHandler& WM, doublereal dCoef);
61  void AssVec(SubVectorHandler& WorkVec, doublereal dCoef);
62 
63 public:
64  /* Costruttore non banale */
65  DriveDisplacementJoint(unsigned int uL,
66  const DofOwner* pDO,
67  const TplDriveCaller<Vec3>* pDC,
68  const StructNode* pN1,
69  const StructNode* pN2,
70  const Vec3& f1,
71  const Vec3& f2,
72  flag fOut);
73 
74  /* Distruttore */
75  virtual ~DriveDisplacementJoint(void);
76 
77  /* Tipo di joint */
78  virtual Joint::Type GetJointType(void) const {
79  return DRIVEDISP;
80  };
81 
82  /* Contributo al file di restart */
83  virtual std::ostream& Restart(std::ostream& out) const;
84 
85  virtual void Output(OutputHandler& OH) const;
86 
87  void SetValue(DataManager *pDM,
89  SimulationEntity::Hints *ph = 0);
90 
91  virtual Hint *
92  ParseHint(DataManager *pDM, const char *s) const;
93 
94  virtual unsigned int iGetNumDof(void) const {
95  return 3;
96  };
97 
98  virtual std::ostream&
99  DescribeDof(std::ostream& out,
100  const char *prefix = "",
101  bool bInitial = false) const;
102 
103  virtual void
104  DescribeDof(std::vector<std::string>& desc,
105  bool bInitial = false,
106  int i = -1) const;
107 
108  virtual std::ostream&
109  DescribeEq(std::ostream& out,
110  const char *prefix = "",
111  bool bInitial = false) const;
112 
113  virtual void
114  DescribeEq(std::vector<std::string>& desc,
115  bool bInitial = false,
116  int i = -1) const;
117 
118  virtual DofOrder::Order GetDofType(unsigned int i) const {
119  ASSERT(i >= 0 && i <= 3);
120  return DofOrder::ALGEBRAIC;
121  };
122 
123  virtual void WorkSpaceDim(integer* piNumRows,
124  integer* piNumCols) const {
125  *piNumRows = 15;
126  *piNumCols = 15;
127  };
128 
129  /* assemblaggio jacobiano */
130  virtual VariableSubMatrixHandler&
132  doublereal dCoef,
133  const VectorHandler& XCurr,
134  const VectorHandler& XPrimeCurr);
135 
136  /* assemblaggio residuo */
137  virtual SubVectorHandler&
138  AssRes(SubVectorHandler& WorkVec,
139  doublereal dCoef,
140  const VectorHandler& XCurr,
141  const VectorHandler& XPrimeCurr);
142 
143  /* Aggiorna le deformazioni ecc. */
144  virtual void AfterPredict(VectorHandler& X, VectorHandler& XP);
145  /* funzioni usate nell'assemblaggio iniziale */
146  virtual unsigned int iGetInitialNumDof(void) const {
147  return 6;
148  };
149 
150  virtual void InitialWorkSpaceDim(integer* piNumRows,
151  integer* piNumCols) const
152  {
153  *piNumRows = 30;
154  *piNumCols = 30;
155  };
156 
157  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
158  virtual VariableSubMatrixHandler&
160  const VectorHandler& XCurr);
161 
162  /* Contributo al residuo durante l'assemblaggio iniziale */
163  virtual SubVectorHandler&
165  const VectorHandler& XCurr);
166 
167  /* Dati privati (aggiungere magari le reazioni vincolari) */
168  virtual unsigned int iGetNumPrivData(void) const;
169 
170  unsigned int iGetPrivDataIdx(const char *s) const;
171 
172  virtual doublereal dGetPrivData(unsigned int i = 0) const;
173 
174  /* *******PER IL SOLUTORE PARALLELO******** */
175  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
176  utile per l'assemblaggio della matrice di connessione fra i dofs */
177  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
178  connectedNodes.resize(2);
179  connectedNodes[0] = pNode1;
180  connectedNodes[1] = pNode2;
181  };
182  /* ************************************************ */
183 };
184 
185 /* DriveDisplacementJoint - end */
186 
187 /* DriveDisplacementPinJoint - begin */
188 
190 virtual public Elem, public Joint, public TplDriveOwner<Vec3> {
191 private:
192 
193 protected:
195  mutable Vec3 f;
196  mutable Vec3 x;
197 
200 
202 
203  void AssMat(FullSubMatrixHandler& WM, doublereal dCoef);
204  void AssVec(SubVectorHandler& WorkVec, doublereal dCoef);
205 
206 public:
207  /* Costruttore non banale */
208  DriveDisplacementPinJoint(unsigned int uL,
209  const DofOwner* pDO,
210  const TplDriveCaller<Vec3>* pDC,
211  const StructNode* pN,
212  const Vec3& f,
213  const Vec3& x,
214  flag fOut);
215 
216  /* Distruttore */
217  virtual ~DriveDisplacementPinJoint(void);
218 
219  /* Tipo di joint */
220  virtual Joint::Type GetJointType(void) const {
221  return DRIVEDISPPIN;
222  };
223 
224  /* Contributo al file di restart */
225  virtual std::ostream& Restart(std::ostream& out) const;
226 
227  virtual void Output(OutputHandler& OH) const;
228 
229  void SetValue(DataManager *pDM,
231  SimulationEntity::Hints *ph = 0);
232 
233  virtual Hint *
234  ParseHint(DataManager *pDM, const char *s) const;
235 
236  virtual unsigned int iGetNumDof(void) const {
237  return 3;
238  };
239 
240  virtual std::ostream&
241  DescribeDof(std::ostream& out,
242  const char *prefix = "",
243  bool bInitial = false) const;
244 
245  virtual void
246  DescribeDof(std::vector<std::string>& desc,
247  bool bInitial = false,
248  int i = -1) const;
249 
250  virtual std::ostream&
251  DescribeEq(std::ostream& out,
252  const char *prefix = "",
253  bool bInitial = false) const;
254 
255  virtual void
256  DescribeEq(std::vector<std::string>& desc,
257  bool bInitial = false,
258  int i = -1) const;
259 
260  virtual DofOrder::Order GetDofType(unsigned int i) const {
261  ASSERT(i >= 0 && i <= 3);
262  return DofOrder::ALGEBRAIC;
263  };
264 
265  virtual void WorkSpaceDim(integer* piNumRows,
266  integer* piNumCols) const {
267  *piNumRows = 9;
268  *piNumCols = 9;
269  };
270 
271  /* assemblaggio jacobiano */
272  virtual VariableSubMatrixHandler&
274  doublereal dCoef,
275  const VectorHandler& XCurr,
276  const VectorHandler& XPrimeCurr);
277 
278  /* assemblaggio residuo */
279  virtual SubVectorHandler&
280  AssRes(SubVectorHandler& WorkVec,
281  doublereal dCoef,
282  const VectorHandler& XCurr,
283  const VectorHandler& XPrimeCurr);
284 
285  /* Aggiorna le deformazioni ecc. */
286  virtual void AfterPredict(VectorHandler& X, VectorHandler& XP);
287  /* funzioni usate nell'assemblaggio iniziale */
288  virtual unsigned int iGetInitialNumDof(void) const {
289  return 6;
290  };
291 
292  virtual void InitialWorkSpaceDim(integer* piNumRows,
293  integer* piNumCols) const
294  {
295  *piNumRows = 18;
296  *piNumCols = 18;
297  };
298 
299  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
300  virtual VariableSubMatrixHandler&
302  const VectorHandler& XCurr);
303 
304  /* Contributo al residuo durante l'assemblaggio iniziale */
305  virtual SubVectorHandler&
307  const VectorHandler& XCurr);
308 
309  /* Dati privati (aggiungere magari le reazioni vincolari) */
310  virtual unsigned int iGetNumPrivData(void) const;
311 
312  unsigned int iGetPrivDataIdx(const char *s) const;
313 
314  virtual doublereal dGetPrivData(unsigned int i = 0) const;
315 
316  /* *******PER IL SOLUTORE PARALLELO******** */
317  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
318  utile per l'assemblaggio della matrice di connessione fra i dofs */
319  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
320  connectedNodes.resize(1);
321  connectedNodes[0] = pNode;
322  };
323  /* ************************************************ */
324 };
325 
326 /* DriveDisplacementPinJoint - end */
327 
328 #endif /* DRVDISP_H */
329 
Definition: hint.h:38
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: drvdisp.h:177
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: drvdisp.cc:351
Type
Definition: joint.h:66
virtual ~DriveDisplacementJoint(void)
Definition: drvdisp.cc:69
void AssVec(SubVectorHandler &WorkVec, doublereal dCoef)
Definition: drvdisp.cc:1078
long int flag
Definition: mbdyn.h:43
DriveDisplacementJoint(unsigned int uL, const DofOwner *pDO, const TplDriveCaller< Vec3 > *pDC, const StructNode *pN1, const StructNode *pN2, const Vec3 &f1, const Vec3 &f2, flag fOut)
Definition: drvdisp.cc:43
Definition: matvec3.h:98
virtual unsigned int iGetNumDof(void) const
Definition: drvdisp.h:236
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: drvdisp.h:265
unsigned int iGetPrivDataIdx(const char *s) const
Definition: drvdisp.cc:295
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: drvdisp.h:292
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: drvdisp.cc:726
virtual unsigned int iGetInitialNumDof(void) const
Definition: drvdisp.h:146
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: drvdisp.cc:441
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: drvdisp.cc:392
virtual Joint::Type GetJointType(void) const
Definition: drvdisp.h:78
void AssMat(FullSubMatrixHandler &WM, doublereal dCoef)
Definition: drvdisp.cc:402
const StructNode * pNode
Definition: drvdisp.h:194
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: drvdisp.cc:151
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual doublereal dGetPrivData(unsigned int i=0) const
Definition: drvdisp.cc:330
DriveDisplacementPinJoint(unsigned int uL, const DofOwner *pDO, const TplDriveCaller< Vec3 > *pDC, const StructNode *pN, const Vec3 &f, const Vec3 &x, flag fOut)
Definition: drvdisp.cc:674
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: drvdisp.cc:102
virtual Joint::Type GetJointType(void) const
Definition: drvdisp.h:220
virtual std::ostream & Restart(std::ostream &out) const
Definition: drvdisp.cc:703
virtual unsigned int iGetNumPrivData(void) const
Definition: drvdisp.cc:907
virtual std::ostream & Restart(std::ostream &out) const
Definition: drvdisp.cc:77
virtual Hint * ParseHint(DataManager *pDM, const char *s) const
Definition: drvdisp.cc:773
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: drvdisp.cc:497
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: drvdisp.h:123
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: drvdisp.cc:612
virtual void Output(OutputHandler &OH) const
Definition: drvdisp.cc:715
virtual unsigned int iGetNumPrivData(void) const
Definition: drvdisp.cc:289
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: drvdisp.h:150
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: drvdisp.cc:1043
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: drvdisp.h:319
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: drvdisp.cc:233
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: drvdisp.cc:175
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: drvdisp.cc:797
const StructNode * pNode1
Definition: drvdisp.h:47
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: drvdisp.cc:851
#define ASSERT(expression)
Definition: colamd.c:977
virtual ~DriveDisplacementPinJoint(void)
Definition: drvdisp.cc:695
virtual void Output(OutputHandler &OH) const
Definition: drvdisp.cc:90
virtual unsigned int iGetNumDof(void) const
Definition: drvdisp.h:94
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: drvdisp.cc:1006
const StructNode * pNode2
Definition: drvdisp.h:48
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: drvdisp.h:260
Definition: elem.h:75
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: drvdisp.cc:1093
unsigned int iGetPrivDataIdx(const char *s) const
Definition: drvdisp.cc:913
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: drvdisp.cc:969
Definition: joint.h:50
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: drvdisp.cc:1166
void AssMat(FullSubMatrixHandler &WM, doublereal dCoef)
Definition: drvdisp.cc:1016
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: drvdisp.h:118
virtual doublereal dGetPrivData(unsigned int i=0) const
Definition: drvdisp.cc:948
virtual unsigned int iGetInitialNumDof(void) const
Definition: drvdisp.h:288
void AssVec(SubVectorHandler &WorkVec, doublereal dCoef)
Definition: drvdisp.cc:478