MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
nestedelem.cc
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/nestedelem.cc,v 1.26 2017/01/12 14:46:10 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 /* Nested elements
33  */
34 
35 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
36 
37 #include "nestedelem.h"
38 
40 : Elem(pE->GetLabel(), pE->fToBeOutput()),
41 InitialAssemblyElem(pE->GetLabel(), pE->fToBeOutput()),
42 AerodynamicElem(pE->GetLabel(), dynamic_cast<const ElemWithDofs *>(pE) ? dynamic_cast<const ElemWithDofs *>(pE)->pGetDofOwner() : 0, pE->fToBeOutput()),
43 ElemGravityOwner(pE->GetLabel(), pE->fToBeOutput()),
44 pElem(const_cast<Elem *>(pE))
45 {
46  ASSERT(pE != NULL);
47 }
48 
49 
51 {
52  ASSERT(pElem != 0);
53 
54  if (pElem != 0) {
56  }
57 }
58 
59 Elem *
61 {
62  NestedElem *pNE = dynamic_cast<NestedElem *>(pElem);
63  if (pNE) {
64  return pNE->pGetElem();
65  }
66 
67  return pElem;
68 }
69 
70 void
72 {
73  ASSERT(pElem != NULL);
74  pElem->OutputPrepare(OH);
75 }
76 
77 void
79 {
80  ASSERT(pElem != NULL);
81  pElem->Output(OH);
82 }
83 
84 void
86 {
87  ASSERT(pElem != NULL);
88  pElem->SetOutputFlag(f);
89 }
90 
93 {
94  ASSERT(pElem != NULL);
95  return pElem->GetElemType();
96 }
97 
98 /* ritorna il numero di Dofs per gli elementi che sono anche DofOwners */
99 unsigned int
101 {
102  ASSERT(pElem != NULL);
103  return pElem->iGetNumDof();
104 }
105 
106 /* esegue operazioni sui dof di proprieta' dell'elemento */
108 NestedElem::GetDofType(unsigned int i) const
109 {
110  ASSERT(pElem != NULL);
111  return pElem->GetDofType(i);
112 }
113 
115 NestedElem::GetEqType(unsigned int i) const
116 {
117  ASSERT(pElem != NULL);
118  return pElem->GetEqType(i);
119 }
120 
121 std::ostream&
122 NestedElem::DescribeDof(std::ostream& out,
123  const char *prefix, bool bInitial) const
124 {
125  ASSERT(pElem != NULL);
126  return pElem->DescribeDof(out, prefix, bInitial);
127 }
128 
129 void
130 NestedElem::DescribeDof(std::vector<std::string>& desc,
131  bool bInitial, int i) const
132 {
133  ASSERT(pElem != NULL);
134  return pElem->DescribeDof(desc, bInitial, i);
135 }
136 
137 std::ostream&
138 NestedElem::DescribeEq(std::ostream& out,
139  const char *prefix, bool bInitial) const
140 {
141  ASSERT(pElem != NULL);
142  return pElem->DescribeEq(out, prefix, bInitial);
143 }
144 
145 void
146 NestedElem::DescribeEq(std::vector<std::string>& desc,
147  bool bInitial, int i) const
148 {
149  ASSERT(pElem != NULL);
150  return pElem->DescribeEq(desc, bInitial, i);
151 }
152 
153 
154 /* Dimensioni del workspace */
155 void
156 NestedElem::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
157 {
158  ASSERT(pElem != NULL);
159  pElem->WorkSpaceDim(piNumRows, piNumCols);
160 }
161 
162 /*
163  * Elaborazione vettori e dati prima e dopo la predizione
164  * per MultiStepIntegrator
165  */
166 void
168  VectorHandler& XP,
169  VectorHandler& XPrev,
170  VectorHandler& XPPrev) const
171 {
172  ASSERT(pElem != NULL);
173  pElem->BeforePredict(X, XP, XPrev, XPPrev);
174 }
175 
176 void
178 {
179  ASSERT(pElem != NULL);
180  pElem->AfterPredict(X, XP);
181 }
182 
183 void
187 {
188  ASSERT(pElem != NULL);
189  pElem->SetValue(pdm, X, XP, ph);
190 }
191 
192 /* Aggiorna dati in base alla soluzione */
193 void
194 NestedElem::Update(const VectorHandler& XCurr, const VectorHandler& XPrimeCurr)
195 {
196  ASSERT(pElem != NULL);
197  pElem->Update(XCurr, XPrimeCurr);
198 }
199 
200 
201 void
203 {
204  ASSERT(pElem != NULL);
205  pElem->AfterConvergence(X, XP);
206 }
207 
208 /* assemblaggio jacobiano */
211  doublereal dCoef,
212  const VectorHandler& XCurr,
213  const VectorHandler& XPrimeCurr)
214 {
215  ASSERT(pElem != NULL);
216  return pElem->AssJac(WorkMat, dCoef, XCurr, XPrimeCurr);
217 }
218 
219 void
221  VariableSubMatrixHandler& WorkMatB,
222  const VectorHandler& XCurr,
223  const VectorHandler& XPrimeCurr)
224 {
225  ASSERT(pElem != NULL);
226 
227  pElem->AssMats(WorkMatA, WorkMatB, XCurr, XPrimeCurr);
228 }
229 
230 /* assemblaggio residuo */
233  doublereal dCoef,
234  const VectorHandler& XCurr,
235  const VectorHandler& XPrimeCurr)
236 {
237  ASSERT(pElem != NULL);
238  return pElem->AssRes(WorkVec, dCoef, XCurr, XPrimeCurr);
239 }
240 
241 /*
242  * Metodi per l'estrazione di dati "privati".
243  * Si suppone che l'estrattore li sappia interpretare.
244  * Come default non ci sono dati privati estraibili
245  */
246 unsigned int
248 {
249  return pElem->iGetNumPrivData();
250 }
251 
252 /*
253  * Maps a string (possibly with substrings) to a private data;
254  * returns a valid index ( > 0 && <= iGetNumPrivData()) or 0
255  * in case of unrecognized data; error must be handled by caller
256  */
257 unsigned int
258 NestedElem::iGetPrivDataIdx(const char *s) const
259 {
260  return pElem->iGetPrivDataIdx(s);
261 }
262 
263 /*
264  * Returns the current value of a private data
265  * with 0 < i <= iGetNumPrivData()
266  */
268 NestedElem::dGetPrivData(unsigned int i) const
269 {
270  return pElem->dGetPrivData(i);
271 }
272 
273 /* *******PER IL SOLUTORE PARALLELO******** *
274  * Fornisce il tipo e la label dei nodi che sono connessi all'elemento
275  * utile per l'assemblaggio della matrice di connessione fra i dofs
276  */
277 int
279 {
280  ASSERT(pElem != NULL);
281  return pElem->GetNumConnectedNodes();
282 }
283 
284 void
285 NestedElem::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
286  ASSERT(pElem != NULL);
287  pElem->GetConnectedNodes(connectedNodes);
288 }
289 
290 /* inverse dynamics capable element */
291 bool
293 {
294  ASSERT(pElem != NULL);
295  return pElem->bInverseDynamics();
296 }
297 
298 /* Inverse Dynamics: */
299 void
301 {
302  ASSERT(pElem != NULL);
303  pElem->Update(XCurr, iOrder);
304 }
305 
306 /* Inverse Dynamics: */
307 void
309 {
310  ASSERT(pElem != NULL);
311  pElem->AfterConvergence(X, XP, XPP);
312 }
313 
314 /* inverse dynamics Jacobian matrix assembly */
317  const VectorHandler& XCurr)
318 {
319  ASSERT(pElem != NULL);
320  return pElem->AssJac(WorkMat, XCurr);
321 }
322 
323 /* inverse dynamics residual assembly */
326  const VectorHandler& XCurr,
327  const VectorHandler& XPrimeCurr,
328  const VectorHandler& XPrimePrimeCurr,
329  InverseDynamics::Order iOrder)
330 {
331  ASSERT(pElem != NULL);
332  return pElem->AssRes(WorkVec, XCurr, XPrimeCurr, XPrimePrimeCurr, iOrder);
333 }
334 
335 /* InitialAssemblyElem */
336 unsigned int
338 {
339  ASSERT(pElem != NULL);
340  InitialAssemblyElem *pIAE = dynamic_cast<InitialAssemblyElem*>(pElem);
341  if (pIAE) {
342  return pIAE->iGetInitialNumDof();
343  }
344  return 0;
345 }
346 
347 void
348 NestedElem::InitialWorkSpaceDim(integer* piNumRows, integer* piNumCols) const
349 {
350  ASSERT(pElem != NULL);
351  InitialAssemblyElem *pIAE = dynamic_cast<InitialAssemblyElem*>(pElem);
352  if (pIAE) {
353  pIAE->InitialWorkSpaceDim(piNumRows, piNumCols);
354  }
355 }
356 
359  const VectorHandler& XCurr)
360 {
361  ASSERT(pElem != NULL);
362  InitialAssemblyElem *pIAE = dynamic_cast<InitialAssemblyElem*>(pElem);
363  if (pIAE) {
364  return pIAE->InitialAssJac(WorkMat, XCurr);
365  }
366 
367  WorkMat.SetNullMatrix();
368  return WorkMat;
369 }
370 
371 /* Contributo al residuo durante l'assemblaggio iniziale */
374  const VectorHandler& XCurr)
375 {
376  ASSERT(pElem != NULL);
377  InitialAssemblyElem *pIAE = dynamic_cast<InitialAssemblyElem*>(pElem);
378  if (pIAE) {
379  return pIAE->InitialAssRes(WorkVec, XCurr);
380  }
381 
382  WorkVec.Resize(0);
383  return WorkVec;
384 }
385 
386 /* AerodynamicElem */
389 {
390  ASSERT(pElem != NULL);
391  AerodynamicElem *pAE = dynamic_cast<AerodynamicElem *>(pElem);
392  if (pAE) {
393  return pAE->GetAerodynamicElemType();
394  }
395 
397 }
398 
399 bool
401 {
402  ASSERT(pElem != NULL);
403  AerodynamicElem *pAE = dynamic_cast<AerodynamicElem *>(pElem);
404  if (pAE) {
405  return pAE->NeedsAirProperties();
406  }
407 
408  return false;
409 }
410 
411 void
413 {
414  ASSERT(pElem != NULL);
416  AerodynamicElem *pAE = dynamic_cast<AerodynamicElem *>(pElem);
417  if (pAE) {
418  return pAE->PutAirProperties(pAP);
419  }
420 }
421 
422 const InducedVelocity *
424 {
425  ASSERT(pElem != NULL);
426  AerodynamicElem *pAE = dynamic_cast<AerodynamicElem *>(pElem);
427  if (pAE) {
428  return pAE->pGetInducedVelocity();
429  }
430 
431  return 0;
432 }
433 
434 /* ElemGravityOwner */
435 Vec3
437 {
438  ASSERT(pElem != NULL);
439  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
440  if (pEGO) {
441  return pEGO->GetS_int();
442  }
443 
444  return Zero3;
445 }
446 
447 Mat3x3
449 {
450  ASSERT(pElem != NULL);
451  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
452  if (pEGO) {
453  return pEGO->GetJ_int();
454  }
455 
456  return Zero3x3;
457 }
458 
459 Vec3
461 {
462  ASSERT(pElem != NULL);
463  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
464  if (pEGO) {
465  return pEGO->GetB_int();
466  }
467 
468  return Zero3;
469 }
470 
471 // NOTE: gravity owners must provide the momenta moment
472 // with respect to the origin of the global reference frame!
473 Vec3
475 {
476  ASSERT(pElem != NULL);
477  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
478  if (pEGO) {
479  return pEGO->GetG_int();
480  }
481 
482  return Zero3;
483 }
484 
486 NestedElem::dGetM(void) const
487 {
488  ASSERT(pElem != NULL);
489  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
490  if (pEGO) {
491  return pEGO->dGetM();
492  }
493 
494  return 0.;
495 }
496 
497 Vec3
498 NestedElem::GetS(void) const
499 {
500  ASSERT(pElem != NULL);
501  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
502  if (pEGO) {
503  return pEGO->GetS();
504  }
505 
506  return Zero3;
507 }
508 
509 Mat3x3
510 NestedElem::GetJ(void) const
511 {
512  ASSERT(pElem != NULL);
513  ElemGravityOwner *pEGO = dynamic_cast<ElemGravityOwner *>(pElem);
514  if (pEGO) {
515  return pEGO->GetJ();
516  }
517 
518  return Zero3x3;
519 }
520 
521 /* ElemWithDofs */
522 const DofOwner*
524 {
525  ASSERT(pElem != NULL);
526  ElemWithDofs *pEwD = dynamic_cast<ElemWithDofs *>(pElem);
527  if (pEwD) {
528  return pEwD->pGetDofOwner();
529  }
530 
531  return 0;
532 
533 }
534 
535 integer
537 {
538  ASSERT(pElem != NULL);
539  ElemWithDofs *pEwD = dynamic_cast<ElemWithDofs *>(pElem);
540  if (pEwD) {
541  return pEwD->iGetFirstIndex();
542  }
543 
544  return -1;
545 }
546 
547 void
549 {
550  ASSERT(pElem != NULL);
551  ElemWithDofs *pEwD = dynamic_cast<ElemWithDofs *>(pElem);
552  if (pEwD) {
553  pEwD->SetInitialValue(X);
554  }
555 }
556 
virtual DofOrder::Order GetEqType(unsigned int i) const
Definition: simentity.h:138
virtual Vec3 GetG_int(void) const
Definition: nestedelem.cc:474
virtual bool bInverseDynamics(void) const
Definition: elem.cc:65
virtual doublereal dGetM(void) const
Definition: gravity.h:269
virtual Vec3 GetG_int(void) const
Definition: gravity.h:250
const Vec3 Zero3(0., 0., 0.)
virtual void SetInitialValue(VectorHandler &X)
Definition: nestedelem.cc:548
long int flag
Definition: mbdyn.h:43
virtual Vec3 GetS_int(void) const
Definition: nestedelem.cc:436
virtual doublereal dGetM(void) const
Definition: nestedelem.cc:486
virtual unsigned int iGetInitialNumDof(void) const =0
Definition: matvec3.h:98
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: nestedelem.cc:348
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: nestedelem.cc:258
virtual void OutputPrepare(OutputHandler &OH)
Definition: nestedelem.cc:71
virtual Vec3 GetS_int(void) const
Definition: gravity.h:230
virtual void PutAirProperties(const AirProperties *pAP)
Definition: nestedelem.cc:412
virtual void PutAirProperties(const AirProperties *pAP)
Definition: aerodyn.cc:717
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: nestedelem.cc:156
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: simentity.cc:142
virtual integer iGetFirstIndex(void) const
Definition: nestedelem.cc:536
virtual void SetInitialValue(VectorHandler &X)
Definition: dofown.cc:56
virtual AerodynamicElem::Type GetAerodynamicElemType(void) const =0
virtual Mat3x3 GetJ_int(void) const
Definition: nestedelem.cc:448
virtual const InducedVelocity * pGetInducedVelocity(void) const
Definition: nestedelem.cc:423
virtual unsigned int iGetInitialNumDof(void) const
Definition: nestedelem.cc:337
virtual DofOrder::Order GetEqType(unsigned int i) const
Definition: nestedelem.cc:115
virtual Vec3 GetB_int(void) const
Definition: nestedelem.cc:460
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)
Definition: nestedelem.cc:373
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: nestedelem.cc:122
Mat3x3 GetJ(void) const
Definition: nestedelem.cc:510
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const =0
virtual Elem::Type GetElemType(void) const =0
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual Elem::Type GetElemType(void) const
Definition: nestedelem.cc:92
virtual Mat3x3 GetJ_int(void) const
Definition: gravity.h:236
virtual int GetNumConnectedNodes(void) const
Definition: nestedelem.cc:278
virtual unsigned int iGetNumDof(void) const
Definition: nestedelem.cc:100
virtual void Update(const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: nestedelem.cc:194
Mat3x3 GetJ(void) const
Definition: gravity.h:277
const Mat3x3 Zero3x3(0., 0., 0., 0., 0., 0., 0., 0., 0.)
virtual const DofOwner * pGetDofOwner(void) const
Definition: dofown.h:113
virtual void AssMats(VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: nestedelem.cc:220
virtual void Output(OutputHandler &OH) const
Definition: nestedelem.cc:78
virtual const InducedVelocity * pGetInducedVelocity(void) const
Definition: aerodyn.cc:791
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: nestedelem.cc:232
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: nestedelem.cc:138
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: nestedelem.cc:202
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)=0
void SetNullMatrix(void)
Definition: submat.h:1159
virtual bool NeedsAirProperties(void) const
Definition: aerodyn.cc:785
virtual SubVectorHandler & InitialAssRes(SubVectorHandler &WorkVec, const VectorHandler &XCurr)=0
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: elem.cc:137
virtual bool NeedsAirProperties(void) const
Definition: nestedelem.cc:400
virtual AerodynamicElem::Type GetAerodynamicElemType(void) const
Definition: nestedelem.cc:388
virtual void OutputPrepare(OutputHandler &OH)
Definition: output.cc:863
virtual void SetValue(DataManager *pdm, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: nestedelem.cc:184
#define ASSERT(expression)
Definition: colamd.c:977
virtual void BeforePredict(VectorHandler &X, VectorHandler &XP, VectorHandler &XPrev, VectorHandler &XPPrev) const
Definition: nestedelem.cc:167
virtual void BeforePredict(VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
Definition: simentity.cc:82
Vec3 GetS(void) const
Definition: gravity.h:273
virtual unsigned int iGetNumPrivData(void) const
Definition: nestedelem.cc:247
virtual unsigned int iGetNumDof(void) const
Definition: elem.cc:118
~NestedElem(void)
Definition: nestedelem.cc:50
virtual doublereal dGetPrivData(unsigned int i) const
Definition: simentity.cc:149
virtual unsigned int iGetNumPrivData(void) const
Definition: simentity.cc:136
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: elem.h:243
NestedElem(const Elem *pE)
Definition: nestedelem.cc:39
Definition: elem.h:75
Type
Definition: elem.h:91
virtual void Output(OutputHandler &OH) const
Definition: output.cc:870
virtual bool bInverseDynamics(void) const
Definition: nestedelem.cc:292
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: nestedelem.cc:210
Elem * pElem
Definition: nestedelem.h:50
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: simentity.cc:120
virtual DofOrder::Order GetDofType(unsigned int) const
Definition: elem.cc:150
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const =0
virtual VariableSubMatrixHandler & InitialAssJac(VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
Definition: nestedelem.cc:358
virtual int GetNumConnectedNodes(void) const
Definition: elem.h:234
virtual void AssMats(VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: elem.cc:55
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)=0
virtual void SetOutputFlag(flag f)
Definition: nestedelem.cc:85
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: nestedelem.cc:285
virtual Vec3 GetB_int(void) const
Definition: gravity.h:242
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: simentity.cc:91
virtual void SetOutputFlag(flag f=flag(1))
Definition: output.cc:896
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *h=0)
Definition: simentity.cc:63
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
virtual const DofOwner * pGetDofOwner(void) const
Definition: nestedelem.cc:523
virtual Elem * pGetElem(void) const
Definition: nestedelem.cc:60
long int integer
Definition: colamd.c:51
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: elem.cc:124
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)=0
virtual void Resize(integer iNewSize)=0
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: nestedelem.cc:177
virtual doublereal dGetPrivData(unsigned int i) const
Definition: nestedelem.cc:268
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710
virtual void Update(const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: simentity.cc:98
Vec3 GetS(void) const
Definition: nestedelem.cc:498
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: nestedelem.cc:108