MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
pzbeam2.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/pzbeam2.h,v 1.26 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 #ifndef PZBEAM2_H
33 #define PZBEAM2_H
34 
35 #include "beam.h"
36 #include "beam2.h"
37 #include "matvec3n.h"
38 
39 /* PiezoActuatorBeam2 - begin */
40 
41 class PiezoActuatorBeam2 : public Beam2 {
42 
43  private:
46 
47  protected:
48  int iNumElec;
52 
53  /* Funzioni di calcolo delle matrici */
54  virtual void AssStiffnessMat(FullSubMatrixHandler& WMA,
56  doublereal dCoef,
57  const VectorHandler& XCurr,
58  const VectorHandler& XPrimeCurr);
59 
60  virtual void AssStiffnessVec(SubVectorHandler& WorkVec,
61  doublereal dCoef,
62  const VectorHandler& XCurr,
63  const VectorHandler& XPrimeCurr);
64 
65  virtual void AddInternalForces(Vec6& AzLoc);
66 
67  public:
68  /* Costruttore normale */
69  PiezoActuatorBeam2(unsigned int uL,
70  const StructNode* pN1, const StructNode* pN2,
71  const Vec3& F1, const Vec3& F2,
72  const Mat3x3& R1, const Mat3x3& R2,
73  const Mat3x3& r,
74  const ConstitutiveLaw6D* pd,
75  int iEl,
76  const ScalarDifferentialNode **pEDof,
77  const Mat3xN& T_Ie, const Mat3xN& T_Ik,
79  flag fOut);
80 
81  /* Distruttore banale */
82  virtual ~PiezoActuatorBeam2(void);
83 
84  /* Tipo di trave */
85  virtual Beam::Type GetBeamType(void) const {
87  };
88 
89  /* Contributo al file di restart */
90  virtual std::ostream& Restart(std::ostream& out) const;
91 
92  /* Dimensioni del workspace; sono 36 righe perche' se genera anche le
93  * forze d'inerzia consistenti deve avere accesso alle righe di definizione
94  * della quantita' di moto */
95  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const;
96 
97  /* Settings iniziali, prima della prima soluzione */
98  void SetValue(DataManager *pDM,
99  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
100  SimulationEntity::Hints *ph = 0);
101 
102  /* Prepara i parametri di riferimento dopo la predizione */
103  virtual void AfterPredict(VectorHandler& /* X */ ,
104  VectorHandler& /* XP */ );
105 
106  /* assemblaggio jacobiano */
107  virtual VariableSubMatrixHandler&
109  doublereal dCoef,
110  const VectorHandler& XCurr,
111  const VectorHandler& XPrimeCurr);
112 
113  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
114  virtual VariableSubMatrixHandler&
116  const VectorHandler& XCurr);
117 
118  /* Contributo al residuo durante l'assemblaggio iniziale */
119  virtual SubVectorHandler&
121  const VectorHandler& XCurr);
122 
123  /* *******PER IL SOLUTORE PARALLELO******** */
124  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
125  utile per l'assemblaggio della matrice di connessione fra i dofs */
126  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
127  Beam2::GetConnectedNodes(connectedNodes);
128  int NumNodes = connectedNodes.size();
129  connectedNodes.resize(NumNodes + iNumElec);
130  for (int i = 0; i < iNumElec; i++) {
131  connectedNodes[NumNodes + i] = pvElecDofs[i];
132  }
133  };
134  /* ************************************************ */
135 };
136 
137 /* PiezoActuatorBeam2 - end */
138 
139 
140 /* PiezoActuatorVEBeam2 - begin */
141 
143 
144  private:
147 
148  protected:
149  int iNumElec;
153 
154  /* Funzioni di calcolo delle matrici */
155  virtual void AssStiffnessMat(FullSubMatrixHandler& WMA,
157  doublereal dCoef,
158  const VectorHandler& XCurr,
159  const VectorHandler& XPrimeCurr);
160 
161  virtual void AssStiffnessVec(SubVectorHandler& WorkVec,
162  doublereal dCoef,
163  const VectorHandler& XCurr,
164  const VectorHandler& XPrimeCurr);
165 
166  virtual void AddInternalForces(Vec6& AzLoc);
167 
168  public:
169  /* Costruttore normale */
170  PiezoActuatorVEBeam2(unsigned int uL,
171  const StructNode* pN1, const StructNode* pN2,
172  const Vec3& F1, const Vec3& F2,
173  const Mat3x3& R1, const Mat3x3& R2,
174  const Mat3x3& r,
175  const ConstitutiveLaw6D* pd,
176  int iEl,
177  const ScalarDifferentialNode **pEDof,
178  const Mat3xN& T_Ie, const Mat3xN& T_Ik,
180  flag fOut);
181 
182  /* Distruttore banale */
183  virtual ~PiezoActuatorVEBeam2(void);
184 
185  /* Tipo di trave */
186  virtual Beam::Type GetBeamType(void) const {
188  };
189 
190  /* Contributo al file di restart */
191  virtual std::ostream& Restart(std::ostream& out) const;
192 
193  /* Dimensioni del workspace; sono 36 righe perche' se genera anche le
194  * forze d'inerzia consistenti deve avere accesso alle righe di definizione
195  * della quantita' di moto */
196  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const;
197 
198  /* Settings iniziali, prima della prima soluzione */
199  void SetValue(DataManager *pDM,
200  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
201  SimulationEntity::Hints *ph = 0);
202 
203  /* Prepara i parametri di riferimento dopo la predizione */
204  virtual void AfterPredict(VectorHandler& /* X */ ,
205  VectorHandler& /* XP */ );
206 
207  /* assemblaggio jacobiano */
208  virtual VariableSubMatrixHandler&
210  doublereal dCoef,
211  const VectorHandler& XCurr,
212  const VectorHandler& XPrimeCurr);
213 
214  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
215  virtual VariableSubMatrixHandler&
217  const VectorHandler& XCurr);
218 
219  /* Contributo al residuo durante l'assemblaggio iniziale */
220  virtual SubVectorHandler&
222  const VectorHandler& XCurr);
223 
224  /* *******PER IL SOLUTORE PARALLELO******** */
225  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
226  utile per l'assemblaggio della matrice di connessione fra i dofs */
227  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
228  ViscoElasticBeam2::GetConnectedNodes(connectedNodes);
229  int NumNodes = connectedNodes.size();
230  connectedNodes.resize(NumNodes + iNumElec);
231  for (int i = 0; i < iNumElec; i++) {
232  connectedNodes[NumNodes + i] = pvElecDofs[i];
233  }
234  };
235  /* ************************************************ */
236 };
237 
238 /* PiezoActuatorVEBeam2 - end */
239 
240 #endif /* PZBEAM2_H */
241 
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: pzbeam2.cc:172
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: pzbeam2.cc:457
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:41
long int flag
Definition: mbdyn.h:43
Definition: matvec3.h:98
const PiezoActuatorBeam2 & operator=(const PiezoActuatorBeam2 &)
Definition: beam2.h:50
OrientationDescription
Definition: matvec3.h:1597
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:419
const ScalarDifferentialNode ** pvElecDofs
Definition: pzbeam2.h:150
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: pzbeam2.cc:237
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: pzbeam2.cc:246
std::vector< Hint * > Hints
Definition: simentity.h:89
PiezoActuatorBeam2(const PiezoActuatorBeam2 &)
Mat3xN PiezoMat[NUMDEFORM]
Definition: pzbeam2.h:51
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: pzbeam2.h:126
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: pzbeam2.cc:382
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:199
Definition: matvec6.h:37
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: pzbeam2.cc:392
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: pzbeam2.h:227
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:259
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: pzbeam2.cc:403
virtual void AddInternalForces(Vec6 &AzLoc)
Definition: pzbeam2.cc:103
virtual Beam::Type GetBeamType(void) const
Definition: pzbeam2.h:186
const PiezoActuatorVEBeam2 & operator=(const PiezoActuatorVEBeam2 &)
Mat3xN PiezoMat[NUMDEFORM]
Definition: pzbeam2.h:152
const ScalarDifferentialNode ** pvElecDofs
Definition: pzbeam2.h:49
virtual Beam::Type GetBeamType(void) const
Definition: pzbeam2.h:85
virtual void AddInternalForces(Vec6 &AzLoc)
Definition: pzbeam2.cc:324
Type
Definition: beam.h:64
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: pzbeam2.cc:183
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:69
PiezoActuatorVEBeam2(const PiezoActuatorVEBeam2 &)
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: elem.h:243
virtual ~PiezoActuatorVEBeam2(void)
Definition: pzbeam2.cc:361
Vec6 AzLoc
Definition: beam2.h:109
Definition: matvec3n.h:76
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: beam2.h:348
double doublereal
Definition: colamd.c:52
virtual ~PiezoActuatorBeam2(void)
Definition: pzbeam2.cc:140
long int integer
Definition: colamd.c:51
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: pzbeam2.cc:163
virtual std::ostream & Restart(std::ostream &out) const
Definition: pzbeam2.cc:149
virtual std::ostream & Restart(std::ostream &out) const
Definition: pzbeam2.cc:370
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam2.cc:289
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: pzbeam2.cc:466