MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
genel_.cc
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/elec/genel_.cc,v 1.15 2017/01/12 14:46:22 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 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
33 
34 #include "dataman.h"
35 #include "genel_.h"
36 
37 /* GenelClamp - begin */
38 
39 GenelClamp::GenelClamp(unsigned int uLabel,
40  const DofOwner* pDO,
41  const DriveCaller* pDC,
42  const ScalarDof& sd,
43  flag fOutput)
44 : Elem(uLabel, fOutput),
45 Genel(uLabel, pDO, fOutput),
46 DriveOwner(pDC), SD(sd), dRct(0.)
47 {
48  NO_OP;
49 }
50 
52 {
53  const Node2Scalar *pn2s;
54 
55  pn2s = dynamic_cast<const Node2Scalar *>(SD.pNode);
56  if (pn2s) {
57  SAFEDELETE(pn2s);
58  }
59 }
60 
61 unsigned int
63 {
64  return 1;
65 }
66 
67 /* esegue operazioni sui dof di proprieta' dell'elemento */
69 GenelClamp::GetDofType(unsigned int i) const
70 {
71  ASSERT(i == 0);
72  return DofOrder::ALGEBRAIC;
73 }
74 
75 /* esegue operazioni sui dof di proprieta' dell'elemento */
77 GenelClamp::GetEqType(unsigned int i) const
78 {
79  ASSERT(i == 0);
80  return DofOrder::ALGEBRAIC;
81 }
82 
83 /* Scrive il contributo dell'elemento al file di restart */
84 std::ostream&
85 GenelClamp::Restart(std::ostream& out) const
86 {
87  return out;
88 }
89 
90 /* Tipo di Genel */
93 {
94  return Genel::CLAMP;
95 }
96 
97 /* Dimensioni del workspace */
98 void
99 GenelClamp::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
100 {
101  *piNumRows = 2;
102  *piNumCols = 2;
103 }
104 
105 void
107 {
108  if (bToBeOutput()) {
109  std::ostream& out = OH.Genels();
110  out << std::setw(8) << GetLabel() << " " << dRct << std::endl;
111  }
112 }
113 
114 /* assemblaggio jacobiano */
117  doublereal dCoef,
118  const VectorHandler& XCurr,
119  const VectorHandler& XPrimeCurr)
120 {
121  DEBUGCOUT("Entering GenelClamp::AssJac()" << std::endl);
122 
123  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
124  WM.Resize(2, 0);
125 
126  integer iRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
127  integer iColIndex = SD.pNode->iGetFirstColIndex() + 1;
128  integer iFirstReactionIndex = iGetFirstIndex() + 1;
129 
130  WM.PutItem(1, iRowIndex, iFirstReactionIndex, 1.);
131  WM.PutItem(2, iFirstReactionIndex, iColIndex, 1.);
132 
133  return WorkMat;
134 }
135 
136 /* assemblaggio residuo */
139  doublereal dCoef,
140  const VectorHandler& XCurr,
141  const VectorHandler& XPrimeCurr)
142 {
143  DEBUGCOUT("Entering GenelClamp::AssRes()" << std::endl);
144 
145  WorkVec.Resize(2);
146 
147  integer iRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
148  integer iFirstReactionIndex = iGetFirstIndex() + 1;
149 
150  doublereal dVal = SD.pNode->dGetDofValue(1, SD.iOrder);
151  dRct = XCurr(iFirstReactionIndex);
152 
153  WorkVec.PutItem(1, iRowIndex, -dRct);
154 
155  doublereal dConstr = dGet() - dVal;
156  if (SD.iOrder == 0
158  && dCoef != 0.)
159  {
160  dConstr /= dCoef;
161  }
162  WorkVec.PutItem(2, iFirstReactionIndex, dConstr);
163 
164  return WorkVec;
165 }
166 
167 void
171 {
172  if (SD.iOrder == 0) {
173  X.PutCoef(SD.pNode->iGetFirstRowIndex() + 1, dGet());
174  } else if (SD.iOrder == 1) {
175  XP.PutCoef(SD.pNode->iGetFirstRowIndex() + 1, dGet());
176  }
177 }
178 
179 /* *******PER IL SOLUTORE PARALLELO******** */
180 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
181  * utile per l'assemblaggio della matrice di connessione fra i dofs */
182 void
183 GenelClamp::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
184  connectedNodes.resize(1);
185  connectedNodes[0] = SD.pNode;
186 }
187 /* ************************************************ */
188 
189 /* GenelClamp - end */
190 
191 
192 /* GenelDistance - begin */
193 
194 GenelDistance::GenelDistance(unsigned int uLabel,
195  const DofOwner* pDO,
196  const DriveCaller* pDC,
197  const ScalarDof& sd1,
198  const ScalarDof& sd2,
199  flag fOutput)
200 : Elem(uLabel, fOutput),
201 Genel(uLabel, pDO, fOutput),
202 DriveOwner(pDC), SD1(sd1), SD2(sd2), dRct(0.)
203 {
204  NO_OP;
205 }
206 
208 {
209  const Node2Scalar *pn2s;
210 
211  pn2s = dynamic_cast<const Node2Scalar *>(SD1.pNode);
212  if (pn2s) {
213  SAFEDELETE(pn2s);
214  }
215 
216  pn2s = dynamic_cast<const Node2Scalar *>(SD2.pNode);
217  if (pn2s) {
218  SAFEDELETE(pn2s);
219  }
220 }
221 
222 unsigned int
224 {
225  return 1;
226 }
227 
229 GenelDistance::GetDofType(unsigned int i ) const
230 {
231  ASSERT(i == 0);
232  return DofOrder::ALGEBRAIC;
233 }
234 
235 /* Scrive il contributo dell'elemento al file di restart */
236 std::ostream&
237 GenelDistance::Restart(std::ostream& out) const
238 {
239  return out;
240 }
241 
242 /* Tipo di Genel */
245 {
246  return Genel::DISTANCE;
247 }
248 
249 /* Dimensioni del workspace */
250 void
251 GenelDistance::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
252 {
253  *piNumRows = 3;
254  *piNumCols = 3;
255 }
256 
257 void
259 {
260  if (bToBeOutput()) {
261  std::ostream& out = OH.Genels();
262  out << std::setw(8) << GetLabel() << " " << dRct << std::endl;
263  }
264 }
265 
266 /* assemblaggio jacobiano */
269  doublereal dCoef,
270  const VectorHandler& XCurr,
271  const VectorHandler& XPrimeCurr)
272 {
273  DEBUGCOUT("Entering GenelDistance::AssJac()" << std::endl);
274 
275  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
276  WM.ResizeReset(4, 0);
277 
278  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex() + 1;
279  integer iNode1ColIndex = SD1.pNode->iGetFirstColIndex() + 1;
280  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex() + 1;
281  integer iNode2ColIndex = SD2.pNode->iGetFirstColIndex() + 1;
282  integer iFirstReactionIndex = iGetFirstIndex() + 1;
283 
284  WM.PutItem(1, iNode1RowIndex, iFirstReactionIndex, -1.);
285  WM.PutItem(2, iNode2RowIndex, iFirstReactionIndex, 1.);
286 
287  doublereal d = dCoef;
288  if ((SD1.iOrder == 0) && (SD2.iOrder == 0)) {
289  d = 1.;
290  }
291 
292  if (SD1.iOrder == 1) {
293  WM.PutItem(3, iFirstReactionIndex, iNode1ColIndex, -1.);
294  } else {
295  WM.PutItem(3, iFirstReactionIndex, iNode1ColIndex, -d);
296  }
297 
298  if (SD2.iOrder == 1) {
299  WM.PutItem(4, iFirstReactionIndex, iNode2ColIndex, 1.);
300  } else {
301  WM.PutItem(4, iFirstReactionIndex, iNode2ColIndex, d);
302  }
303 
304  return WorkMat;
305 }
306 
307 /* assemblaggio residuo */
310  doublereal dCoef,
311  const VectorHandler& XCurr,
312  const VectorHandler& XPrimeCurr)
313 {
314  DEBUGCOUT("Entering GenelDistance::AssRes()" << std::endl);
315 
316  WorkVec.ResizeReset(3);
317 
318  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex() + 1;
319  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex() + 1;
320  integer iFirstReactionIndex = iGetFirstIndex() + 1;
321 
322  doublereal dVal1 = SD1.pNode->dGetDofValue(1, SD1.iOrder);
323  doublereal dVal2 = SD2.pNode->dGetDofValue(1, SD2.iOrder);
324  dRct = XCurr(iFirstReactionIndex);
325 
326  WorkVec.PutItem(1, iNode1RowIndex, dRct);
327  WorkVec.PutItem(2, iNode2RowIndex, -dRct);
328 
329  if ((SD1.iOrder == 0) && (SD2.iOrder == 0)) {
330  ASSERT(dCoef != 0.);
331  WorkVec.PutItem(3, iFirstReactionIndex,
332  (dGet() - dVal2 + dVal1)/dCoef);
333 
334  } else {
335  WorkVec.PutItem(3, iFirstReactionIndex, dGet() - dVal2 + dVal1);
336  }
337 
338  return WorkVec;
339 }
340 
341 void
345 {
346  if (SD2.iOrder == 0) {
348  dGet() - SD2.pNode->dGetX()
349  + SD1.pNode->dGetDofValue(1, SD1.iOrder));
350  } else if (SD2.iOrder == 1) {
352  dGet() - SD2.pNode->dGetXPrime()
353  + SD1.pNode->dGetDofValue(1, SD1.iOrder));
354  }
355 }
356 
357 /* *******PER IL SOLUTORE PARALLELO******** */
358 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
359  * utile per l'assemblaggio della matrice di connessione fra i dofs */
360 void
361 GenelDistance::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
362  connectedNodes.resize(2);
363  connectedNodes[0] = SD1.pNode;
364  connectedNodes[1] = SD2.pNode;
365 }
366 /* ************************************************ */
367 
368 /* GenelDistance - end */
369 
370 
371 /* GenelSpring - begin */
372 
373 GenelSpring::GenelSpring(unsigned int uLabel,
374  const DofOwner* pDO,
375  const ConstitutiveLaw1D* pCL,
376  const ScalarDof& sd1,
377  const ScalarDof& sd2,
378  flag fOutput)
379 : Elem(uLabel, fOutput),
380 Genel(uLabel, pDO, fOutput),
381 ConstitutiveLaw1DOwner(pCL), SD1(sd1), SD2(sd2), dVal(0.)
382 {
383  NO_OP;
384 }
385 
387 {
388  const Node2Scalar *pn2s;
389 
390  pn2s = dynamic_cast<const Node2Scalar *>(SD1.pNode);
391  if (pn2s) {
392  SAFEDELETE(pn2s);
393  }
394 
395  pn2s = dynamic_cast<const Node2Scalar *>(SD2.pNode);
396  if (pn2s) {
397  SAFEDELETE(pn2s);
398  }
399 }
400 
401 /* Scrive il contributo dell'elemento al file di restart */
402 std::ostream&
403 GenelSpring::Restart(std::ostream& out) const
404 {
405  return out;
406 }
407 
408 void
410  const VectorHandler& XP)
411 {
413 }
414 
415 /* Tipo di Genel */
418 {
419  return Genel::SPRING;
420 }
421 
422 /* Dimensioni del workspace */
423 void
424 GenelSpring::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
425 {
426  *piNumRows = 2;
427  *piNumCols = 2;
428 }
429 
430 /* assemblaggio jacobiano */
433  doublereal dCoef,
434  const VectorHandler& XCurr,
435  const VectorHandler& XPrimeCurr)
436 {
437  DEBUGCOUT("Entering GenelSpring::AssJac()" << std::endl);
438 
439  FullSubMatrixHandler& WM = WorkMat.SetFull();
440  WM.ResizeReset(2, 2);
441 
442  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex() + 1;
443  integer iNode1ColIndex = SD1.pNode->iGetFirstColIndex() + 1;
444  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex() + 1;
445  integer iNode2ColIndex = SD2.pNode->iGetFirstColIndex() + 1;
446 
447  WM.PutRowIndex(1, iNode1RowIndex);
448  WM.PutColIndex(1, iNode1ColIndex);
449  WM.PutRowIndex(2, iNode2RowIndex);
450  WM.PutColIndex(2, iNode2ColIndex);
451 
452  doublereal dFDE = GetFDE();
453 
454  if (SD1.iOrder == 1) {
455  WM.PutCoef(1, 1, dFDE);
456  WM.PutCoef(2, 1, -dFDE);
457  } else {
458  WM.PutCoef(1, 1, dFDE*dCoef);
459  WM.PutCoef(2, 1, -dFDE*dCoef);
460  }
461 
462  if (SD2.iOrder == 1) {
463  WM.PutCoef(1, 2, -dFDE);
464  WM.PutCoef(2, 2, dFDE);
465  } else {
466  WM.PutCoef(1, 2, -dFDE*dCoef);
467  WM.PutCoef(2, 2, dFDE*dCoef);
468  }
469 
470  return WorkMat;
471 }
472 
473 /* assemblaggio residuo */
476  doublereal dCoef,
477  const VectorHandler& XCurr,
478  const VectorHandler& XPrimeCurr)
479 {
480  DEBUGCOUT("Entering GenelSpring::AssRes()" << std::endl);
481 
482  WorkVec.ResizeReset(2);
483 
484  integer iNode1RowIndex = SD1.pNode->iGetFirstRowIndex()+1;
485  integer iNode2RowIndex = SD2.pNode->iGetFirstRowIndex()+1;
486 
487  doublereal dVal1 = SD1.pNode->dGetDofValue(1, SD1.iOrder);
488  doublereal dVal2 = SD2.pNode->dGetDofValue(1, SD2.iOrder);
489 
490  dVal = dVal2 - dVal1;
492 
493  doublereal d = GetF();
494 
495  WorkVec.PutItem(1, iNode1RowIndex, d);
496  WorkVec.PutItem(2, iNode2RowIndex, -d);
497 
498  return WorkVec;
499 }
500 
501 /* *******PER IL SOLUTORE PARALLELO******** */
502 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
503  * utile per l'assemblaggio della matrice di connessione fra i dofs */
504 void
505 GenelSpring::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
506  connectedNodes.resize(2);
507  connectedNodes[0] = SD1.pNode;
508  connectedNodes[1] = SD2.pNode;
509 }
510 /* ************************************************ */
511 
512 /* GenelSpring - end */
513 
514 
515 /* GenelSpringSupport - begin */
516 
518  const DofOwner* pDO,
519  const ConstitutiveLaw1D* pCL,
520  const ScalarDof& sd, doublereal X0, flag fOutput)
521 : Elem(uLabel, fOutput),
522 Genel(uLabel, pDO, fOutput),
523 ConstitutiveLaw1DOwner(pCL), SD(sd), dVal(0.), dInitVal(X0)
524 {
525  ASSERT(SD.iOrder == 0);
526 }
527 
529 {
530  const Node2Scalar *pn2s;
531 
532  pn2s = dynamic_cast<const Node2Scalar *>(SD.pNode);
533  if (pn2s) {
534  SAFEDELETE(pn2s);
535  }
536 }
537 
538 /* Scrive il contributo dell'elemento al file di restart */
539 std::ostream&
540 GenelSpringSupport::Restart(std::ostream& out) const
541 {
542  return out;
543 }
544 
545 void
547  const VectorHandler& XP)
548 {
550 }
551 
552 /* Tipo di Genel */
555 {
556  return Genel::SPRINGSUPPORT;
557 }
558 
559 /* Dimensioni del workspace */
560 void
561 GenelSpringSupport::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
562 {
563  *piNumRows = 1;
564  *piNumCols = 1;
565 }
566 
567 /* assemblaggio jacobiano */
570  doublereal dCoef,
571  const VectorHandler& XCurr,
572  const VectorHandler& XPrimeCurr)
573 {
574  DEBUGCOUT("Entering GenelSpringSupport::AssJac()" << std::endl);
575 
576  FullSubMatrixHandler& WM = WorkMat.SetFull();
577  WM.ResizeReset(1, 1);
578 
579  integer iNodeRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
580  integer iNodeColIndex = SD.pNode->iGetFirstColIndex() + 1;
581 
582  WM.PutRowIndex(1, iNodeRowIndex);
583  WM.PutColIndex(1, iNodeColIndex);
584 
585  WM.PutCoef(1, 1, GetFDE()*dCoef);
586 
587  return WorkMat;
588 }
589 
590 /* assemblaggio residuo */
593  doublereal dCoef,
594  const VectorHandler& XCurr,
595  const VectorHandler& XPrimeCurr)
596 {
597  DEBUGCOUT("Entering GenelSpringSupport::AssRes()" << std::endl);
598 
599  WorkVec.ResizeReset(1);
600 
601  integer iNodeRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
602 
603  dVal = SD.pNode->dGetX() - dInitVal;
605 
606  WorkVec.PutItem(1, iNodeRowIndex, -GetF());
607 
608  return WorkVec;
609 }
610 
611 /* *******PER IL SOLUTORE PARALLELO******** */
612 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
613  * utile per l'assemblaggio della matrice di connessione fra i dofs */
614 void
616  std::vector<const Node *>& connectedNodes) const {
617  connectedNodes.resize(1);
618  connectedNodes[0] = SD.pNode;
619 }
620 
621 unsigned int GenelSpringSupport::iGetNumPrivData(void) const
622 {
623  return 2u;
624 }
625 
626 unsigned int GenelSpringSupport::iGetPrivDataIdx(const char *s) const
627 {
628  if (0 == strcmp(s, "F")) {
629  return 1u;
630  }
631 
632  if (0 == strcmp(s, "X")) {
633  return 2u;
634  }
635 
636  silent_cerr("genel(" << GetLabel() << "): private data \"" << s << "\" not available" << std::endl);
638 }
639 
641 {
642  switch (i) {
643  case 1u:
644  return GetF();
645  case 2u:
646  return dVal;
647  default:
648  silent_cerr("genel(" << GetLabel() << "): private data index " << i << " out of range" << std::endl);
650  }
651 }
652 /* ************************************************ */
653 
654 /* GenelSpringSupport - end */
655 
656 
657 /* GenelCrossSpringSupport - begin */
658 
660  const DofOwner* pDO,
661  const ConstitutiveLaw1D* pCL,
662  const ScalarDof& sdrow,
663  const ScalarDof& sdcol,
664  flag fOutput)
665 : Elem(uLabel, fOutput),
666 Genel(uLabel, pDO, fOutput),
668 SDRow(sdrow), SDCol(sdcol), dVal(0.)
669 {
670  ASSERT(SDCol.iOrder == 0);
671 }
672 
674 {
675  const Node2Scalar *pn2s;
676 
677  pn2s = dynamic_cast<const Node2Scalar *>(SDRow.pNode);
678  if (pn2s) {
679  SAFEDELETE(pn2s);
680  }
681 
682  pn2s = dynamic_cast<const Node2Scalar *>(SDCol.pNode);
683  if (pn2s) {
684  SAFEDELETE(pn2s);
685  }
686 }
687 
688 /* Scrive il contributo dell'elemento al file di restart */
689 std::ostream&
690 GenelCrossSpringSupport::Restart(std::ostream& out) const
691 {
692  return out;
693 }
694 
695 void
697  const VectorHandler& XP)
698 {
700 }
701 
702 /* Tipo di Genel */
705 {
707 }
708 
709 /* Dimensioni del workspace */
710 void
712 {
713  *piNumRows = 1;
714  *piNumCols = 1;
715 }
716 
717 /* assemblaggio jacobiano */
720  doublereal dCoef,
721  const VectorHandler& XCurr,
722  const VectorHandler& XPrimeCurr)
723 {
724  DEBUGCOUT("Entering GenelCrossSpringSupport::AssJac()" << std::endl);
725 
726  FullSubMatrixHandler& WM = WorkMat.SetFull();
727  WM.ResizeReset(1, 1);
728 
729  integer iNodeRowIndex = SDRow.pNode->iGetFirstRowIndex() + 1;
730  integer iNodeColIndex = SDCol.pNode->iGetFirstColIndex() + 1;
731 
732  WM.PutRowIndex(1, iNodeRowIndex);
733  WM.PutColIndex(1, iNodeColIndex);
734 
735  WM.PutCoef(1, 1, GetFDE()*dCoef);
736 
737  return WorkMat;
738 }
739 
740 /* assemblaggio residuo */
743  doublereal dCoef,
744  const VectorHandler& XCurr,
745  const VectorHandler& XPrimeCurr)
746 {
747  DEBUGCOUT("Entering GenelCrossSpringSupport::AssRes()" << std::endl);
748 
749  WorkVec.ResizeReset(1);
750 
751  integer iNodeRowIndex = SDRow.pNode->iGetFirstRowIndex()+1;
752 
753  dVal = SDCol.pNode->dGetX();
755 
756  WorkVec.PutItem(1, iNodeRowIndex, -GetF());
757 
758  return WorkVec;
759 }
760 
761 /* *******PER IL SOLUTORE PARALLELO******** */
762 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
763  * utile per l'assemblaggio della matrice di connessione fra i dofs */
764 void
766  std::vector<const Node *>& connectedNodes) const {
767  connectedNodes.resize(2);
768  connectedNodes[0] = SDRow.pNode;
769  connectedNodes[1] = SDCol.pNode;
770 }
771 /* ************************************************ */
772 
773 /* GenelCrossSpringSupport - end */
774 
775 
776 /* GenelCrossSpringDamperSupport - begin */
777 
779  unsigned int uLabel, const DofOwner* pDO,
780  const ConstitutiveLaw1D* pCL,
781  const ScalarDof& sdrow,
782  const ScalarDof& sdcol,
783  flag fOutput)
784 : Elem(uLabel, fOutput),
785 Genel(uLabel, pDO, fOutput),
786 ConstitutiveLaw1DOwner(pCL), SDRow(sdrow), SDCol(sdcol),
787 dVal(0.), dValPrime(0.)
788 {
789  ASSERT(SDCol.iOrder == 0);
790 }
791 
793 {
794  const Node2Scalar *pn2s;
795 
796  pn2s = dynamic_cast<const Node2Scalar *>(SDRow.pNode);
797  if (pn2s) {
798  SAFEDELETE(pn2s);
799  }
800 
801  pn2s = dynamic_cast<const Node2Scalar *>(SDCol.pNode);
802  if (pn2s) {
803  SAFEDELETE(pn2s);
804  }
805 }
806 
807 /* Scrive il contributo dell'elemento al file di restart */
808 std::ostream&
810 {
811  return out;
812 }
813 
814 void
816  const VectorHandler& XP)
817 {
819 }
820 
821 /* Tipo di Genel */
824 {
826 }
827 
828 /* Dimensioni del workspace */
829 void
831  integer* piNumCols) const
832 {
833  *piNumRows = 1;
834  *piNumCols = 1;
835 }
836 
837 /* assemblaggio jacobiano */
840  doublereal dCoef,
841  const VectorHandler& XCurr,
842  const VectorHandler& XPrimeCurr)
843 {
844  DEBUGCOUT("Entering GenelCrossSpringDamperSupport::AssJac()" << std::endl);
845 
846  FullSubMatrixHandler& WM = WorkMat.SetFull();
847  WM.ResizeReset(1, 1);
848 
849  integer iNodeRowIndex = SDRow.pNode->iGetFirstRowIndex() + 1;
850  integer iNodeColIndex = SDCol.pNode->iGetFirstColIndex() + 1;
851 
852  WM.PutRowIndex(1, iNodeRowIndex);
853  WM.PutColIndex(1, iNodeColIndex);
854 
855  WM.PutCoef(1, 1, GetFDE()*dCoef+GetFDEPrime());
856 
857  return WorkMat;
858 }
859 
860 /* assemblaggio residuo */
863  doublereal dCoef,
864  const VectorHandler& XCurr,
865  const VectorHandler& XPrimeCurr)
866 {
867  DEBUGCOUT("Entering GenelCrossSpringDamperSupport::AssRes()" << std::endl);
868 
869  WorkVec.ResizeReset(1);
870 
871  integer iNodeRowIndex = SDRow.pNode->iGetFirstRowIndex() + 1;
872 
873  dVal = SDCol.pNode->dGetX();
876 
877  WorkVec.PutItem(1, iNodeRowIndex, -GetF());
878 
879  return WorkVec;
880 }
881 
882 /* *******PER IL SOLUTORE PARALLELO******** */
883 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
884  * utile per l'assemblaggio della matrice di connessione fra i dofs */
885 void
887  std::vector<const Node *>& connectedNodes) const {
888  connectedNodes.resize(2);
889  connectedNodes[0] = SDRow.pNode;
890  connectedNodes[1] = SDCol.pNode;
891 }
892 /* ************************************************ */
893 
894 /* GenelCrossSpringDamperSupport - end */
895 
896 
897 /* GenelSpringDamperSupport - begin */
898 
900  const DofOwner* pDO,
901  const ConstitutiveLaw1D* pCL,
902  const ScalarDof& sd, doublereal X0, flag fOutput)
903 : Elem(uLabel, fOutput),
904 Genel(uLabel, pDO, fOutput),
906 SD(sd), dVal(0.), dInitVal(X0), dValPrime(0.)
907 {
909  ASSERT(sd.iOrder == 0);
910 }
911 
913 {
914  const Node2Scalar *pn2s;
915 
916  pn2s = dynamic_cast<const Node2Scalar *>(SD.pNode);
917  if (pn2s) {
918  SAFEDELETE(pn2s);
919  }
920 }
921 
922 /* Scrive il contributo dell'elemento al file di restart */
923 std::ostream&
924 GenelSpringDamperSupport::Restart(std::ostream& out) const
925 {
926  return out;
927 }
928 
929 void
931  const VectorHandler& XP)
932 {
934 }
935 
936 /* Tipo di Genel */
939 {
941 }
942 
943 /* Dimensioni del workspace */
944 void
946  integer* piNumCols) const
947 {
948  *piNumRows = 1;
949  *piNumCols = 1;
950 }
951 
952 /* assemblaggio jacobiano */
955  doublereal dCoef,
956  const VectorHandler& XCurr,
957  const VectorHandler& XPrimeCurr)
958 {
959  DEBUGCOUT("Entering GenelSpringDamperSupport::AssJac()" << std::endl);
960 
961  FullSubMatrixHandler& WM = WorkMat.SetFull();
962  WM.ResizeReset(1, 1);
963 
964  integer iNodeRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
965  integer iNodeColIndex = SD.pNode->iGetFirstColIndex() + 1;
966 
967  WM.PutRowIndex(1, iNodeRowIndex);
968  WM.PutColIndex(1, iNodeColIndex);
969 
970  WM.PutCoef(1, 1, GetFDE()*dCoef + GetFDEPrime());
971 
972  return WorkMat;
973 }
974 
975 /* assemblaggio residuo */
978  doublereal dCoef,
979  const VectorHandler& XCurr,
980  const VectorHandler& XPrimeCurr)
981 {
982  DEBUGCOUT("Entering GenelSpringDamperSupport::AssRes()" << std::endl);
983 
984  WorkVec.ResizeReset(1);
985 
986  integer iNodeRowIndex = SD.pNode->iGetFirstRowIndex()+1;
987 
988  dVal = SD.pNode->dGetX() - dInitVal;
990 
992 
993  WorkVec.PutItem(1, iNodeRowIndex, -GetF());
994 
995  return WorkVec;
996 }
997 
998 /* *******PER IL SOLUTORE PARALLELO******** */
999 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
1000  * utile per l'assemblaggio della matrice di connessione fra i dofs */
1001 void
1003  std::vector<const Node *>& connectedNodes) const {
1004  connectedNodes.resize(1);
1005  connectedNodes[0] = SD.pNode;
1006 }
1007 /* ************************************************ */
1008 
1009 /* GenelSpringDamperSupport - end */
1010 
1011 
1012 /* GenelMass - begin */
1013 
1014 GenelMass::GenelMass(unsigned int uLabel,
1015  const DofOwner* pDO, const DriveCaller* pDC,
1016  const ScalarDof& sd, flag fOutput)
1017 : Elem(uLabel, fOutput),
1018 Genel(uLabel, pDO, fOutput),
1019 DriveOwner(pDC), SD(sd)
1020 {
1021  NO_OP;
1022 }
1023 
1025 {
1026  const Node2Scalar *pn2s;
1027 
1028  pn2s = dynamic_cast<const Node2Scalar *>(SD.pNode);
1029  if (pn2s) {
1030  SAFEDELETE(pn2s);
1031  }
1032 }
1033 
1034 unsigned int
1036 {
1037  return 1;
1038 }
1039 
1040 /* esegue operazioni sui dof di proprieta' dell'elemento */
1042 GenelMass::GetDofType(unsigned int i ) const
1043 {
1044  ASSERT(i == 0);
1045  return DofOrder::DIFFERENTIAL;
1046 }
1047 
1048 /* Scrive il contributo dell'elemento al file di restart */
1049 std::ostream&
1050 GenelMass::Restart(std::ostream& out) const
1051 {
1052  return out;
1053 }
1054 
1055 /* Tipo di Genel */
1058 {
1059  return Genel::MASS;
1060 }
1061 
1062 /* Dimensioni del workspace */
1063 void
1064 GenelMass::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const
1065 {
1066  *piNumRows = 2;
1067  *piNumCols = 2;
1068 }
1069 
1070 /* assemblaggio jacobiano */
1073  doublereal dCoef,
1074  const VectorHandler& XCurr,
1075  const VectorHandler& XPrimeCurr)
1076 {
1077  DEBUGCOUT("Entering GenelMass::AssJac()" << std::endl);
1078 
1079  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
1080  WM.ResizeReset(3, 0);
1081 
1082  integer iRowIndex = SD.pNode->iGetFirstRowIndex() + 1;
1083  integer iColIndex = SD.pNode->iGetFirstColIndex() + 1;
1084  integer iDerivativeIndex = iGetFirstIndex() + 1;
1085 
1086  WM.PutItem(1, iRowIndex, iDerivativeIndex, dGet());
1087  WM.PutItem(2, iDerivativeIndex, iColIndex, -1.);
1088  WM.PutItem(3, iDerivativeIndex, iDerivativeIndex, dCoef);
1089 
1090  return WorkMat;
1091 }
1092 
1093 /* assemblaggio residuo */
1096  doublereal dCoef,
1097  const VectorHandler& XCurr,
1098  const VectorHandler& XPrimeCurr)
1099 {
1100  DEBUGCOUT("Entering GenelMass::AssRes()" << std::endl);
1101 
1102  WorkVec.ResizeReset(2);
1103 
1104  integer iRowIndex = SD.pNode->iGetFirstRowIndex()+1;
1105  integer iDerivativeIndex = iGetFirstIndex()+1;
1106 
1107  doublereal dVal = SD.pNode->dGetXPrime();
1108  doublereal dDer = XCurr(iDerivativeIndex);
1109  doublereal dDerPrime = XPrimeCurr(iDerivativeIndex);
1110 
1111  WorkVec.PutItem(1, iRowIndex, -dGet()*dDerPrime);
1112  WorkVec.PutItem(2, iDerivativeIndex, dVal - dDer);
1113 
1114  return WorkVec;
1115 }
1116 
1117 void
1119  VectorHandler& X, VectorHandler& XP,
1121 {
1122  X.PutCoef(iGetFirstIndex() + 1, SD.pNode->dGetXPrime());
1123 }
1124 
1125 /* *******PER IL SOLUTORE PARALLELO******** */
1126 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
1127  * utile per l'assemblaggio della matrice di connessione fra i dofs */
1128 void
1129 GenelMass::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
1130  connectedNodes.resize(1);
1131  connectedNodes[0] = SD.pNode;
1132 }
1133 /* ************************************************ */
1134 
1135 /* GenelMass - end */
1136 
ScalarNode * pNode
Definition: node.h:708
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:85
ScalarDof SD
Definition: genel_.h:433
std::ostream & Genels(void) const
Definition: output.h:513
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const =0
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:1064
virtual unsigned int iGetNumDof(void) const
Definition: genel_.cc:62
doublereal dValPrime
Definition: genel_.h:385
ScalarDof SD
Definition: genel_.h:44
doublereal dInitVal
Definition: genel_.h:220
long int flag
Definition: mbdyn.h:43
virtual bool bToBeOutput(void) const
Definition: output.cc:890
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: genel_.cc:409
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:309
virtual void ResizeReset(integer)
Definition: vh.cc:55
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
doublereal dRct
Definition: genel_.h:45
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: genel_.cc:626
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:424
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:1002
GenelSpringSupport(unsigned int uLabel, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const ScalarDof &sd, doublereal X0, flag fOutput)
Definition: genel_.cc:517
int iOrder
Definition: node.h:710
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:862
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:251
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:475
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:268
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:830
doublereal dGet(void) const
Definition: drive.cc:671
ScalarDof SD1
Definition: genel_.h:105
const Tder & GetFDE(void) const
Definition: constltp.h:298
ScalarDof SD
Definition: genel_.h:218
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:1129
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: genel_.cc:229
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:672
virtual unsigned int iGetNumDof(void) const
Definition: genel_.cc:1035
Type
Definition: genel.h:48
ScalarDof SD2
Definition: genel_.h:166
void ResizeReset(integer iNewRow, integer iNewCol)
Definition: submat.cc:1084
virtual const doublereal & dGetX(void) const =0
#define NO_OP
Definition: myassert.h:74
GenelClamp(unsigned int uLabel, const DofOwner *pDO, const DriveCaller *pDC, const ScalarDof &sd, flag fOutput)
Definition: genel_.cc:39
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:561
std::vector< Hint * > Hints
Definition: simentity.h:89
ScalarDof SD2
Definition: genel_.h:106
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:1072
GenelMass(unsigned int uLabel, const DofOwner *pDO, const DriveCaller *pDC, const ScalarDof &sd, flag fOutput)
Definition: genel_.cc:1014
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:704
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
Definition: submat.h:1445
void Resize(integer iNewRow, integer iNewCol)
Definition: submat.cc:1053
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:569
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:183
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:92
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:945
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:809
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: genel_.cc:1118
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:540
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:977
virtual ~GenelSpringSupport(void)
Definition: genel_.cc:528
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:417
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: genel_.cc:930
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:1057
ScalarDof SD1
Definition: genel_.h:165
void PutItem(integer iSubIt, integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:997
virtual const doublereal & dGetXPrime(void) const =0
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: genel_.cc:1042
virtual ~GenelCrossSpringSupport(void)
Definition: genel_.cc:673
virtual ~GenelSpringDamperSupport(void)
Definition: genel_.cc:912
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:361
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:237
DataManager * pDM
Definition: mbpar.h:252
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: genel_.cc:69
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:1095
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:99
GenelDistance(unsigned int uLabel, const DofOwner *pDO, const DriveCaller *pDC, const ScalarDof &sd1, const ScalarDof &sd2, flag fOutput)
Definition: genel_.cc:194
virtual doublereal dGetPrivData(unsigned int i) const
Definition: genel_.cc:640
virtual unsigned int iGetNumPrivData(void) const
Definition: genel_.cc:621
#define DEBUGCOUT(msg)
Definition: myassert.h:232
Definition: genel.h:45
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:592
virtual ~GenelClamp(void)
Definition: genel_.cc:51
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
doublereal dVal
Definition: genel_.h:168
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:742
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &)
Definition: genel_.cc:138
virtual DofOrder::Order GetDofType(unsigned int i) const =0
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: genel_.cc:815
void AfterConvergence(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:288
#define ASSERT(expression)
Definition: colamd.c:977
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:505
virtual DofOrder::Order GetEqType(unsigned int i) const
Definition: genel_.cc:77
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:244
GenelCrossSpringDamperSupport(unsigned int uLabel, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const ScalarDof &sdrow, const ScalarDof &sdcol, flag fOutput)
Definition: genel_.cc:778
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
virtual unsigned int iGetNumDof(void) const
Definition: genel_.cc:223
virtual ~GenelCrossSpringDamperSupport(void)
Definition: genel_.cc:792
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: genel_.cc:342
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:719
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:823
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:403
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:938
virtual Genel::Type GetGenelType(void) const
Definition: genel_.cc:554
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: genel_.cc:546
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:432
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:690
Definition: elem.h:75
doublereal dVal
Definition: genel_.h:219
virtual ~GenelMass(void)
Definition: genel_.cc:1024
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const T & GetF(void) const
Definition: constltp.h:293
virtual ~GenelSpring(void)
Definition: genel_.cc:386
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: genel_.cc:696
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: genel_.cc:711
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:886
doublereal dInitVal
Definition: genel_.h:384
void Output(OutputHandler &OH) const
Definition: genel_.cc:106
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:765
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:924
virtual ~GenelDistance(void)
Definition: genel_.cc:207
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:839
GenelCrossSpringSupport(unsigned int uLabel, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const ScalarDof &sdrow, const ScalarDof &sdcol, flag fOutput)
Definition: genel_.cc:659
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: genel_.cc:168
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:954
SparseSubMatrixHandler & SetSparse(void)
Definition: submat.h:1178
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: genel_.cc:615
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
void Output(OutputHandler &OH) const
Definition: genel_.cc:258
double doublereal
Definition: colamd.c:52
const Tder & GetFDEPrime(void) const
Definition: constltp.h:303
long int integer
Definition: colamd.c:51
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:283
unsigned int GetLabel(void) const
Definition: withlab.cc:62
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: genel_.cc:116
GenelSpringDamperSupport(unsigned int uLabel, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const ScalarDof &sd, doublereal X0, flag fOutput)
Definition: genel_.cc:899
GenelSpring(unsigned int uLabel, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const ScalarDof &sd1, const ScalarDof &sd2, flag fOutput)
Definition: genel_.cc:373
virtual void Resize(integer iNewSize)=0
doublereal dRct
Definition: genel_.h:107
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710
virtual std::ostream & Restart(std::ostream &out) const
Definition: genel_.cc:1050
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88