MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
node.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/node.h,v 1.59 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 /* nodi */
33 
34 #ifndef NODE_H
35 #define NODE_H
36 
37 #include "myassert.h"
38 
39 #include "output.h"
40 #include "withlab.h"
41 #include "dofown.h"
42 #include "simentity.h"
43 
44 /*
45  * Array dei nomi dei nodi.
46  * Usato per output
47  * @see Node::Type
48  */
49 extern const char* psNodeNames[];
50 
51 /*
52  * Array delle stringhe di identificazione dei tipi di nodi.
53  * Usato per input di controllo
54  * @see Node::Type
55  */
56 extern const char* psReadControlNodes[];
57 
58 /*
59  * Array delle stringhe di identificazione dei tipi di nodi.
60  * Usato per input dei nodi
61  * @see Node::Type
62  */
63 extern const char* psReadNodesNodes[];
64 
65 /* Node - begin */
66 
67 class Node : public WithLabel, public SimulationEntity,
68 public DofOwnerOwner, public ToBeOutput {
69 public:
70  /* Enumerazione dei tipi di nodi */
71  enum Type {
72  UNKNOWN = -1,
73 
74  /* Should be Node::SCALAR; keep using Node::ABSTRACT
75  * for backward compatibility */
76  ABSTRACT = 0,
77 
83 
85  };
86 
87 public:
88  /* Errori: */
89  class ErrGeneric : public MBDynErrBase {
90  public:
92  };
93 
94  /* Costruttori */
95 
96  /*
97  * Costruttore.
98  * @param uL label
99  * @param pDO puntatore al DofOwner relativo, gestito da DofOwnerOwner
100  * @param fOut flag di output, gestito da ToBeOutput
101  * @see DofOwner
102  * @see DofOwnerOwner
103  * @see ToBeOutput
104  */
105  Node(unsigned int uL, const DofOwner* pDO, flag fOut);
106 
107  /* Distruttore */
108  virtual ~Node(void);
109 
110  /* Funzioni di servizio */
111  const Node *GetNode(void) const { return this; };
112 
113  /* Tipo del nodo (usato per debug ecc.) */
114  virtual Node::Type GetNodeType(void) const = 0;
115 
116  /* Contributo del nodo al file di restart */
117  virtual std::ostream& Restart(std::ostream& out) const = 0;
118 
119  /*
120  * Describe the degrees of freedom
121  */
122  virtual std::ostream& DescribeDof(std::ostream& out,
123  const char *prefix = "",
124  bool bInitial = false) const;
125  virtual void DescribeDof(std::vector<std::string>& desc,
126  bool bInitial = false,
127  int i = -1) const;
128 
129  virtual std::ostream& DescribeEq(std::ostream& out,
130  const char *prefix = "",
131  bool bInitial = false) const;
132  virtual void DescribeEq(std::vector<std::string>& desc,
133  bool bInitial = false,
134  int i = -1) const;
135 
136  /* Metodi che operano sui DoF */
137 
138  /*
139  * Ritorna il primo indice di riga dei DoF del nodo, in base 0.
140  * Ovvero, l'indice del primo DoF del nodo in un vettore a base zero.
141  * Per avere gli indici in un vettore a base 1 (stile Fortran),
142  * occorre sommare al risultato il numero del DoF.
143  * Vedi iGetFirstColIndex()
144  */
145  virtual integer iGetFirstRowIndex(void) const;
146 
147  /*
148  * Ritorna gli indici di colonna dei DoF.
149  * Per la numerazione degli indici vedi iGetFirstRowIndex().
150  * Tipicamente gli indici di riga e di colonna sono gli stessi,
151  * tranne in alcuni casi notevoli.
152  */
153  virtual integer iGetFirstColIndex(void) const;
154 
155  /*
156  * Restituisce il valore del DoF iDof.
157  * Se il nodo e' differenziale, iOrder puo' essere = 1 per avere la derivata
158  */
159  virtual const doublereal& dGetDofValue(int iDof, int iOrder = 0) const = 0;
160 
161  /*
162  * Restituisce il valore del DoF iDof al passo precedente.
163  * Se il nodo e' differenziale, iOrder puo' essere = 1 per avere la derivata
164  */
165  virtual const doublereal& dGetDofValuePrev(int iDof, int iOrder = 0) const = 0;
166 
167  /*
168  * Setta il valore del DoF iDof a dValue.
169  * Se il nodo e' differenziale, iOrder puo' essere = 1
170  * per operare sulla derivata
171  */
172  virtual void SetDofValue(const doublereal& dValue,
173  unsigned int iDof,
174  unsigned int iOrder = 0) = 0;
175 
176  /*
177  * priv data and dofs coincide for nodes, unless overridden */
178 
179  /*
180  * Metodi per l'estrazione di dati "privati".
181  * Si suppone che l'estrattore li sappia interpretare.
182  * Come default non ci sono dati privati estraibili
183  */
184  virtual unsigned int iGetNumPrivData(void) const {
185  return iGetNumDof();
186  };
187 
188  /*
189  * Maps a string (possibly with substrings) to a private data;
190  * returns a valid index ( > 0 && <= iGetNumPrivData()) or 0
191  * in case of unrecognized data; error must be handled by caller
192  */
193  virtual unsigned int iGetPrivDataIdx(const char *s) const {
194  return 0;
195  };
196 
197  /*
198  * Returns the current value of a private data
199  * with 0 < i <= iGetNumPrivData()
200  */
201  virtual doublereal dGetPrivData(unsigned int i) const {
202  return dGetDofValue(i);
203  };
204 
205 };
206 
207 Node::Type str2nodetype(const char *const s);
208 
209 /* Node - end */
210 
211 /* ScalarNode - begin */
212 
213 class ScalarNode : public Node {
214 protected:
215  /* scrive l'output */
216  virtual std::ostream& Output(std::ostream& out) const;
217 
218 public:
219  /* Costruttori */
220 
221  /* Costruttore */
222  ScalarNode(unsigned int uL, const DofOwner* pDO, flag fOut);
223 
224  /* Distruttore */
225  virtual ~ScalarNode(void);
226 
227  /* Funzioni di servizio */
228 
229  /* Scrive l'output come abstract */
230  virtual void Output(OutputHandler& OH) const;
231 
232  /*
233  * Ritorna il numero di DoFs ( == 1).
234  * Non usa il DofOwner in quanto viene usata per generale il DofOwner stesso
235  * (per compatibilita' con gli elementi che generano gradi di
236  * liberta' ed in previsione di nodi con un numero variabile di DoF
237  */
238  virtual unsigned int iGetNumDof(void) const;
239 
240  /* Metodi che operano sui valori del DoF.
241  * Funzioni che consentono l'accesso diretto ai dati privati.
242  * sono state definite perche' i nodi scalari sono usati nei
243  * modi piu' strani e quindi puo' essere necessario l'accesso diretto.
244  */
245 
246  /* Setta il valore del DoF */
247  virtual void SetX(const doublereal& d) = 0;
248 
249  /* Ottiene il valore del DoF */
250  virtual const doublereal& dGetX(void) const = 0;
251 
252  /*
253  * Setta il valore della derivata.
254  * Definito solo per nodi differenziali
255  */
256  virtual void SetXPrime(const doublereal& d) = 0;
257 
258  /*
259  * Ottiene il valore della derivata.
260  * Definito solo per nodi differenziali
261  */
262  virtual const doublereal& dGetXPrime(void) const = 0;
263 
264  virtual void AfterPredict(VectorHandler& X, VectorHandler& XP);
265 };
266 
267 /* ScalarNode - end */
268 
269 
270 /* ScalarDifferentialNode - begin */
271 
273 protected:
274  /* Valore del DoF */
275  mutable doublereal dX;
276  /* Valore della derivata del DoF */
277  mutable doublereal dXP;
278 
279  /* Valore del DoF al passo precedente */
281  /* Valore della derivata del DoF al passo precedente */
283 
284  /* scrive l'output */
285  virtual std::ostream& Output(std::ostream& out) const;
286 
287 public:
288  /* Costruttori */
289 
290  /*
291  * Costruttore.
292  * @param uL label
293  * @param pDO DofOwner
294  * @param fOut flag di output
295  * @param dx valore iniziale
296  * @param dxp valore iniziale della derivata
297  */
298  ScalarDifferentialNode(unsigned int uL, const DofOwner* pDO,
299  const doublereal& dx, const doublereal& dxp, flag fOut);
300  /* Distruttore */
301  virtual ~ScalarDifferentialNode(void);
302 
303 
304  /* Metodi di servizio */
305 
306  /* Tipo di nodo */
307  virtual Node::Type GetNodeType(void) const;
308 
309  /*
310  * Esegue operazioni sui DoF di proprieta' dell'elemento.
311  * In particolare ritorna il tipo di DoF in base all'indice i.
312  */
313  virtual DofOrder::Order GetDofType(unsigned int i) const;
314 
315  /* Metodi sui DoF */
316 
317  /*
318  * Restituisce il valore del DoF iDof.
319  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
320  */
321  virtual const doublereal& dGetDofValue(int iDof, int iOrder = 0) const;
322 
323  /*
324  * Restituisce il valore del DoF iDof al passo precedente.
325  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
326  */
327  virtual const doublereal& dGetDofValuePrev(int iDof, int iOrder = 0) const;
328 
329  /*
330  * Setta il valore del DoF iDof a dValue.
331  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
332  */
333  virtual void SetDofValue(const doublereal& dValue,
334  unsigned int iDof,
335  unsigned int iOrder = 0);
336 
337  /*
338  * Funzione che consente l'accesso diretto ai dati privati.
339  * Sono state definite perche' i nodi scalari sono usati nei
340  * modi piu' strani e quindi puo' essere necessario l'accesso diretto
341  */
342  virtual void SetX(const doublereal& d);
343 
344  /* Ottiene il valore del DoF. Vedi SetX() */
345  virtual inline const doublereal& dGetX(void) const;
346 
347  /* Setta la derivata del DoF. Vedi SetX() */
348  virtual void SetXPrime(const doublereal& d);
349 
350  /* Ottiene la derivata del DoF. Vedi GetX() */
351  virtual inline const doublereal& dGetXPrime(void) const;
352 
353  /* Consente di settare il valore iniziale nel vettore della soluzione */
354  virtual void SetValue(DataManager *pDM,
356  SimulationEntity::Hints *ph = 0);
357 
358  /* Aggiorna i valori interni */
359  virtual void Update(const class VectorHandler&, const class VectorHandler&);
360 
361  /* restart */
362  std::ostream& Restart(std::ostream& out) const;
363 
364  /*
365  * Metodi per l'estrazione di dati "privati".
366  * Si suppone che l'estrattore li sappia interpretare.
367  * Come default non ci sono dati privati estraibili
368  */
369  virtual unsigned int iGetNumPrivData(void) const;
370 
371  /*
372  * Maps a string (possibly with substrings) to a private data;
373  * returns a valid index ( > 0 && <= iGetNumPrivData()) or 0
374  * in case of unrecognized data; error must be handled by caller
375  */
376  virtual unsigned int iGetPrivDataIdx(const char *s) const;
377 
378  /*
379  * Returns the current value of a private data
380  * with 0 < i <= iGetNumPrivData()
381  */
382  virtual doublereal dGetPrivData(unsigned int i) const;
383 };
384 
385 inline const doublereal&
387 {
388  return dX;
389 }
390 
391 
392 inline const doublereal&
394 {
395  return dXP;
396 }
397 
398 /* ScalarDifferentialNode - end */
399 
400 /* ScalarAlgebraicNode - begin */
401 
403 protected:
404  /* Valore del DoF */
405  mutable doublereal dX;
406 
407  /* Valore del DoF al passo precedente */
409 
410  /* scrive l'output */
411  virtual std::ostream& Output(std::ostream& out) const;
412 
413 public:
414  /* Costruttori */
415 
416  /* Costruttore */
417  ScalarAlgebraicNode(unsigned int uL, const DofOwner* pDO,
418  doublereal dx, flag fOut);
419 
420  /* Distruttore */
421  virtual ~ScalarAlgebraicNode(void);
422 
423  /* Metodi di servizio */
424 
425  /* Tipo di nodo */
426  virtual Node::Type GetNodeType(void) const;
427 
428  /*
429  * Esegue operazioni sui DoF di proprieta' dell'elemento.
430  * In particolare ritorna il tipo di DoF in base all'indice i.
431  */
432  virtual DofOrder::Order GetDofType(unsigned int i) const;
433 
434  /* Metodi che operano sul valore del DoF */
435 
436  /*
437  * Restituisce il valore del DoF iDof.
438  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
439  */
440  virtual const doublereal& dGetDofValue(int iDof, int iOrder = 0) const;
441 
442  /*
443  * Restituisce il valore del DoF iDof al passo precedente.
444  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
445  */
446  virtual const doublereal& dGetDofValuePrev(int iDof, int iOrder = 0) const;
447 
448  /*
449  * Setta il valore del DoF iDof a dValue.
450  * Se differenziale, iOrder puo' essere = 1 per operare sulla derivata
451  */
452  virtual void SetDofValue(const doublereal& dValue,
453  unsigned int iDof,
454  unsigned int iOrder = 0);
455 
456  /*
457  * Funzione che consente l'accesso diretto ai dati privati.
458  * Sono state definite perche' i nodi astratti sono usati nei
459  * modi piu' strani e quindi puo' essere necessario l'accesso diretto
460  */
461  virtual void SetX(const doublereal& d);
462 
463  /* Ottiene il valore del DoF. Vedi SetX() */
464  virtual inline const doublereal& dGetX(void) const;
465 
466  /* Non definito per nodi algebrici */
467  virtual void SetXPrime(const doublereal& d);
468 
469  /* Non definito per nodi algebrici */
470  virtual inline const doublereal& dGetXPrime(void) const;
471 
472  /* Consente di settare il valore iniziale nel vettore della soluzione */
473  virtual void SetValue(DataManager *pDM,
475  SimulationEntity::Hints *ph = 0);
476 
477  /* Aggiorna i valori interni */
478  virtual void Update(const class VectorHandler&, const class VectorHandler&);
479 
480  /* restart */
481  std::ostream& Restart(std::ostream& out) const;
482 
483  /*
484  * Maps a string (possibly with substrings) to a private data;
485  * returns a valid index ( > 0 && <= iGetNumPrivData()) or 0
486  * in case of unrecognized data; error must be handled by caller
487  */
488  virtual unsigned int iGetPrivDataIdx(const char *s) const;
489 };
490 
491 inline const doublereal&
493 {
494  return dX;
495 }
496 
497 inline const doublereal&
499 {
500  DEBUGCERR("Error, getting derivative from algebraic dof!" << std::endl);
502 }
503 
504 /* ScalarAlgebraicNode - end */
505 
506 /* ParameterNode - begin */
507 
508 /* Parametri.
509  * I nodi di tipo parametro sono derivati dai nodi scalari algebrici,
510  * ma non sono veri nodi. In realta' sono entita' che possiedono un valore,
511  * ma non generano DoFs ed equazioni. Sono usati per consentire di dare in
512  * modo trasparente un valore in ingresso, sotto forma di nodo, a tutti quegli
513  * elementi elettrici e Genel che normalmente usano un DoF scalare senza farlo
514  * partecipare allo jacobiano.
515  */
517 public:
518  /* Costruttori */
519 
520  /* Costruttore */
521  ParameterNode(unsigned int uL, const DofOwner* pDO,
522  doublereal dx, flag fOut);
523  /* Distruttore */
524  virtual ~ParameterNode(void);
525 
526  /* Metodi di servizio */
527 
528  /* Tipo del nodo. Usato solo per debug ecc. */
529  virtual Node::Type GetNodeType(void) const;
530 
531  /*
532  * Ritorna il numero di dofs.
533  * non usa il DofOwner in quanto viene usato per generale il DofOwner stesso.
534  * Ritorna 0 perche' il parametro non ha DoFs
535  */
536  virtual unsigned int iGetNumDof(void) const;
537  virtual DofOrder::Order GetDofType(unsigned int i) const;
538 
539  /* Metodi che agiscono sul valore */
540 
541  /* Metodi relativi al metodo di intergazione */
542 
543  /* Output di default per nodi di cui non si desidera output */
544  virtual void Output(OutputHandler& OH) const;
545 
546  /* Inizializzazione del valore */
547  void SetValue(DataManager *pDM,
549  SimulationEntity::Hints *ph = 0);
550 
551  /* Aggiorna dati in base alla soluzione */
552  virtual void Update(const VectorHandler& XCurr,
553  const VectorHandler& XPrimeCurr);
554 
555  /* Inverse Dynamics */
556  virtual void Update(const VectorHandler& XCurr, const int iOrder);
557 
558  /* Elaborazione dati dopo la predizione */
559  virtual void AfterPredict(VectorHandler& X,
560  VectorHandler& XP);
561 
562  /* the value! */
563  virtual unsigned int iGetNumPrivData(void) const {
564  return 1;
565  };
566 };
567 
568 /* ParameterNode - end */
569 
570 
571 /* Node2Scalar - begin */
572 
573 /*
574  * Struttura di conversione da nodo generico a nodo scalare.
575  * Questa struttura consente di usare un grado di liberta'
576  * di un nodo generico come se fosse un nodo scalare
577  */
578 struct NodeDof {
579  /* DoF del nodo */
580  int iDofNumber; /* Dof of the node */
581  /* Puntatore al nodo */
582  Node* pNode; /* Pointer to the node */
583 
584  /* Costruttori */
585 
586  /* Costruttore di default */
587  NodeDof(void);
588  /* Costruttore */
589  NodeDof(int id, Node* p);
590  /* Distruttore */
591  virtual ~NodeDof(void);
592 };
593 
594 /*
595  * Classe di conversione da nodo generico a nodo scalare.
596  * @see NodeDof
597  */
598 class Node2Scalar : public ScalarNode {
599 protected:
600  /* Struttura che punta ad un DoF di un nodo */
602 
603 public:
604  /* Costruttori */
605 
606  /* Costruttore */
607  Node2Scalar(const NodeDof& nd);
608  /* Distruttore */
609  virtual ~Node2Scalar(void);
610 
611  /* Metodi di servizio */
612  const Node *GetNode(void) const { return ND.pNode; };
613 
614  /* Tipo del nodo. Uusato per debug ecc. */
615  virtual Node::Type GetNodeType(void) const;
616 
617  /* Contributo del nodo al file di restart */
618  virtual std::ostream& Restart(std::ostream& out) const;
619 
620  /*
621  * Ritorna il numero di dofs.
622  * Non usa il DofOwner in quanto viene usata per generare il DofOwner stesso
623  */
624  virtual unsigned int iGetNumDof(void) const;
625 
626  /* Metodi che operano sui valori del DoF */
627 
628  /*
629  * Esegue operazioni sui DoF di proprieta' dell'elemento.
630  * In particolare ritorna il tipo di DoF in base all'indice i.
631  */
632  virtual DofOrder::Order GetDofType(unsigned int i) const;
633 
634  /*
635  * Ritorna gli indici di riga.
636  * Tipicamente sono gli stessi di quelli di colonna
637  */
638  virtual integer iGetFirstRowIndex(void) const;
639 
640  /*
641  * Ritorna gli indici di colonna.
642  * Tipicamente sono gli stessi di quelli di riga.
643  * @see iGetFirstRowIndex()
644  */
645  virtual integer iGetFirstColIndex(void) const;
646 
647  /*
648  * Restituisce il valore del DoF iDof.
649  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
650  */
651  virtual const doublereal& dGetDofValue(int iDof, int iOrder = 0) const;
652 
653  /*
654  * Restituisce il valore del DoF iDof al passo precedente.
655  * Se differenziale, iOrder puo' essere = 1 per ottenere la derivata
656  */
657  virtual const doublereal& dGetDofValuePrev(int iDof, int iOrder = 0) const;
658 
659  /*
660  * Setta il valore del DoF iDof a dValue.
661  * Se differenziale, iOrder puo' essere = 1 per operare sulla derivata
662  */
663  virtual void SetDofValue(const doublereal& dValue,
664  unsigned int iDof,
665  unsigned int iOrder = 0);
666 
667  /*
668  * Funzione che consente l'accesso diretto ai dati privati.
669  * Sono state definite perche' i nodi astratti sono usati nei
670  * modi piu' strani e quindi puo' essere necessario l'accesso diretto
671  */
672  virtual void SetX(const doublereal& d);
673 
674  /* Ottiene il valore del DoF */
675  virtual inline const doublereal& dGetX(void) const;
676 
677  /* Setta il valore della derivata del DoF */
678  virtual void SetXPrime(const doublereal& d);
679 
680  /* Setta il valore della derivata del DoF */
681  virtual inline const doublereal& dGetXPrime(void) const;
682 };
683 
684 inline const doublereal&
686 {
687  return dGetDofValue(1, 0);
688 }
689 
690 inline const doublereal&
692 {
693  return dGetDofValue(1, 1);
694 }
695 
696 /* Node2Scalar - end */
697 
698 
699 /* ScalarDof - begin */
700 
701 /*
702  * Struttura che trasforma un nodo scalare in un grado di liberta' scalare.
703  * In pratica consente di accedere ad un DoF scalare o alla derivata di un
704  * nodo scalare in modo trasparente
705  */
706 struct ScalarDof {
707  /* Puntatore al nodo scalare */
709  /* Ordine del grado di liberta' */
710  int iOrder;
711  int iIndex;
712  /* Costruttori */
713 
714  /* Costruttore di default */
715  ScalarDof(void);
716  ScalarDof(const ScalarDof& sd);
717  /* Costruttore */
718  ScalarDof(ScalarNode* p, int iO, int iI);
719  /* Distruttore */
720  ~ScalarDof(void);
721 
722  /* Funzioni che operano sui valori del DoF */
723 
724  /* Ottiene il valore del DoF */
725  const doublereal & dGetValue(void) const;
726 
727  /* Ottiene il valore del DoF al passo precedente */
728  const doublereal & dGetValuePrev(void) const;
729 
730  /* Scrive nel file di Restart il contributo per la chiamata allo ScalarDof */
731  std::ostream& RestartScalarDofCaller(std::ostream& out) const ;
732 };
733 
734 /* ScalarDof - end */
735 
736 #endif /* NODE_H */
737 
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
virtual std::ostream & Restart(std::ostream &out) const =0
virtual const doublereal & dGetXPrime(void) const
Definition: node.h:691
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: node.h:193
long int flag
Definition: mbdyn.h:43
virtual std::ostream & DescribeDof(std::ostream &out, const char *prefix="", bool bInitial=false) const
Definition: node.cc:55
#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
virtual const doublereal & dGetXPrime(void) const
Definition: node.h:393
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
#define MBDYN_EXCEPT_ARGS_PASSTHRU
Definition: except.h:55
virtual const doublereal & dGetXPrime(void) const
Definition: node.h:498
virtual doublereal dGetPrivData(unsigned int i) const
Definition: node.h:201
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
const char * psReadNodesNodes[]
Definition: enums.cc:398
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
#define MBDYN_EXCEPT_ARGS_DECL
Definition: except.h:43
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const =0
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
virtual const doublereal & dGetX(void) const =0
virtual unsigned int iGetNumPrivData(void) const
Definition: node.h:184
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 void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)=0
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:639
virtual unsigned int iGetNumPrivData(void) const
Definition: node.h:563
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
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
ErrGeneric(MBDYN_EXCEPT_ARGS_DECL)
Definition: node.h:91
virtual void Update(const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: node.cc:552
virtual const doublereal & dGetXPrime(void) const =0
virtual void SetX(const doublereal &d)=0
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
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
const Node * GetNode(void) const
Definition: node.h:612
~ScalarDof(void)
Definition: node.cc:724
virtual const doublereal & dGetDofValue(int iDof, int iOrder=0) const
Definition: node.cc:652
virtual const doublereal & dGetDofValuePrev(int iDof, int iOrder=0) const
Definition: node.cc:663
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
Node::Type str2nodetype(const char *const s)
Definition: node.cc:94
virtual unsigned int iGetNumDof(void) const =0
virtual const doublereal & dGetX(void) const
Definition: node.h:685
const char * psNodeNames[]
Definition: enums.cc:372
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
virtual void SetXPrime(const doublereal &d)=0
Node(unsigned int uL, const DofOwner *pDO, flag fOut)
Definition: node.cc:42
Definition: node.h:578
Node * pNode
Definition: node.h:582
const char * psReadControlNodes[]
Definition: enums.cc:387
virtual Node::Type GetNodeType(void) const
Definition: node.cc:512
virtual void AfterPredict(VectorHandler &X, VectorHandler &XP)
Definition: node.cc:142
virtual std::ostream & Output(std::ostream &out) const
Definition: node.cc:123
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
const Node * GetNode(void) const
Definition: node.h:111
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 const doublereal & dGetX(void) const
Definition: node.h:386
virtual void SetDofValue(const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
Definition: node.cc:403
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:644
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88