MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
node.cc
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/node.cc,v 1.57 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 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
33 
34 #include "mynewmem.h"
35 #include "node.h"
36 #include "solman.h"
37 
38 
39 /* Node - begin */
40 
41 /* Costruttore */
42 Node::Node(unsigned int uL, const DofOwner* pDO, flag fOut)
43 : WithLabel(uL), DofOwnerOwner(pDO), ToBeOutput(fOut)
44 {
45  NO_OP;
46 }
47 
48 /* Distruttore banale */
50 {
51  NO_OP;
52 }
53 
54 std::ostream&
55 Node::DescribeDof(std::ostream& out, const char *prefix, bool bInitial) const
56 {
57  return out;
58 }
59 
60 void
61 Node::DescribeDof(std::vector<std::string>& desc, bool bInitial, int i) const
62 {
63  ASSERT(i <= 0);
64  desc.resize(0);
65 }
66 
67 std::ostream&
68 Node::DescribeEq(std::ostream& out, const char *prefix, bool bInitial) const
69 {
70  return out;
71 }
72 
73 void
74 Node::DescribeEq(std::vector<std::string>& desc, bool bInitial, int i) const
75 {
76  ASSERT(i <= 0);
77  desc.resize(0);
78 }
79 
80 /* Ritorna gli indici di riga e colonna. Tipicamente sono gli stessi */
81 integer
83 {
84  return iGetFirstIndex();
85 }
86 
87 integer
89 {
90  return iGetFirstIndex();
91 }
92 
94 str2nodetype(const char *const s)
95 {
96  for (int i = 0; i < Node::LASTNODETYPE; i++) {
97  if (strcasecmp(s, psReadNodesNodes[i]) == 0) {
98  return Node::Type(i);
99  }
100  }
101 
102  return Node::UNKNOWN;
103 }
104 
105 /* Node - end */
106 
107 
108 /* ScalarNode - begin */
109 
110 ScalarNode::ScalarNode(unsigned int uL, const DofOwner* pDO, flag fOut)
111 : Node(uL, pDO, fOut)
112 {
113  NO_OP;
114 }
115 
117 {
118  NO_OP;
119 }
120 
121 /* default output: do nothing */
122 std::ostream&
123 ScalarNode::Output(std::ostream& out) const
124 {
125  return out;
126 }
127 
128 /* Scrive l'output come abstract */
129 void
131 {
132  (void)Output(OH.Abstract());
133 }
134 
135 unsigned int
137 {
138  return 1;
139 }
140 
141 void
143 {
144  Update(X, XP);
145 }
146 
147 /* ScalarNode - end */
148 
149 
150 /* ScalarDifferentialNode - begin */
151 
153  const DofOwner* pDO,
154  const doublereal& dx,
155  const doublereal& dxp,
156  flag fOut)
157 : ScalarNode(uL, pDO, fOut), dX(dx), dXP(dxp), dXPrev(dx), dXPPrev(dxp)
158 {
159  NO_OP;
160 }
161 
163 {
164  NO_OP;
165 }
166 
167 /* Tipo di nodo */
170 {
171  /* Should be Node::SCALAR; keep using Node::ABSTRACT
172  * for backward compatibility */
173  return Node::ABSTRACT;
174 }
175 
176 /* esegue operazioni sui dof di proprieta' dell'elemento
177  * in particolare ritorna il tipo di Dof in base all'indice i. Di default
178  * i Dof dei nodi sono assunti differenziali */
181 {
182  ASSERT(i < iGetNumDof());
183  return DofOrder::DIFFERENTIAL;
184 }
185 
186 /* Restituisce il valore del dof iDof;
187  * se differenziale, iOrder puo' essere = 1 per la derivata */
188 const doublereal&
189 ScalarDifferentialNode::dGetDofValue(int iDof, int iOrder) const
190 {
191  ASSERT(iDof == 1);
192  ASSERT(iOrder == 0 || iOrder == 1);
193  if (iOrder == 0) {
194  return dX;
195  }
196  return dXP;
197 }
198 
199 /* Restituisce il valore del dof iDof al passo precedente;
200  * se differenziale, iOrder puo' essere = 1 per la derivata */
201 const doublereal&
202 ScalarDifferentialNode::dGetDofValuePrev(int iDof, int iOrder) const
203 {
204  ASSERT(iDof == 1);
205  ASSERT(iOrder == 0 || iOrder == 1);
206  if (iOrder == 0) {
207  return dXPrev;
208  }
209  return dXPPrev;
210 }
211 
212 /* Setta il valore del dof iDof a dValue;
213  * se differenziale, iOrder puo' essere = 1 per la derivata */
214 void
216  unsigned int iDof,
217  unsigned int iOrder)
218 {
219  ASSERT(iDof == 1);
220  ASSERT(iOrder == 0 || iOrder == 1);
221  if (iOrder == 0) {
222  dX = dValue;
223  } else if (iOrder == 1) {
224  dXP = dValue;
225  }
226 }
227 
228 /* Funzioni "spurie": consentono l'accesso ai dati privati;
229  * sono state definite perche' i nodi astratti sono usati nei
230  * modi piu' strani e quindi puo' essere necessario l'accesso */
231 void
233 {
234  dX = d;
235 }
236 
237 /* only for differential nodes!?! */
238 void
240 {
241  dXP = d;
242 }
243 
244 void
248 {
249  integer iIndex = iGetFirstIndex();
250  X.PutCoef(iIndex + 1, dX);
251  XP.PutCoef(iIndex + 1, dXP);
252 }
253 
254 void
256  const class VectorHandler& XP)
257 {
258  integer iFirstIndex = iGetFirstIndex() + 1;
259 
260  dXPrev = dX;
261  dXPPrev = dXP;
262 
263  dX = X(iFirstIndex);
264  dXP = XP(iFirstIndex);
265 }
266 
267 std::ostream&
268 ScalarDifferentialNode::Output(std::ostream& out) const
269 {
270  if (bToBeOutput()) {
271  out << std::setw(8) << GetLabel()
272  << " " << dX
273  << " " << dXP
274  << std::endl;
275  }
276  return out;
277 }
278 
279 /*
280  * Each node should prepend its type
281  */
282 std::ostream&
283 ScalarDifferentialNode::Restart(std::ostream& out) const
284 {
285  out << " " << psReadNodesNodes[GetNodeType()]
286  << ": " << GetLabel();
287 
288  if (!GetName().empty()) {
289  out << ", name, \"" << GetName() << "\"";
290  }
291 
292  return out << ", value, " << dX
293  << ", derivative, " << dXP << ";" << std::endl;
294 }
295 
296 unsigned int
298 {
299  return 2;
300 }
301 
302 unsigned int
304 {
305  ASSERT(s != 0);
306 
307  /*
308  * "x" => 1
309  * "xP" => 2
310  */
311 
312  if (s[0] != 'x') {
313  return 0;
314  }
315 
316  if (s[1] == '\0') {
317  return 1;
318  }
319 
320  if (s[1] == 'P' && s[2] == '\0') {
321  return 2;
322  }
323 
324  return 0;
325 }
326 
329 {
330  switch (i) {
331  case 1:
332  return dX;
333 
334  case 2:
335  return dXP;
336 
337  }
338 
340 }
341 
342 /* ScalarDifferentialNode - end */
343 
344 
345 /* ScalarAlgebraicNode - begin */
346 
348  const DofOwner* pDO,
349  doublereal dx,
350  flag fOut)
351 : ScalarNode(uL, pDO, fOut), dX(dx), dXPrev(dx)
352 {
353  NO_OP;
354 }
355 
357 {
358  NO_OP;
359 }
360 
361 /* Tipo di nodo */
364 {
365  /* Should be Node::SCALAR; keep using Node::ABSTRACT
366  * for backward compatibility */
367  return Node::ABSTRACT;
368 }
369 
370 /* esegue operazioni sui dof di proprieta' dell'elemento
371  * in particolare ritorna il tipo di Dof in base all'indice i. Di default
372  * i Dof dei nodi sono assunti differenziali */
374 ScalarAlgebraicNode::GetDofType(unsigned int i) const
375 {
376  ASSERT(i < iGetNumDof());
377  return DofOrder::ALGEBRAIC;
378 }
379 
380 /* Restituisce il valore del dof iDof;
381  * se differenziale, iOrder puo' essere = 1 per la derivata */
382 const doublereal&
383 ScalarAlgebraicNode::dGetDofValue(int iDof, int iOrder) const
384 {
385  ASSERT(iDof == 1);
386  ASSERT(iOrder == 0);
387  return dX;
388 }
389 
390 /* Restituisce il valore del dof iDof al passo precedente;
391  * se differenziale, iOrder puo' essere = 1 per la derivata */
392 const doublereal&
393 ScalarAlgebraicNode::dGetDofValuePrev(int iDof, int iOrder) const
394 {
395  ASSERT(iDof == 1);
396  ASSERT(iOrder == 0);
397  return dXPrev;
398 }
399 
400 /* Setta il valore del dof iDof a dValue;
401  * se differenziale, iOrder puo' essere = 1 per la derivata */
402 void
404  unsigned int iDof,
405  unsigned int iOrder)
406 {
407  ASSERT(iDof == 1);
408  ASSERT(iOrder == 0);
409  dX = dValue;
410 }
411 
412 /* Funzioni "spurie": consentono l'accesso ai dati privati;
413  * sono state definite perche' i nodi astratti sono usati nei
414  * modi piu' strani e quindi puo' essere necessario l'accesso */
415 void
417 {
418  dX = d;
419 }
420 
421 
422 /* only for differential nodes!?! */
423 void
425 {
426  DEBUGCERR("Error, setting derivative from algebraic dof" << std::endl);
428 }
429 
430 void
432  VectorHandler& X, VectorHandler& /* XP */ ,
434 {
435  integer iIndex = iGetFirstIndex();
436  X.PutCoef(iIndex + 1, dX);
437 }
438 
439 void
441  const class VectorHandler& /* XP */ )
442 {
443  integer iFirstIndex = iGetFirstIndex()+1;
444 
445  dXPrev = dX;
446  dX = X(iFirstIndex);
447 }
448 
449 std::ostream&
450 ScalarAlgebraicNode::Output(std::ostream& out) const
451 {
452  if (bToBeOutput()) {
453  out << std::setw(8) << GetLabel()
454  << " " << dX << std::endl;
455  }
456  return out;
457 }
458 
459 /*
460  * Each node should prepend its type
461  */
462 std::ostream&
463 ScalarAlgebraicNode::Restart(std::ostream& out) const
464 {
465  out << " " << psReadNodesNodes[GetNodeType()]
466  << ": " << GetLabel();
467 
468  if (!GetName().empty()) {
469  out << ", name, \"" << GetName() << "\"";
470  }
471 
472  return out << ", value, " << dX << ";" << std::endl;
473 }
474 
475 unsigned int
477 {
478  ASSERT(s != 0);
479 
480  /*
481  * "x" => 1
482  */
483 
484  if (s[0] == 'x' && s[1] == '\0') {
485  return 1;
486  }
487 
488  return 0;
489 }
490 
491 /* ScalarAlgebraicNode - end */
492 
493 
494 /* ParameterNode - begin */
495 
497  const DofOwner* pDO,
498  doublereal dx,
499  flag fOut)
500 : ScalarAlgebraicNode(uL, pDO, dx, fOut)
501 {
502  NO_OP;
503 }
504 
506 {
507  NO_OP;
508 }
509 
510 /* Tipo del nodo (usato solo per debug ecc.) */
513 {
514  return Node::PARAMETER;
515 }
516 
517 unsigned int
519 {
520  return 0;
521 }
522 
524 ParameterNode::GetDofType(unsigned int i) const
525 {
527  return DofOrder::UNKNOWN;
528 }
529 
530 /* Output di default per nodi di cui non si desidera output */
531 void
533 {
534  if (bToBeOutput()) {
535  std::ostream& out = OH.Parameters();
536 
537  out << std::setw(8) << GetLabel()
538  << " " << dGetX() << std::endl;
539  }
540 }
541 
542 void
544  VectorHandler& /* X */ , VectorHandler& /* XP */ ,
546 {
547  NO_OP;
548 }
549 
550 /* Aggiorna dati in base alla soluzione */
551 void
553  const VectorHandler& /* XPrimeCurr */ )
554 {
555  NO_OP;
556 }
557 
558 /* Inverse Dynamics */
559 void
561  const int iOrder)
562 {
563  NO_OP;
564 }
565 
566 void
568  VectorHandler& /* XP */ )
569 {
570  NO_OP;
571 }
572 
573 /* ParameterNode - end */
574 
575 
576 /* Node2Scalar - begin */
577 
579 : iDofNumber(-1), pNode(0)
580 {
581  NO_OP;
582 }
583 
585 : iDofNumber(id), pNode(p)
586 {
587  NO_OP;
588 }
589 
591 {
592  NO_OP;
593 }
594 
596 : ScalarNode(nd.pNode->GetLabel(), nd.pNode->pGetDofOwner(), 0), ND(nd)
597 {
598  NO_OP;
599 }
600 
602 {
603  NO_OP;
604 }
605 
606 /* Tipo del nodo (usato solo per debug ecc.) */
609 {
610  return ND.pNode->GetNodeType();
611 }
612 
613 /* Contributo del nodo al file di restart */
614 std::ostream&
615 Node2Scalar::Restart(std::ostream& out) const
616 {
617  out << "# Node2Scalar: warning, not implemented yet " << std::endl;
618  return out;
619 }
620 
621 unsigned int
623 {
624  return 1;
625 }
626 
627 /* esegue operazioni sui dof di proprieta' dell'elemento
628  * in particolare ritorna il tipo di Dof in base all'indice i.
629  * Di default i Dof dei nodi sono assunti differenziali */
631 Node2Scalar::GetDofType(unsigned int i) const
632 {
633  ASSERT(i < iGetNumDof());
634  return DofOrder::DIFFERENTIAL;
635 }
636 
637 /* Ritorna gli indici di riga e colonna. Tipicamente sono gli stessi */
638 integer
640 {
641  return ND.pNode->iGetFirstRowIndex() + ND.iDofNumber;
642 }
643 
645 {
646  return ND.pNode->iGetFirstColIndex() + ND.iDofNumber;
647 }
648 
649 /* Restituisce il valore del dof iDof;
650  * se differenziale, iOrder puo' essere = 1 per la derivata */
651 const doublereal&
652 Node2Scalar::dGetDofValue(int iDof, int iOrder) const
653 {
654  if (iDof != 1) {
656  }
657  return ND.pNode->dGetDofValue(ND.iDofNumber + 1, iOrder);
658 }
659 
660 /* Restituisce il valore del dof iDof al passo precedente;
661  * se differenziale, iOrder puo' essere = 1 per la derivata */
662 const doublereal&
663 Node2Scalar::dGetDofValuePrev(int iDof, int iOrder) const
664 {
665  if (iDof != 1) {
667  }
668  return ND.pNode->dGetDofValuePrev(ND.iDofNumber + 1, iOrder);
669 }
670 
671 /* Setta il valore del dof iDof a dValue;
672  * se differenziale, iOrder puo' essere = 1 per la derivata */
673 void
675  unsigned int iDof,
676  unsigned int iOrder)
677 {
678  ASSERT(iDof == 1);
679  if (iDof == 1) {
680  dynamic_cast<Node*>(ND.pNode)->SetDofValue(dValue, ND.iDofNumber + 1, iOrder);
681  }
683 }
684 
685 /* Funzioni "spurie": consentono l'accesso ai dati privati;
686  * sono state definite perche' i nodi astratti sono usati nei
687  * modi piu' strani e quindi puo' essere necessario l'accesso */
688 void
690 {
691  SetDofValue(d, 1, 0);
692 }
693 
694 /* only for differential nodes!?! */
695 void
697 {
698  SetDofValue(d, 1, 1);
699 }
700 
701 /* Node2Scalar - end */
702 
703 
704 /* ScalarDof - begin */
705 
707 : pNode(0), iOrder(0), iIndex(0)
708 {
709  NO_OP;
710 }
711 
713 : pNode(sd.pNode), iOrder(sd.iOrder), iIndex(sd.iIndex)
714 {
715  NO_OP;
716 }
717 
718 ScalarDof::ScalarDof(ScalarNode* p, int iO, int iI)
719 : pNode(p), iOrder(iO), iIndex(iI)
720 {
721  NO_OP;
722 }
723 
725 {
726  NO_OP;
727 }
728 
729 const doublereal &
731 {
732  return pNode->dGetDofValue(1, iOrder);
733 }
734 
735 const doublereal &
737 {
738  return pNode->dGetDofValuePrev(1, iOrder);
739 }
740 
741 std::ostream&
742 ScalarDof::RestartScalarDofCaller(std::ostream& out) const
743 {
744  Node::Type type = pNode->GetNodeType();
745  switch (type) {
746  case Node::PARAMETER :
747  out << pNode->GetLabel() << ", "
748  << psReadNodesNodes[type];
749  break;
750 
751  case Node::STRUCTURAL :
752  out << pNode->GetLabel() << ", "
753  << psReadNodesNodes[type] << ", "
754  << iIndex << ", ";
755  if (iOrder > 0) {
756  out << "order, " << iOrder << std::endl;
757  } else {
758  out << "algebraic";
759  }
760  break;
761 
762  case Node::ABSTRACT:
763  case Node::ELECTRIC:
764  case Node::THERMAL:
765  case Node::HYDRAULIC:
766  out << "# RestartScalarDofCaller: warning, not implemented yet";
767  break;
768 
769  default :
770  NO_OP;
771  }
772  return out;
773 }
774 /* ScalarDof - end */
ScalarNode * pNode
Definition: node.h:708
virtual void SetX(const doublereal &d)
Definition: node.cc:689
virtual ~ParameterNode(void)
Definition: node.cc:505
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const =0
long int flag
Definition: mbdyn.h:43
virtual bool bToBeOutput(void) const
Definition: output.cc:890
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: node.cc:55
const char * psReadNodesNodes[]
Definition: enums.cc:398
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
doublereal dXPPrev
Definition: node.h:282
std::ostream & RestartScalarDofCaller(std::ostream &out) const
Definition: node.cc:742
Definition: node.h:67
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: node.cc:245
doublereal dXPrev
Definition: node.h:408
doublereal dX
Definition: node.h:275
virtual std::ostream & Restart(std::ostream &out) const
Definition: node.cc:615
virtual void Update(const class VectorHandler &, const class VectorHandler &)
Definition: node.cc:440
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const
Definition: node.cc:202
virtual void Update(const class VectorHandler &, const class VectorHandler &)
Definition: node.cc:255
virtual std::ostream & DescribeEq(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: node.cc:68
virtual Node::Type GetNodeType(void) const
Definition: node.cc:363
virtual ~NodeDof(void)
Definition: node.cc:590
ParameterNode(unsigned int uL, const DofOwner *pDO, doublereal dx, flag fOut)
Definition: node.cc:496
int iOrder
Definition: node.h:710
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: node.cc:476
ScalarDifferentialNode(unsigned int uL, const DofOwner *pDO, const doublereal &dx, const doublereal &dxp, flag fOut)
Definition: node.cc:152
virtual ~Node2Scalar(void)
Definition: node.cc:601
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: node.cc:567
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: node.cc:431
virtual void SetXPrime(const doublereal &d)
Definition: node.cc:696
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: node.cc:303
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const =0
Node::Type str2nodetype(const char *const s)
Definition: node.cc:94
const doublereal & dGetValuePrev(void) const
Definition: node.cc:736
virtual void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
Definition: node.cc:674
virtual doublereal dGetPrivData(unsigned int i) const
Definition: node.cc:328
Node2Scalar(const NodeDof &nd)
Definition: node.cc:595
#define DEBUGCERR(msg)
Definition: myassert.h:235
#define NO_OP
Definition: myassert.h:74
virtual Node::Type GetNodeType(void) const
Definition: node.cc:608
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const
Definition: node.cc:383
std::vector< Hint * > Hints
Definition: simentity.h:89
virtual ~ScalarDifferentialNode(void)
Definition: node.cc:162
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:639
virtual std::ostream & Output(std::ostream &out) const
Definition: node.cc:268
doublereal dX
Definition: node.h:405
virtual void SetX(const doublereal &d)
Definition: node.cc:232
std::ostream & Abstract(void) const
Definition: output.h:429
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: node.cc:180
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const
Definition: node.cc:189
virtual void SetXPrime(const doublereal &d)
Definition: node.cc:424
virtual void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
Definition: node.cc:215
ScalarNode(unsigned int uL, const DofOwner *pDO, flag fOut)
Definition: node.cc:110
virtual const doublereal & dGetX(void) const
Definition: node.h:492
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: node.cc:543
virtual unsigned int iGetNumDof(void) const
Definition: node.cc:518
std::ostream & Restart(std::ostream &out) const
Definition: node.cc:283
virtual void Update(const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: node.cc:552
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: node.cc:524
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: node.cc:374
virtual void SetXPrime(const doublereal &d)
Definition: node.cc:239
std::ostream & Parameters(void) const
Definition: output.h:559
Type
Definition: node.h:71
virtual ~ScalarAlgebraicNode(void)
Definition: node.cc:356
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const
Definition: node.cc:393
~ScalarDof(void)
Definition: node.cc:724
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const
Definition: node.cc:652
#define ASSERT(expression)
Definition: colamd.c:977
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const
Definition: node.cc:663
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
ScalarAlgebraicNode(unsigned int uL, const DofOwner *pDO, doublereal dx, flag fOut)
Definition: node.cc:347
virtual unsigned int iGetNumPrivData(void) const
Definition: node.cc:297
doublereal dXPrev
Definition: node.h:280
virtual ~Node(void)
Definition: node.cc:49
int iIndex
Definition: node.h:711
virtual void Output(OutputHandler &OH) const
Definition: node.cc:532
virtual unsigned int iGetNumDof(void) const
Definition: node.cc:136
virtual void SetX(const doublereal &d)
Definition: node.cc:416
virtual Node::Type GetNodeType(void) const =0
ScalarDof(void)
Definition: node.cc:706
doublereal dXP
Definition: node.h:277
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: node.cc:631
int iDofNumber
Definition: node.h:580
Node(unsigned int uL, const DofOwner *pDO, flag fOut)
Definition: node.cc:42
Definition: node.h:578
Node * pNode
Definition: node.h:582
virtual Node::Type GetNodeType(void) const
Definition: node.cc:512
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: node.cc:142
virtual std::ostream & Output(std::ostream &out) const
Definition: node.cc:123
const std::string & GetName(void) const
Definition: withlab.cc:68
virtual Node::Type GetNodeType(void) const
Definition: node.cc:169
double doublereal
Definition: colamd.c:52
NodeDof(void)
Definition: node.cc:578
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62
virtual ~ScalarNode(void)
Definition: node.cc:116
const doublereal & dGetValue(void) const
Definition: node.cc:730
virtual std::ostream & Output(std::ostream &out) const
Definition: node.cc:450
std::ostream & Restart(std::ostream &out) const
Definition: node.cc:463
NodeDof ND
Definition: node.h:601
virtual unsigned int iGetNumDof(void) const
Definition: node.cc:622
virtual void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
Definition: node.cc:403
virtual void Update(const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: simentity.cc:98
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:644
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88