MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
pzbeam.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/struct/pzbeam.h,v 1.28 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 PZBEAM_H
33 #define PZBEAM_H
34 
35 #include "beam.h"
36 #include "matvec3n.h"
37 
38 /* PiezoActuatorBeam - begin */
39 
40 class PiezoActuatorBeam : public Beam {
41 
42  private:
45 
46  protected:
47  int iNumElec;
51 
52  /* Funzioni di calcolo delle matrici */
53  virtual void AssStiffnessMat(FullSubMatrixHandler& WMA,
55  doublereal dCoef,
56  const VectorHandler& XCurr,
57  const VectorHandler& XPrimeCurr);
58 
59  virtual void AssStiffnessVec(SubVectorHandler& WorkVec,
60  doublereal dCoef,
61  const VectorHandler& XCurr,
62  const VectorHandler& XPrimeCurr);
63 
64  virtual void AddInternalForces(Vec6& AzLoc, unsigned int iSez);
65 
66  public:
67  /* Costruttore normale */
68  PiezoActuatorBeam(unsigned int uL,
69  const StructNode* pN1, const StructNode* pN2, const StructNode* pN3,
70  const Vec3& F1, const Vec3& F2, const Vec3& F3,
71  const Mat3x3& R1, const Mat3x3& R2, const Mat3x3& R3,
72  const Mat3x3& r_I, const Mat3x3& rII,
73  const ConstitutiveLaw6D* pD_I, const ConstitutiveLaw6D* pDII,
74  int iEl,
75  const ScalarDifferentialNode **pEDof,
76  const Mat3xN& T_Ie, const Mat3xN& T_Ik,
77  const Mat3xN& TIIe, const Mat3xN& TIIk,
79  flag fOut);
80 
81  /* Distruttore banale */
82  virtual ~PiezoActuatorBeam(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 #if 0
107  /* assemblaggio residuo */
108  virtual SubVectorHandler& AssRes(SubVectorHandler& WorkVec,
109  doublereal dCoef,
110  const VectorHandler& XCurr,
111  const VectorHandler& XPrimeCurr);
112 #endif // 0
113 
114  /* assemblaggio jacobiano */
115  virtual VariableSubMatrixHandler&
117  doublereal dCoef,
118  const VectorHandler& XCurr,
119  const VectorHandler& XPrimeCurr);
120 
121  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
122  virtual VariableSubMatrixHandler&
124  const VectorHandler& XCurr);
125 
126  /* Contributo al residuo durante l'assemblaggio iniziale */
127  virtual SubVectorHandler&
129  const VectorHandler& XCurr);
130 
131  /* *******PER IL SOLUTORE PARALLELO******** */
132  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
133  utile per l'assemblaggio della matrice di connessione fra i dofs */
134  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
135  Beam::GetConnectedNodes(connectedNodes);
136  int NumNodes = connectedNodes.size();
137  connectedNodes.resize(NumNodes + iNumElec);
138  for (int i = 0; i < iNumElec; i++) {
139  connectedNodes[NumNodes + i] = pvElecDofs[i];
140  }
141  };
142  /* ************************************************ */
143 };
144 
145 /* PiezoActuatorBeam - end */
146 
147 
148 /* PiezoActuatorVEBeam - begin */
149 
151 
152  private:
155 
156  protected:
157  int iNumElec;
161 
162  /* Funzioni di calcolo delle matrici */
163  virtual void AssStiffnessMat(FullSubMatrixHandler& WMA,
165  doublereal dCoef,
166  const VectorHandler& XCurr,
167  const VectorHandler& XPrimeCurr);
168 
169  virtual void AssStiffnessVec(SubVectorHandler& WorkVec,
170  doublereal dCoef,
171  const VectorHandler& XCurr,
172  const VectorHandler& XPrimeCurr);
173 
174  virtual void AddInternalForces(Vec6& AzLoc, unsigned int iSez);
175 
176  public:
177  /* Costruttore normale */
178  PiezoActuatorVEBeam(unsigned int uL,
179  const StructNode* pN1, const StructNode* pN2, const StructNode* pN3,
180  const Vec3& F1, const Vec3& F2, const Vec3& F3,
181  const Mat3x3& R1, const Mat3x3& R2, const Mat3x3& R3,
182  const Mat3x3& r_I, const Mat3x3& rII,
183  const ConstitutiveLaw6D* pD_I, const ConstitutiveLaw6D* pDII,
184  int iEl,
185  const ScalarDifferentialNode **pEDof,
186  const Mat3xN& T_Ie, const Mat3xN& T_Ik,
187  const Mat3xN& TIIe, const Mat3xN& TIIk,
189  flag fOut);
190 
191  /* Distruttore banale */
192  virtual ~PiezoActuatorVEBeam(void);
193 
194  /* Tipo di trave */
195  virtual Beam::Type GetBeamType(void) const {
197  };
198 
199  /* Contributo al file di restart */
200  virtual std::ostream& Restart(std::ostream& out) const;
201 
202  /* Dimensioni del workspace; sono 36 righe perche' se genera anche le
203  * * forze d'inerzia consistenti deve avere accesso alle righe di definizione
204  * * della quantita' di moto */
205  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const;
206 
207  /* Settings iniziali, prima della prima soluzione */
208  void SetValue(DataManager *pDM,
209  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
210  SimulationEntity::Hints *ph = 0);
211 
212  /* Prepara i parametri di riferimento dopo la predizione */
213  virtual void AfterPredict(VectorHandler& /* X */ ,
214  VectorHandler& /* XP */ );
215 
216 #if 0
217  /* assemblaggio residuo */
218  virtual SubVectorHandler& AssRes(SubVectorHandler& WorkVec,
219  doublereal dCoef,
220  const VectorHandler& XCurr,
221  const VectorHandler& XPrimeCurr);
222 #endif // 0
223 
224  /* assemblaggio jacobiano */
225  virtual VariableSubMatrixHandler&
227  doublereal dCoef,
228  const VectorHandler& XCurr,
229  const VectorHandler& XPrimeCurr);
230 
231  /* Contributo allo jacobiano durante l'assemblaggio iniziale */
232  virtual VariableSubMatrixHandler&
234  const VectorHandler& XCurr);
235 
236  /* Contributo al residuo durante l'assemblaggio iniziale */
237  virtual SubVectorHandler&
239  const VectorHandler& XCurr);
240 
241  /* *******PER IL SOLUTORE PARALLELO******** */
242  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
243  utile per l'assemblaggio della matrice di connessione fra i dofs */
244  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
245  ViscoElasticBeam::GetConnectedNodes(connectedNodes);
246  int NumNodes = connectedNodes.size();
247  connectedNodes.resize(NumNodes + iNumElec);
248  for (int i = 0; i < iNumElec; i++) {
249  connectedNodes[NumNodes + i] = pvElecDofs[i];
250  }
251  };
252  /* ************************************************ */
253 };
254 
255 /* PiezoActuatorVEBeam - end */
256 
257 #endif /* PZBEAM_H */
258 
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: pzbeam.cc:511
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: beam.cc:886
long int flag
Definition: mbdyn.h:43
Definition: matvec3.h:98
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: pzbeam.cc:502
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: pzbeam.cc:267
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: pzbeam.cc:413
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: pzbeam.cc:434
PiezoActuatorBeam(const PiezoActuatorBeam &)
virtual void AfterPredict(VectorHandler &, VectorHandler &)
Definition: pzbeam.cc:190
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: pzbeam.h:134
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:79
PiezoActuatorVEBeam(const PiezoActuatorVEBeam &)
OrientationDescription
Definition: matvec3.h:1597
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:40
virtual void AddInternalForces(Vec6 &AzLoc, unsigned int iSez)
Definition: pzbeam.cc:343
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual void AddInternalForces(Vec6 &AzLoc, unsigned int iSez)
Definition: pzbeam.cc:104
const ScalarDifferentialNode ** pvElecDofs
Definition: pzbeam.h:158
virtual std::ostream & Restart(std::ostream &out) const
Definition: pzbeam.cc:159
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: pzbeam.cc:258
virtual void AssStiffnessVec(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:318
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: pzbeam.cc:169
Vec6 AzLoc[NUMSEZ]
Definition: beam.h:179
Definition: matvec6.h:37
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: pzbeam.cc:424
const PiezoActuatorBeam & operator=(const PiezoActuatorBeam &)
Definition: beam.h:56
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:449
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: beam.h:434
Type
Definition: beam.h:64
virtual void AssStiffnessMat(FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:279
virtual ~PiezoActuatorVEBeam(void)
Definition: pzbeam.cc:394
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: elem.h:243
virtual ~PiezoActuatorBeam(void)
Definition: pzbeam.cc:151
virtual std::ostream & Restart(std::ostream &out) const
Definition: pzbeam.cc:402
const PiezoActuatorVEBeam & operator=(const PiezoActuatorVEBeam &)
virtual Beam::Type GetBeamType(void) const
Definition: pzbeam.h:195
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)=0
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: pzbeam.cc:180
virtual Beam::Type GetBeamType(void) const
Definition: pzbeam.h:85
Definition: matvec3n.h:76
const ScalarDifferentialNode ** pvElecDofs
Definition: pzbeam.h:48
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: pzbeam.h:244
double doublereal
Definition: colamd.c:52
Mat3xN PiezoMat[NUMDEFORM][NUMSEZ]
Definition: pzbeam.h:50
long int integer
Definition: colamd.c:51
Mat3xN PiezoMat[NUMDEFORM][NUMSEZ]
Definition: pzbeam.h:160
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: pzbeam.cc:205