MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
beam.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/beam.h,v 1.54 2017/05/12 17:29:26 morandini 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 /* Trave a volumi finiti, con predisposizione per forze di inerzia consistenti
33  * e legame cositutivo piezoelettico */
34 
35 
36 #ifndef BEAM_H
37 #define BEAM_H
38 
39 #include "myassert.h"
40 #include "except.h"
41 
42 #include "strnode.h"
43 #include "elem.h"
44 #include "gravity.h"
45 
46 #include "constltp.h"
47 
48 extern const char* psBeamNames[];
49 
50 /* ... */
51 class DataManager;
52 class MBDynParser;
53 
54 /* Beam - begin */
55 
56 class Beam
57 : virtual public Elem, public ElemGravityOwner, public InitialAssemblyElem {
58  friend class AerodynamicBeam;
59  friend Elem* ReadBeam(DataManager* pDM, MBDynParser& HP, unsigned int uLabel);
60  friend class Beam2;
61 
62  public:
63  /* Tipi di travi */
64  enum Type {
65  UNKNOWN = -1,
66  ELASTIC = 0,
70 
72  };
73 
74  // output mask
75  enum {
76  OUTPUT_NONE = 0x000U,
77 
81 
85 
89 
93 
95 
97  };
98 
99 protected:
100  static const unsigned int iNumPrivData =
101  +3 // 0 ( 1 -> 3) - strain
102  +3 // 3 ( 4 -> 6) - curvature
103  +3 // 6 ( 7 -> 9) - force
104  +3 // 9 (10 -> 12) - moment
105  +3 // 12 (13 -> 15) - position
106  +3 // 15 (16 -> 18) - orientation vector
107  +3 // 18 (19 -> 21) - angular velocity
108  +3 // 21 (22 -> 24) - strain rate
109  +3 // 24 (25 -> 27) - curvature rate
110  ;
111 
112  static unsigned int iGetPrivDataIdx_int(const char *s,
113  ConstLawType::Type type);
114 
115  // output flags
117 
118 #ifdef USE_NETCDF
119  NcVar *Var_X[2],
120  *Var_Phi[2],
121  *Var_F[2],
122  *Var_M[2],
123  *Var_Nu[2],
124  *Var_K[2],
125  *Var_NuP[2],
126  *Var_KP[2];
127 #endif /* USE_NETCDF */
128 
129  public:
130  class ErrGeneric : public MBDynErrBase {
131  public:
133  };
134 
135  public:
136  enum Section { S_I = 0, SII = 1, NUMSEZ = 2 };
137  enum NodeName { NODE1 = 0, NODE2 = 1, NODE3 = 2, NUMNODES = 3 };
138  enum Deformations { STRAIN = 0, CURVAT = 1, NUMDEFORM = 2 };
139 
140  protected:
141  /* Puntatori ai nodi */
143 
144  /* Offset dei nodi */
145  const Vec3 f[NUMNODES];
148 
149  /* Matrice di rotazione delle sezioni - non sono const perche' vengono
150  * aggiornate ad ogni iterazione */
154 
155  /* Constitutive laws*/
157 
158  /* Reference constitutive laws */
160 
161  /* Per forze d'inerzia consistenti: */
162  const bool bConsistentInertia;
163 
165  const Vec3 S0_I;
166  const Mat3x3 J0_I;
167 
169  const Vec3 S0II;
170  const Mat3x3 J0II;
171 
172  /* Velocita' angolare delle sezioni */
175 
176  /* Dati temporanei che vengono passati da AssRes ad AssJac */
183 
184  // NOTE: Moved to Beam from ViscoElasticBeam for output purposes
186 
191 
193 
195 
196  /* Is first res? */
197  bool bFirstRes;
198 
199  /* Funzioni di servizio */
200  static Vec3
201  InterpState(const Vec3& v1,
202  const Vec3& v2,
203  const Vec3& v3,
204  enum Section Sec);
205  Vec3
206  InterpDeriv(const Vec3& v1,
207  const Vec3& v2,
208  const Vec3& v3,
209  enum Section Sec);
210 
211  /* Funzioni di calcolo delle matrici */
212  virtual void
215  doublereal dCoef,
216  const VectorHandler& XCurr,
217  const VectorHandler& XPrimeCurr);
218 
219  virtual void
221  doublereal dCoef,
222  const VectorHandler& XCurr,
223  const VectorHandler& XPrimeCurr);
224 
225  /* Per le beam che aggiungono qualcosa alle az. interne */
226  virtual void
227  AddInternalForces(Vec6& /* AzLoc */ , unsigned int /* iSez */ ) {
228  NO_OP;
229  };
230 
231  virtual void
233  FullSubMatrixHandler& /* WMB */ ,
234  doublereal /* dCoef */ ,
235  const VectorHandler& /* XCurr */ ,
236  const VectorHandler& /* XPrimeCurr */ ) {
237  NO_OP;
238  };
239 
240  virtual void
242  doublereal /* dCoef */ ,
243  const VectorHandler& /* XCurr */ ,
244  const VectorHandler& /* XPrimeCurr */ ) {
245  NO_OP;
246  };
247 
248  /* Inizializza le derivate delle funzioni di forma
249  * e calcola le deformazioni geometriche iniziali */
250  virtual void DsDxi(void);
251 
252  /* Calcola la velocita' angolare delle sezioni a partire da quelle
253  * dei nodi; per ora lo fa in modo brutale, ma si puo' fare anche
254  * in modo consistente */
255  virtual void Omega0(void);
256 
257  /* Funzione interna di restart */
258  virtual std::ostream& Restart_(std::ostream& out) const;
259 
260  /* Inizializza i dati */
261  void Init(void);
262 
263  public:
264  /* Costruttore normale */
265  Beam(unsigned int uL,
266  const StructNode* pN1, const StructNode* pN2, const StructNode* pN3,
267  const Vec3& F1, const Vec3& F2, const Vec3& F3,
268  const Mat3x3& R1, const Mat3x3& R2, const Mat3x3& R3,
269  const Mat3x3& r_I, const Mat3x3& rII,
270  const ConstitutiveLaw6D* pD_I, const ConstitutiveLaw6D* pDII,
272  flag fOut);
273 
274  /* Costruttore per la trave con forze d'inerzia consistenti */
275  Beam(unsigned int uL,
276  const StructNode* pN1, const StructNode* pN2, const StructNode* pN3,
277  const Vec3& F1, const Vec3& F2, const Vec3& F3,
278  const Mat3x3& R1, const Mat3x3& R2, const Mat3x3& R3,
279  const Mat3x3& r_I, const Mat3x3& rII,
280  const ConstitutiveLaw6D* pD_I, const ConstitutiveLaw6D* pDII,
281  doublereal dM_I,
282  const Vec3& s0_I, const Mat3x3& j0_I,
283  doublereal dMII,
284  const Vec3& s0II, const Mat3x3& j0II,
286  flag fOut);
287 
288  /* Distruttore banale */
289  virtual ~Beam(void);
290 
291  /* Tipo di trave */
292  virtual Beam::Type GetBeamType(void) const {
293  return Beam::ELASTIC;
294  };
295 
296  /* Tipo di elemento */
297  virtual Elem::Type GetElemType(void) const {
298  return Elem::BEAM;
299  };
300 
301  /* Contributo al file di restart */
302  virtual std::ostream& Restart(std::ostream& out) const;
303 
304  virtual void
305  AfterConvergence(const VectorHandler& X, const VectorHandler& XP);
306 
307  /* Inverse Dynamics */
308  virtual void
309  AfterConvergence(const VectorHandler& X, const VectorHandler& XP,
310  const VectorHandler& XPP);
311 
312  /* funzioni proprie */
313 
314  /* Dimensioni del workspace; sono 36 righe perche' se genera anche le
315  * forze d'inerzia consistenti deve avere accesso alle righe di definizione
316  * della quantita' di moto */
317  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
318  if (bConsistentInertia) {
319  *piNumRows = 36;
320  } else {
321  *piNumRows = 18;
322  }
323 
324  *piNumCols = 18;
325  };
326 
327  /* Settings iniziali, prima della prima soluzione */
328  void SetValue(DataManager *pDM,
329  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
330  SimulationEntity::Hints *ph = 0);
331 
332  /* Prepara i parametri di riferimento dopo la predizione */
333  virtual void
334  AfterPredict(VectorHandler& /* X */ , VectorHandler& /* XP */ );
335 
336  /* assemblaggio residuo */
337  virtual SubVectorHandler&
338  AssRes(SubVectorHandler& WorkVec,
339  doublereal dCoef,
340  const VectorHandler& XCurr,
341  const VectorHandler& XPrimeCurr);
342 
343  /* Inverse Dynamics: */
344  virtual SubVectorHandler&
345  AssRes(SubVectorHandler& WorkVec,
346  const VectorHandler& XCurr ,
347  const VectorHandler& XPrimeCurr ,
348  const VectorHandler& XPrimePrimeCurr ,
350 
351  /* inverse dynamics capable element */
352  virtual bool bInverseDynamics(void) const;
353 
354  /* assemblaggio jacobiano */
355  virtual VariableSubMatrixHandler&
357  doublereal dCoef,
358  const VectorHandler& XCurr,
359  const VectorHandler& XPrimeCurr);
360 
361  /* assemblaggio matrici per autovalori */
362  void
364  VariableSubMatrixHandler& WorkMatB,
365  const VectorHandler& XCurr,
366  const VectorHandler& XPrimeCurr);
367 
368  virtual void OutputPrepare(OutputHandler &OH);
369 
370  /* output; si assume che ogni tipo di elemento sappia, attraverso
371  * l'OutputHandler, dove scrivere il proprio output */
372  virtual void Output(OutputHandler& OH) const;
373 
374 #if 0
375  /* Output di un modello NASTRAN equivalente nella configurazione corrente */
376  virtual void Output_pch(std::ostream& out) const;
377 #endif
378 
379  /* Funzioni proprie tipiche dei vincoli, usate durante l'assemblaggio
380  * iniziale. Le travi non sono vincoli (o meglio, non vengono considerate
381  * tali), ma richiedono comunque assemblaggio iniziale. Innanzitutto
382  * le coordinate dei nodi che sono fornite vengono usate per calcolare
383  * la lunghezza della trave e per la metrica della trave stessa.
384  * Inoltre durante l'assemblaggio la trave esplica la propria
385  * deformabilita' quando i vincoli tentano di muovere i nodi. */
386 
387  /* Numero di gradi di liberta' definiti durante l'assemblaggio iniziale
388  * e' dato dai gradi di liberta' soliti piu' le loro derivate necessarie;
389  * tipicamente per un vincolo di posizione il numero di dof raddoppia, in
390  * quanto vengono derivate tutte le equazioni, mentre per un vincolo di
391  * velocita' rimane inalterato. Sono possibili casi intermedi per vincoli
392  * misti di posizione e velocita' */
393  virtual unsigned int iGetInitialNumDof(void) const {
394  return 0;
395  };
396 
397  /* Dimensione del workspace durante l'assemblaggio iniziale. Occorre tener
398  * conto del numero di dof che l'elemento definisce in questa fase e dei
399  * dof dei nodi che vengono utilizzati. Sono considerati dof indipendenti
400  * la posizione e la velocita' dei nodi */
401  virtual void
403  integer* piNumCols) const {
404  *piNumRows = 18;
405  *piNumCols = 18;
406  };
407 
408  /* Setta il valore iniziale delle proprie variabili */
409  virtual void SetInitialValue(VectorHandler& /* X */ ) {
410  NO_OP;
411  };
412 
413  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
414  virtual VariableSubMatrixHandler&
416  const VectorHandler& XCurr);
417 
418  /* Contributo al residuo durante l'assemblaggio iniziale */
419  virtual SubVectorHandler&
420  InitialAssRes(SubVectorHandler& WorkVec, const VectorHandler& XCurr);
421 
422  /* Accesso ai dati privati */
423  virtual unsigned int iGetNumPrivData(void) const;
424  virtual unsigned int iGetPrivDataIdx(const char *s) const;
425  virtual doublereal dGetPrivData(unsigned int i) const;
426 
427  /* Accesso ai nodi */
428  virtual const StructNode* pGetNode(unsigned int i) const;
429 
430  /******** PER IL SOLUTORE PARALLELO *********/
431  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
432  * utile per l'assemblaggio della matrice di connessione fra i dofs */
433  virtual void
434  GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
435  connectedNodes.resize(NUMNODES);
436  for (int i = 0; i < NUMNODES; i++) {
437  connectedNodes[i] = pNode[i];
438  }
439  };
440  /**************************************************/
441 
442 };
443 
444 /* Beam - end */
445 
446 
447 /* ViscoElasticBeam - begin */
448 
449 class ViscoElasticBeam : virtual public Elem, public Beam {
450  protected:
451 
452  /* Derivate di deformazioni e curvature */
455 
457 
458  // NOTE: Moved to Beam from ViscoElasticBeam for output purposes
459  // Vec6 DefPrimeLoc[NUMSEZ];
460 
462 
464 
465  /* Funzioni di calcolo delle matrici */
466  virtual void
469  doublereal dCoef,
470  const VectorHandler& XCurr,
471  const VectorHandler& XPrimeCurr);
472 
473  virtual void
475  doublereal dCoef,
476  const VectorHandler& XCurr,
477  const VectorHandler& XPrimeCurr);
478 
479  /* Inizializza i dati */
480  void Init(void);
481 
482  public:
483  /* Costruttore normale */
484  ViscoElasticBeam(unsigned int uL,
485  const StructNode* pN1,
486  const StructNode* pN2,
487  const StructNode* pN3,
488  const Vec3& F1,
489  const Vec3& F2,
490  const Vec3& F3,
491  const Mat3x3& R1,
492  const Mat3x3& R2,
493  const Mat3x3& R3,
494  const Mat3x3& r_I,
495  const Mat3x3& rII,
496  const ConstitutiveLaw6D* pD_I,
497  const ConstitutiveLaw6D* pDII,
499  flag fOut);
500 
501  /* Costruttore per la trave con forze d'inerzia consistenti */
502  ViscoElasticBeam(unsigned int uL,
503  const StructNode* pN1,
504  const StructNode* pN2,
505  const StructNode* pN3,
506  const Vec3& F1,
507  const Vec3& F2,
508  const Vec3& F3,
509  const Mat3x3& R1,
510  const Mat3x3& R2,
511  const Mat3x3& R3,
512  const Mat3x3& r_I,
513  const Mat3x3& rII,
514  const ConstitutiveLaw6D* pD_I,
515  const ConstitutiveLaw6D* pDII,
516  doublereal dM_I,
517  const Vec3& s0_I,
518  const Mat3x3& j0_I,
519  doublereal dMII,
520  const Vec3& s0II,
521  const Mat3x3& j0II,
523  flag fOut);
524 
525  /* Distruttore banale */
526  virtual ~ViscoElasticBeam(void) {
527  NO_OP;
528  };
529 
530  /* Tipo di trave */
531  virtual Beam::Type GetBeamType(void) const {
532  return Beam::VISCOELASTIC;
533  };
534 
535  /* Settings iniziali, prima della prima soluzione */
536  void SetValue(DataManager *pDM,
537  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
538  SimulationEntity::Hints *ph = 0);
539 
540  /* Prepara i parametri di riferimento dopo la predizione */
541  virtual void
542  AfterPredict(VectorHandler& /* X */ , VectorHandler& /* XP */ );
543 
544  virtual void
545  AfterConvergence(const VectorHandler& X, const VectorHandler& XP);
546 
547  /* Inverse Dynamics */
548  virtual void
549  AfterConvergence(const VectorHandler& X, const VectorHandler& XP,
550  const VectorHandler& XPP);
551 
552  virtual doublereal dGetPrivData(unsigned int i) const;
553 };
554 
555 /* ViscoElasticBeam - end */
556 
557 extern void
558 ReadBeamCustomOutput(DataManager* pDM, MBDynParser& HP, unsigned int uLabel,
559  Beam::Type BT, unsigned& uFlags, OrientationDescription& od);
560 
561 extern void
562 ReadOptionalBeamCustomOutput(DataManager* pDM, MBDynParser& HP, unsigned int uLabel,
563  Beam::Type BT, unsigned& uFlags, OrientationDescription& od);
564 
565 extern Elem*
566 ReadBeam(DataManager* pDM, MBDynParser& HP, unsigned int uLabel);
567 
568 #endif /* BEAM_H */
Beam(unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
Definition: beam.cc:64
const Vec3 S0_I
Definition: beam.h:165
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:1522
virtual Elem::Type GetElemType(void) const
Definition: beam.h:297
void ReadBeamCustomOutput(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
Definition: beam.cc:1776
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:886
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: beam.cc:1384
virtual unsigned int iGetNumPrivData(void) const
Definition: beam.cc:263
virtual Beam::Type GetBeamType(void) const
Definition: beam.h:531
long int flag
Definition: mbdyn.h:43
const doublereal dMassII
Definition: beam.h:168
virtual void AssInertiaMat(FullSubMatrixHandler &, FullSubMatrixHandler &, doublereal, const VectorHandler &, const VectorHandler &)
Definition: beam.h:232
Vec6 DefLocPrev[NUMSEZ]
Definition: beam.h:182
Definition: matvec3.h:98
void Init(void)
Definition: beam.cc:191
const Mat3x3 J0_I
Definition: beam.h:166
const Vec3 f[NUMNODES]
Definition: beam.h:145
static Vec3 InterpState(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:429
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: beam.cc:1265
Vec3 L[NUMSEZ]
Definition: beam.h:190
#define MBDYN_EXCEPT_ARGS_PASSTHRU
Definition: except.h:55
virtual void AddInternalForces(Vec6 &, unsigned int)
Definition: beam.h:227
const Vec3 S0II
Definition: beam.h:169
const Mat3x3 RNode[NUMNODES]
Definition: beam.h:147
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: beam.cc:966
virtual void AssInertiaVec(SubVectorHandler &, doublereal, const VectorHandler &, const VectorHandler &)
Definition: beam.h:241
Definition: beam2.h:50
ViscoElasticBeam(unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
Definition: beam.cc:1310
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:697
OrientationDescription
Definition: matvec3.h:1597
#define MBDYN_EXCEPT_ARGS_DECL
Definition: except.h:43
Elem * ReadBeam(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Definition: beam.cc:1876
#define NO_OP
Definition: myassert.h:74
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: beam.cc:595
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: beam.cc:988
static const unsigned int iNumPrivData
Definition: beam.h:100
Vec6 DefPrimeLocRef[NUMSEZ]
Definition: beam.h:461
virtual const StructNode * pGetNode(unsigned int i) const
Definition: beam.cc:1290
Mat3x3 RPrev[NUMSEZ]
Definition: beam.h:153
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: beam.cc:346
virtual doublereal dGetPrivData(unsigned int i) const
Definition: beam.cc:1752
Vec6 DefLocRef[NUMSEZ]
Definition: beam.h:181
virtual void Output(OutputHandler &OH) const
Definition: beam.cc:1141
OrientationDescription od
Definition: beam.h:116
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:1404
Vec6 AzLoc[NUMSEZ]
Definition: beam.h:179
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: beam.cc:1635
Definition: matvec6.h:37
Vec3 LRef[NUMSEZ]
Definition: beam.h:192
Vec3 L0[NUMSEZ]
Definition: beam.h:189
Mat6x6 ERef[NUMSEZ]
Definition: beam.h:463
Vec3 OmegaRef[NUMSEZ]
Definition: beam.h:174
void ReadOptionalBeamCustomOutput(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
Definition: beam.cc:1863
virtual ~Beam(void)
Definition: beam.cc:236
void Init(void)
Definition: beam.cc:1363
Mat3x3 R[NUMSEZ]
Definition: beam.h:151
Definition: beam.h:56
virtual unsigned int iGetInitialNumDof(void) const
Definition: beam.h:393
virtual doublereal dGetPrivData(unsigned int i) const
Definition: beam.cc:381
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
friend Elem * ReadBeam(DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
Definition: beam.cc:1876
Section
Definition: beam.h:136
unsigned int uLabel
Definition: withlab.h:44
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: beam.cc:1657
Vec3 InterpDeriv(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:446
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: beam.h:434
ErrGeneric(MBDYN_EXCEPT_ARGS_DECL)
Definition: beam.h:132
Type
Definition: beam.h:64
virtual void Omega0(void)
Definition: beam.cc:519
const StructNode * pNode[NUMNODES]
Definition: beam.h:142
static unsigned int iGetPrivDataIdx_int(const char *s, ConstLawType::Type type)
Definition: beam.cc:269
Vec3 gPrime[NUMSEZ]
Definition: beam.h:454
virtual void DsDxi(void)
Definition: beam.cc:466
virtual ~ViscoElasticBeam(void)
Definition: beam.h:526
bool bFirstRes
Definition: beam.h:197
Vec6 AzRef[NUMSEZ]
Definition: beam.h:178
Mat3x3 RRef[NUMSEZ]
Definition: beam.h:152
Vec3 g[NUMSEZ]
Definition: beam.h:188
Deformations
Definition: beam.h:138
Definition: elem.h:75
const Mat3x3 J0II
Definition: beam.h:170
void AssMats(VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:822
const char * psBeamNames[]
Definition: enums.cc:307
Type
Definition: elem.h:91
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: beam.cc:1236
virtual bool bInverseDynamics(void) const
Definition: beam.cc:959
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: beam.h:317
virtual std::ostream & Restart(std::ostream &out) const
Definition: beam.cc:570
virtual void SetInitialValue(VectorHandler &)
Definition: beam.h:409
virtual void OutputPrepare(OutputHandler &OH)
Definition: beam.cc:1047
Vec3 fRef[NUMNODES]
Definition: beam.h:146
Vec6 Az[NUMSEZ]
Definition: beam.h:177
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: beam.h:402
NodeName
Definition: beam.h:137
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:772
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
const bool bConsistentInertia
Definition: beam.h:162
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:613
Vec3 LPrimeRef[NUMSEZ]
Definition: beam.h:456
Mat6x6 DRef[NUMSEZ]
Definition: beam.h:159
Vec3 p[NUMSEZ]
Definition: beam.h:187
Vec6 DefLoc[NUMSEZ]
Definition: beam.h:180
virtual std::ostream & Restart_(std::ostream &out) const
Definition: beam.cc:576
const doublereal dMass_I
Definition: beam.h:164
virtual Beam::Type GetBeamType(void) const
Definition: beam.h:292
doublereal dsdxi[NUMSEZ]
Definition: beam.h:194