MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
StructNode Class Referenceabstract

#include <strnode.h>

Inheritance diagram for StructNode:
Collaboration diagram for StructNode:

Classes

class  ErrGeneric
 

Public Types

enum  Type {
  UNKNOWN = -1, DYNAMIC = 0, STATIC, MODAL,
  DUMMY, LASTSTRUCTNODETYPE
}
 
- Public Types inherited from StructDispNode
enum  Type { UNKNOWN = -1, DYNAMIC = 0, STATIC, LASTSTRUCTDISPNODETYPE }
 
enum  Output { OUTPUT_ACCELERATIONS = (ToBeOutput::OUTPUT_PRIVATE << 0), OUTPUT_INERTIA = (ToBeOutput::OUTPUT_PRIVATE << 1) }
 
- Public Types inherited from Node
enum  Type {
  UNKNOWN = -1, ABSTRACT = 0, STRUCTURAL, ELECTRIC,
  THERMAL, PARAMETER, HYDRAULIC, LASTNODETYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 

Public Member Functions

 StructNode (unsigned int uL, const DofOwner *pDO, const Vec3 &X0, const Mat3x3 &R0, const Vec3 &V0, const Vec3 &W0, const StructNode *pRN, const RigidBodyKinematics *pRBK, doublereal dPosStiff, doublereal dVelStiff, bool bOmRot, OrientationDescription ood, flag fOut)
 
virtual ~StructNode (void)
 
const Mat3x3GetR (void) const
 
const Vec3GetW (void) const
 
const Vec3GetWP (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual StructNode::Type GetStructNodeType (void) const =0
 
virtual const doublerealdGetDofValue (int iDof, int iOrder=0) const
 
virtual const doublerealdGetDofValuePrev (int iDof, int iOrder=0) const
 
virtual void SetDofValue (const doublereal &dValue, unsigned int iDof, unsigned int iOrder=0)
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual const Vec3GetgRef (void) const
 
virtual const Vec3GetgCurr (void) const
 
virtual const Vec3GetgPRef (void) const
 
virtual const Vec3GetgPCurr (void) const
 
virtual const Mat3x3GetRPrev (void) const
 
virtual const Mat3x3GetRRef (void) const
 
virtual const Mat3x3GetRCurr (void) const
 
virtual const Vec3GetWPrev (void) const
 
virtual const Vec3GetWRef (void) const
 
virtual const Vec3GetWCurr (void) const
 
virtual const Vec3GetWPCurr (void) const
 
virtual const Vec3GetWPPrev (void) const
 
virtual bool bOmegaRotates (void) const
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH) const
 
virtual void Update (const VectorHandler &X, const VectorHandler &XP)
 
virtual void DerivativesUpdate (const VectorHandler &X, const VectorHandler &XP)
 
virtual void InitialUpdate (const VectorHandler &X)
 
void Update (const VectorHandler &X, InverseDynamics::Order iOrder)
 
virtual void SetInitialValue (VectorHandler &X)
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
virtual void BeforePredict (VectorHandler &X, VectorHandler &XP, VectorHandler &XPrev, VectorHandler &XPPrev) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
- Public Member Functions inherited from StructDispNode
 StructDispNode (unsigned int uL, const DofOwner *pDO, const Vec3 &X0, const Vec3 &V0, const StructNode *pRN, const RigidBodyKinematics *pRBK, doublereal dPosStiff, doublereal dVelStiff, OrientationDescription od, flag fOut)
 
virtual ~StructDispNode (void)
 
virtual Node::Type GetNodeType (void) const
 
const RigidBodyKinematicspGetRBK (void) const
 
const Vec3GetX (void) const
 
const Vec3GetV (void) const
 
const Vec3GetXPP (void) const
 
virtual integer iGetFirstPositionIndex (void) const
 
virtual integer iGetFirstMomentumIndex (void) const =0
 
virtual StructDispNode::Type GetStructDispNodeType (void) const =0
 
virtual DofOrder::Order GetDofType (unsigned int) const
 
virtual const Vec3GetXPrev (void) const
 
virtual const Vec3GetXCurr (void) const
 
virtual const Vec3GetVPrev (void) const
 
virtual const Vec3GetVCurr (void) const
 
virtual const Vec3GetXPPPrev (void) const
 
virtual const Vec3GetXPPCurr (void) const
 
virtual const doublerealdGetPositionStiffness (void) const
 
virtual const doublerealdGetVelocityStiffness (void) const
 
virtual bool ComputeAccelerations (bool b)
 
virtual bool bComputeAccelerations (void) const
 
virtual bool bOutputAccelerations (void) const
 
virtual void OutputAccelerations (bool bOut)
 
- Public Member Functions inherited from Node
 Node (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~Node (void)
 
const NodeGetNode (void) const
 
virtual integer iGetFirstRowIndex (void) const
 
virtual integer iGetFirstColIndex (void) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual unsigned int iGetNumDof (void) const =0
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from DofOwnerOwner
 DofOwnerOwner (const DofOwner *pDO)
 
virtual ~DofOwnerOwner ()
 
virtual const DofOwnerpGetDofOwner (void) const
 
virtual integer iGetFirstIndex (void) const
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from RigidBodyKinematics
virtual ~RigidBodyKinematics (void)
 
virtual void Update (void)
 

Protected Attributes

Mat3x3 RPrev
 
Mat3x3 RRef
 
Mat3x3 RCurr
 
Vec3 gRef
 
Vec3 gCurr
 
Vec3 gPRef
 
Vec3 gPCurr
 
Vec3 WPrev
 
Vec3 WRef
 
Vec3 WCurr
 
Vec3 WPCurr
 
Vec3 WPPrev
 
bool bOmegaRot
 
- Protected Attributes inherited from StructDispNode
Vec3 XPrev
 
Vec3 XCurr
 
Vec3 VPrev
 
Vec3 VCurr
 
Vec3 XPPCurr
 
Vec3 XPPPrev
 
const StructNodepRefNode
 
OrientationDescription od
 
doublereal dPositionStiffness
 
doublereal dVelocityStiffness
 
const RigidBodyKinematicspRefRBK
 
bool bOutputAccels
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 

Detailed Description

Definition at line 705 of file strnode.h.

Member Enumeration Documentation

Enumerator
UNKNOWN 
DYNAMIC 
STATIC 
MODAL 
DUMMY 
LASTSTRUCTNODETYPE 

Definition at line 716 of file strnode.h.

716  {
717  UNKNOWN = -1,
718 
719  DYNAMIC = 0,
720  STATIC,
721  MODAL,
722  DUMMY,
723 
725  };

Constructor & Destructor Documentation

StructNode::StructNode ( unsigned int  uL,
const DofOwner pDO,
const Vec3 X0,
const Mat3x3 R0,
const Vec3 V0,
const Vec3 W0,
const StructNode pRN,
const RigidBodyKinematics pRBK,
doublereal  dPosStiff,
doublereal  dVelStiff,
bool  bOmRot,
OrientationDescription  ood,
flag  fOut 
)

Definition at line 1439 of file strnode.cc.

References NO_OP.

Referenced by ReadBeam().

1452 : StructDispNode(uL, pDO, X0, V0, pRN, pRBK, dPosStiff, dVelStiff, ood, fOut),
1453 RPrev(R0),
1454 RRef(R0),
1455 RCurr(R0),
1456 gRef(Zero3),
1457 gCurr(Zero3),
1458 gPRef(Zero3),
1459 gPCurr(Zero3),
1460 WPrev(W0),
1461 WRef(W0),
1462 WCurr(W0),
1463 WPCurr(Zero3),
1464 WPPrev(Zero3),
1465 bOmegaRot(bOmRot)
1466 #ifdef USE_AUTODIFF
1467 ,bUpdateRotation(true)
1468 ,dCoefGrad(0.) // This should be safe because the time step should never be zero
1469 #endif
1470 {
1471  NO_OP;
1472 }
Vec3 WPrev
Definition: strnode.h:745
Mat3x3 RPrev
Definition: strnode.h:728
Vec3 WPPrev
Definition: strnode.h:750
const Vec3 Zero3(0., 0., 0.)
bool bOmegaRot
Definition: strnode.h:756
Vec3 WPCurr
Definition: strnode.h:749
#define NO_OP
Definition: myassert.h:74
Vec3 gPCurr
Definition: strnode.h:735
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 WCurr
Definition: strnode.h:747
Mat3x3 RRef
Definition: strnode.h:729
Vec3 gPRef
Definition: strnode.h:734
Vec3 WRef
Definition: strnode.h:746
Vec3 gRef
Definition: strnode.h:732
StructDispNode(unsigned int uL, const DofOwner *pDO, const Vec3 &X0, const Vec3 &V0, const StructNode *pRN, const RigidBodyKinematics *pRBK, doublereal dPosStiff, doublereal dVelStiff, OrientationDescription od, flag fOut)
Definition: strnode.cc:102
Vec3 gCurr
Definition: strnode.h:733
StructNode::~StructNode ( void  )
virtual

Definition at line 1475 of file strnode.cc.

References NO_OP.

1476 {
1477  NO_OP;
1478 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

void StructNode::AfterConvergence ( const VectorHandler X,
const VectorHandler XP,
const VectorHandler XPP 
)
virtual

Reimplemented from StructDispNode.

Definition at line 2592 of file strnode.cc.

References gCurr, gRef, DofOwnerOwner::iGetFirstIndex(), RCurr, RPrev, StructDispNode::VCurr, StructDispNode::VPrev, WCurr, WPCurr, WPPrev, WPrev, StructDispNode::XCurr, StructDispNode::XPPCurr, StructDispNode::XPPPrev, StructDispNode::XPrev, and Zero3.

2595 {
2596 #ifdef USE_AUTODIFF
2597  bUpdateRotation = true;
2598 #endif
2599 /* Right now, AfterConvergence is performed only on position
2600  * to reset orientation parameters. XPrime and XPrimePrime are
2601  * left for compatibility with the virtual method in
2602  * class SimulationEntity */
2603 
2604  integer iFirstIndex = iGetFirstIndex();
2605 
2606 
2607  /* Orientation Parameters:
2608  * Get g and impose it as gRef: successive iterations
2609  * use gRef as reference and the solution is a perturbation
2610  * from it */
2611  gRef = Vec3(X, iFirstIndex + 4);
2612  gCurr = Zero3;
2613  RRef = RCurr;
2614  WRef = WCurr;
2615 
2616  XPrev = XCurr;
2617  RPrev = RCurr;
2618  VPrev = VCurr;
2619  WPrev = WCurr;
2620  XPPPrev = XPPCurr;
2621  WPPrev = WPCurr;
2622 }
Vec3 WPrev
Definition: strnode.h:745
Mat3x3 RPrev
Definition: strnode.h:728
Vec3 WPPrev
Definition: strnode.h:750
const Vec3 Zero3(0., 0., 0.)
Definition: matvec3.h:98
Vec3 WPCurr
Definition: strnode.h:749
Vec3 XPrev
Definition: strnode.h:89
Vec3 XPPCurr
Definition: strnode.h:95
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 WCurr
Definition: strnode.h:747
Mat3x3 RRef
Definition: strnode.h:729
Vec3 XPPPrev
Definition: strnode.h:96
Vec3 WRef
Definition: strnode.h:746
Vec3 gRef
Definition: strnode.h:732
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
Vec3 VPrev
Definition: strnode.h:92
long int integer
Definition: colamd.c:51
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

void StructNode::AfterPredict ( VectorHandler X,
VectorHandler XP 
)
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 2492 of file strnode.cc.

References c, Vec3::Cross(), grad::fabs(), gCurr, WithLabel::GetLabel(), GetRCurr(), GetRPrev(), StructDispNode::GetVCurr(), GetWCurr(), StructDispNode::GetXCurr(), gPCurr, gPRef, gRef, DofOwnerOwner::iGetFirstIndex(), CGR_Rot::MatG, CGR_Rot::MatGm1, CGR_Rot::MatR, Mat3x3::MulMT(), Mat3x3::MulTM(), CGR_Rot::Param, StructDispNode::pRefNode, VectorHandler::Put(), RCurr, RPrev, StructDispNode::VCurr, WCurr, StructDispNode::XCurr, and Zero3.

2493 {
2494 #ifdef USE_AUTODIFF
2495  bUpdateRotation = true;
2496 #endif
2497 
2498  integer iFirstIndex = iGetFirstIndex();
2499 
2500  /* Spostamento e velocita' aggiornati */
2501  XCurr = Vec3(X, iFirstIndex + 1);
2502  VCurr = Vec3(XP, iFirstIndex + 1);
2503 
2504  /* Ottengo il g predetto */
2505  gRef = Vec3(X, iFirstIndex + 4);
2506 
2507  /* Calcolo la matrice RDelta derivante dalla predizione */
2508  Mat3x3 RDelta(CGR_Rot::MatR, gRef);
2509 
2510  /* Calcolo la R corrente in base alla predizione */
2511  RCurr = RDelta*RPrev;
2512 
2513  /* Calcolo la Omega corrente in base alla predizione (gP "totale") */
2514  gPRef = Vec3(XP, iFirstIndex + 4);
2515 
2516  /* Calcolo il nuovo Omega */
2518 
2519  /* Resetto i parametri di rotazione e le derivate, g e gP */
2520  X.Put(iFirstIndex + 4, Zero3);
2521  XP.Put(iFirstIndex + 4, Zero3);
2522 
2523  gCurr = gPCurr = Zero3;
2524 
2525 #ifdef MBDYN_X_RELATIVE_PREDICTION
2526  if (pRefNode) {
2527 
2528  /*
2529  x = x_0 + R_0 * x_r
2530  R = R_0 * R_r
2531  v = v_0 + omega_0 \times ( R_0 * x_r ) + R_0 * v_r
2532  omega = omega_0 + R_0 * omega_r
2533  */
2534  Vec3 X0 = pRefNode->GetXCurr();
2535  Mat3x3 R0 = pRefNode->GetRCurr();
2536  Vec3 V0 = pRefNode->GetVCurr();
2537  Vec3 W0 = pRefNode->GetWCurr();
2538 
2539  XCurr = R0*XCurr; /* temporary */
2540  RCurr = R0*RCurr;
2541  VCurr = V0 + W0.Cross(XCurr) + R0*VCurr;
2542  WCurr = W0 + R0*WCurr;
2543  XCurr += X0; /* plus reference */
2544 
2545  /* alcuni usano anche le predizioni dei parametri
2546  * di rotazione e delle loro derivate come riferimento
2547  * (approccio updated-updated); quindi calcolo
2548  * i parametri di riferimento come i parametri
2549  * che danno una predizione pari alla variazione
2550  * di R0 piu' l'incremento relativo, e le derivate
2551  * dei parametri corrispondenti */
2552  gRef = Vec3(CGR_Rot::Param, R0*RDelta.MulMT(pRefNode->GetRPrev()));
2554 
2555  /* to be safe, the correct values are put back
2556  * in the state vectors */
2557  X.Put(iFirstIndex + 1, XCurr);
2558  XP.Put(iFirstIndex + 1, VCurr);
2559 
2560 #if 0
2561  std::cout << "StructNode(" << GetLabel() << "): "
2562  "AfterPredict: X=" << XCurr
2563  << ", R=" << RCurr
2564  << ", V=" << VCurr
2565  << ", W=" << WCurr
2566  << std::endl;
2567 #endif
2568  }
2569 #endif /* MBDYN_X_RELATIVE_PREDICTION */
2570 
2571  RRef = RCurr;
2572  WRef = WCurr;
2573 
2574 #if 0
2575  /* Ortho check */
2576  Mat3x3 RRT = RCurr.MulTM(RCurr);
2577  RRT(1, 1) -= 1.;
2578  RRT(2, 2) -= 1.;
2579  RRT(3, 3) -= 1.;
2580  doublereal dmax = 0.;
2581  for (int r = 1; r <= 3; r++) {
2582  for (int c = 1; c <= 3; c++) {
2583  dmax = std::max(dmax, fabs(RRT(r, c)));
2584  }
2585  }
2586  silent_cout("### StructNode(" << GetLabel() << ") " << dmax << std::endl);
2587 #endif
2588 }
const MatGm1_Manip MatGm1
Definition: matvec3.cc:647
Mat3x3 RPrev
Definition: strnode.h:728
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
const Param_Manip Param
Definition: matvec3.cc:644
Definition: matvec3.h:98
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 gPCurr
Definition: strnode.h:735
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
Definition: gradient.h:2973
Mat3x3 RCurr
Definition: strnode.h:730
const StructNode * pRefNode
Definition: strnode.h:98
Vec3 WCurr
Definition: strnode.h:747
virtual const Mat3x3 & GetRPrev(void) const
Definition: strnode.h:1000
const MatG_Manip MatG
Definition: matvec3.cc:646
Mat3x3 RRef
Definition: strnode.h:729
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
const MatR_Manip MatR
Definition: matvec3.cc:645
Mat3x3 MulTM(const Mat3x3 &m) const
Definition: matvec3.cc:500
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
Vec3 gPRef
Definition: strnode.h:734
Vec3 WRef
Definition: strnode.h:746
Vec3 gRef
Definition: strnode.h:732
static std::stack< cleanup * > c
Definition: cleanup.cc:59
virtual void Put(integer iRow, const Vec3 &v)
Definition: vh.cc:93
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
Mat3x3 MulMT(const Mat3x3 &m) const
Definition: matvec3.cc:444
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

void StructNode::BeforePredict ( VectorHandler X,
VectorHandler XP,
VectorHandler XPrev,
VectorHandler XPPrev 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode, and DynamicStructNode.

Definition at line 2389 of file strnode.cc.

References Vec3::Cross(), WithLabel::GetLabel(), GetRCurr(), StructDispNode::GetVCurr(), GetWCurr(), StructDispNode::GetXCurr(), DofOwnerOwner::iGetFirstIndex(), CGR_Rot::MatGm1, Mat3x3::MulMT(), Mat3x3::MulTM(), Mat3x3::MulTV(), CGR_Rot::Param, StructDispNode::pRefNode, VectorHandler::Put(), RCurr, RPrev, StructDispNode::VCurr, StructDispNode::VPrev, WCurr, WPrev, StructDispNode::XCurr, StructDispNode::XPrev, and Zero3.

Referenced by DynamicStructNode::BeforePredict().

2393 {
2394  integer iFirstPos = iGetFirstIndex();
2395 
2396 #ifdef MBDYN_X_RELATIVE_PREDICTION
2397  /* If pRefNode is defined, the prediction is made
2398  * on the data in the reference frame it provides */
2399  if (pRefNode) {
2400 
2401  /*
2402  x_r = R_0^T * ( x - x_0 )
2403  R_r = R_0^T * R
2404  v_r = R_0^T * ( v - v_0 - omega_0 \times ( x - x_0 ) )
2405  omega_r = R_0^T * ( omega - omega_0 )
2406  */
2407  Vec3 Xtmp = XCurr - pRefNode->GetXCurr();
2408  const Mat3x3& R0 = pRefNode->GetRCurr();
2409  const Vec3& V0 = pRefNode->GetVCurr();
2410  const Vec3& W0 = pRefNode->GetWCurr();
2411 
2412  XCurr = R0.MulTV(Xtmp);
2413  RCurr = R0.MulTM(RCurr);
2414  VCurr = R0.MulTV(VCurr - V0 - W0.Cross(Xtmp));
2415  WCurr = R0.MulTV(WCurr - W0);
2416 
2417  /* update state vectors with relative position and velocity */
2418  X.Put(iFirstPos + 1, XCurr);
2419  XP.Put(iFirstPos + 1, VCurr);
2420  XPr.Put(iFirstPos + 1, XPrev);
2421  XPPr.Put(iFirstPos + 1, VPrev);
2422 
2423 #if 0
2424  std::cout << "StructNode(" << GetLabel() << "): "
2425  "BeforePredict: X=" << XCurr
2426  << ", R=" << RCurr
2427  << ", V=" << VCurr
2428  << ", W=" << WCurr
2429  << std::endl;
2430 #endif
2431  }
2432 #endif /* MBDYN_X_RELATIVE_PREDICTION */
2433 
2434  /* Questa e' la predizione "consistente", ovvero usa come gdl
2435  * di rotazione i parametri di rotazione "totali" per predire
2436  * la configurazione al nuovo passo, quindi ritorna in forma
2437  * incrementale */
2438 
2439  /* Calcolo la matrice RDelta riferita a tutto il passo trascorso
2440  * all'indietro */
2441  Mat3x3 RDelta(RPrev.MulMT(RCurr));
2442 
2443  /* Mi assicuro che g al passo corrente sia nullo */
2444  X.Put(iFirstPos + 4, Zero3);
2445 
2446  /* Calcolo g al passo precedente attraverso la matrice RDelta riferita
2447  * a tutto il passo. Siccome RDelta e' calcolata all'indietro,
2448  * i parametri sono gia' con il segno corretto */
2449  Vec3 gPrev(CGR_Rot::Param, RDelta);
2450  XPr.Put(iFirstPos + 4, gPrev);
2451 
2452  /* Calcolo gP al passo precedente attraverso la definizione
2453  * mediante le Omega. Siccome i parametri sono con il segno meno
2454  * e la matrice RDelta e' gia' calcolata all'indietro, l'insieme
2455  * e' consistente */
2456  XPPr.Put(iFirstPos + 4, Mat3x3(CGR_Rot::MatGm1, gPrev)*WPrev);
2457 
2458  /* Metto Omega al passo corrente come gP (perche' G(0) = I) */
2459  XP.Put(iFirstPos + 4, WCurr);
2460 
2461 #if 0
2462  std::cout
2463  << " " << std::setw(16) << "prev" << std::setw(16) << "curr" << std::setw(16) << GetLabel() << std::endl
2464  << "x:" << std::setw(16) << XPrev(1) << std::setw(16) << XCurr(1) << std::endl
2465  << " " << std::setw(16) << XPrev(2) << std::setw(16) << XCurr(2) << std::endl
2466  << " " << std::setw(16) << XPrev(3) << std::setw(16) << XCurr(3) << std::endl
2467  << "v:" << std::setw(16) << VPrev(1) << std::setw(16) << VCurr(1) << std::endl
2468  << " " << std::setw(16) << VPrev(2) << std::setw(16) << VCurr(2) << std::endl
2469  << " " << std::setw(16) << VPrev(3) << std::setw(16) << VCurr(3) << std::endl
2470  << "g:" << std::setw(16) << gPrev(1) << std::setw(16) << 0 << std::endl
2471  << " " << std::setw(16) << gPrev(2) << std::setw(16) << 0 << std::endl
2472  << " " << std::setw(16) << gPrev(3) << std::setw(16) << 0 << std::endl
2473  << "w:" << std::setw(16) << XP(iFirstPos+4) << std::setw(16) << WCurr(1) << std::endl
2474  << " " << std::setw(16) << XP(iFirstPos+5) << std::setw(16) << WCurr(2) << std::endl
2475  << " " << std::setw(16) << XP(iFirstPos+6) << std::setw(16) << WCurr(3) << std::endl;
2476 #endif
2477 
2478  XPrev = XCurr;
2479  VPrev = VCurr;
2480 
2481  /* Pongo la R al passo precedente uguale a quella corrente
2482  * mi servira' se devo ripetere il passo con un diverso Delta t
2483  * e per la rettifica dopo la predizione */
2484  RPrev = RCurr;
2485 
2486  /* Pongo le Omega al passo precedente uguali alle Omega al passo corrente
2487  * mi servira' per la correzione dopo la predizione */
2488  WPrev = WCurr;
2489 }
const MatGm1_Manip MatGm1
Definition: matvec3.cc:647
Vec3 WPrev
Definition: strnode.h:745
Mat3x3 RPrev
Definition: strnode.h:728
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
const Param_Manip Param
Definition: matvec3.cc:644
Definition: matvec3.h:98
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 XPrev
Definition: strnode.h:89
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
Mat3x3 RCurr
Definition: strnode.h:730
const StructNode * pRefNode
Definition: strnode.h:98
Vec3 WCurr
Definition: strnode.h:747
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
Mat3x3 MulTM(const Mat3x3 &m) const
Definition: matvec3.cc:500
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Put(integer iRow, const Vec3 &v)
Definition: vh.cc:93
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
Mat3x3 MulMT(const Mat3x3 &m) const
Definition: matvec3.cc:444
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
Vec3 VPrev
Definition: strnode.h:92
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

bool StructNode::bOmegaRotates ( void  ) const
inlinevirtual

Definition at line 1236 of file strnode.h.

Referenced by DataManager::InitialJointAssembly().

1237 {
1238  return bOmegaRot;
1239 }
bool bOmegaRot
Definition: strnode.h:756
void StructNode::DerivativesUpdate ( const VectorHandler X,
const VectorHandler XP 
)
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 2240 of file strnode.cc.

References gCurr, gPCurr, DofOwnerOwner::iGetFirstIndex(), StructDispNode::VCurr, and StructDispNode::XCurr.

2241 {
2242 #ifdef USE_AUTODIFF
2243  bUpdateRotation = true;
2244 #endif
2245 
2246  integer iFirstIndex = iGetFirstIndex();
2247 
2248  /* Forza configurazione e velocita' al valore iniziale */
2249  const_cast<VectorHandler &>(X).Put(iFirstIndex + 1, XCurr);
2250  const_cast<VectorHandler &>(X).Put(iFirstIndex + 4, gCurr);
2251  const_cast<VectorHandler &>(XP).Put(iFirstIndex + 1, VCurr);
2252  const_cast<VectorHandler &>(XP).Put(iFirstIndex + 4, gPCurr);
2253 }
Vec3 gPCurr
Definition: strnode.h:735
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

std::ostream & StructNode::DescribeDof ( std::ostream &  out,
const char *  prefix = "",
bool  bInitial = false 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in ModalNode, and DynamicStructNode.

Definition at line 1499 of file strnode.cc.

References DofOwnerOwner::iGetFirstIndex().

Referenced by DynamicStructNode::DescribeDof(), and ModalNode::DescribeDof().

1500 {
1501  integer iIndex = iGetFirstIndex();
1502 
1503  out
1504  << prefix << iIndex + 1 << "->" << iIndex + 3 << ": "
1505  "position [px,py,pz]" << std::endl
1506  << prefix << iIndex + 4 << "->" << iIndex + 6 << ": "
1507  "orientation parameters [gx,gy,gz]" << std::endl;
1508 
1509  if (bInitial) {
1510  iIndex += 6;
1511  out
1512  << prefix << iIndex + 1 << "->" << iIndex + 3 << ": "
1513  "linear velocity [vx,vy,vz]" << std::endl
1514  << prefix << iIndex + 4 << "->" << iIndex + 6 << ": "
1515  "angular velocity [wx,wy,wz]" << std::endl;
1516  }
1517 
1518  return out;
1519 }
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

void StructNode::DescribeDof ( std::vector< std::string > &  desc,
bool  bInitial = false,
int  i = -1 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in ModalNode, and DynamicStructNode.

Definition at line 1522 of file strnode.cc.

References WithLabel::GetLabel(), MBDYN_EXCEPT_ARGS, sn_initial_dof, and xyz.

1523 {
1524  if (i == -1) {
1525  if (bInitial) {
1526  desc.resize(12);
1527 
1528  } else {
1529  desc.resize(6);
1530  }
1531 
1532  } else {
1533  desc.resize(1);
1534  }
1535 
1536  std::ostringstream os;
1537  os << "StructNode(" << GetLabel() << ")";
1538 
1539  // always uses initial_dof[] becuase dof[]
1540  // and initial_dof[] are the same up to 6
1541  int iend = bInitial ? 12 : 6;
1542  if (i == -1) {
1543  std::string name = os.str();
1544 
1545  for (i = 0; i < iend; i++) {
1546  os.str(name);
1547  os.seekp(0, std::ios_base::end);
1548  os << ": " << sn_initial_dof[i/3] << xyz[i%3];
1549  desc[i] = os.str();
1550  }
1551 
1552  } else {
1553  if (i < 0 || i >= iend) {
1555  }
1556  os << ": " << sn_initial_dof[i/3] << xyz[i%3];
1557  desc[0] = os.str();
1558  }
1559 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
static const char xyz[]
Definition: strnode.cc:47
static const char * sn_initial_dof[]
Definition: strnode.cc:84
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

std::ostream & StructNode::DescribeEq ( std::ostream &  out,
const char *  prefix = "",
bool  bInitial = false 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in ModalNode, and DynamicStructNode.

Definition at line 1562 of file strnode.cc.

References DofOwnerOwner::iGetFirstIndex().

Referenced by DynamicStructNode::DescribeEq(), and ModalNode::DescribeEq().

1563 {
1564  integer iIndex = iGetFirstIndex();
1565 
1566  if (bInitial) {
1567  out
1568  << prefix << iIndex + 1 << "->" << iIndex + 3 << ": "
1569  "position [Px,Py,Pz]" << std::endl
1570  << prefix << iIndex + 4 << "->" << iIndex + 6 << ": "
1571  "orientation [gx,gy,gz]" << std::endl
1572  << prefix << iIndex + 7 << "->" << iIndex + 9 << ": "
1573  "linear velocity [vx,vy,vz]" << std::endl
1574  << prefix << iIndex + 10 << "->" << iIndex + 12 << ": "
1575  "angular velocity [wx,wy,wz]" << std::endl;
1576  } else {
1577  if (dynamic_cast<const DynamicStructNode*>(this) != 0
1578  || dynamic_cast<const ModalNode*>(this) != 0)
1579  {
1580  iIndex += 6;
1581  }
1582 
1583  out
1584  << prefix << iIndex + 1 << "->" << iIndex + 3 << ": "
1585  "force equilibrium [Fx,Fy,Fz]" << std::endl
1586  << prefix << iIndex + 4 << "->" << iIndex + 6 << ": "
1587  "moment equilibrium [Mx,My,Mz]" << std::endl;
1588  }
1589 
1590  return out;
1591 }
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

void StructNode::DescribeEq ( std::vector< std::string > &  desc,
bool  bInitial = false,
int  i = -1 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in ModalNode, and DynamicStructNode.

Definition at line 1594 of file strnode.cc.

References WithLabel::GetLabel(), MBDYN_EXCEPT_ARGS, sn_eq, sn_initial_eq, and xyz.

1595 {
1596  if (i == -1) {
1597  if (bInitial) {
1598  desc.resize(12);
1599 
1600  } else {
1601  desc.resize(6);
1602  }
1603 
1604  } else {
1605  desc.resize(1);
1606  }
1607 
1608  std::ostringstream os;
1609  os << "StructNode(" << GetLabel() << ")";
1610 
1611  if (i == -1) {
1612  std::string name(os.str());
1613 
1614  if (bInitial) {
1615  for (i = 0; i < 12; i++) {
1616  os.str(name);
1617  os.seekp(0, std::ios_base::end);
1618  os << ": " << sn_initial_eq[i/3] << xyz[i%3];
1619  desc[i] = os.str();
1620  }
1621 
1622  } else {
1623  for (i = 0; i < 6; i++) {
1624  os.str(name);
1625  os.seekp(0, std::ios_base::end);
1626  os << ": " << sn_eq[2 + i/3] << xyz[i%3];
1627  desc[i] = os.str();
1628  }
1629  }
1630 
1631  } else {
1632  if (bInitial) {
1633  if (i < 0 || i >= 12) {
1635  }
1636 
1637  os << ": " << sn_initial_eq[i/3] << xyz[i%3];
1638 
1639  } else {
1640  if (i < 0 || i >= 6) {
1642  }
1643 
1644  os << ": " << sn_eq[2 + i/3] << xyz[i%3];
1645  }
1646  desc[0] = os.str();
1647  }
1648 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
static const char * sn_initial_eq[]
Definition: strnode.cc:90
static const char xyz[]
Definition: strnode.cc:47
static const char * sn_eq[]
Definition: strnode.cc:72
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

const doublereal & StructNode::dGetDofValue ( int  iDof,
int  iOrder = 0 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode, and DynamicStructNode.

Definition at line 1680 of file strnode.cc.

References ASSERT, WithLabel::GetLabel(), MBDYN_EXCEPT_ARGS, StructDispNode::VCurr, WCurr, and StructDispNode::XCurr.

Referenced by DynamicStructNode::dGetDofValue().

1681 {
1682  ASSERT(iDof >= 1 && iDof <= 6);
1683  ASSERT(iOrder == 0 || iOrder == 1);
1684  if (iDof >= 1 && iDof <= 3) {
1685  if (iOrder == 0) {
1686  return XCurr(iDof);
1687  } else if (iOrder == 1) {
1688  return VCurr(iDof);
1689  }
1690  } else if (iDof >= 4 && iDof <= 6) {
1691  if (iOrder == 1) {
1692  return WCurr(iDof - 3);
1693  } else if (iOrder == 0) {
1694  silent_cerr("StructNode(" << GetLabel() << "): "
1695  "unable to return angles" << std::endl);
1697  }
1698  } else {
1699  silent_cerr("StructNode(" << GetLabel() << "): "
1700  "required dof " << iDof << " (order " << iOrder << ") "
1701  "is not available." << std::endl);
1703  }
1704 
1705  /* dummy return value to workaround compiler complains */
1706  static doublereal dmy = 0.;
1707  return dmy;
1708 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Vec3 WCurr
Definition: strnode.h:747
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

const doublereal & StructNode::dGetDofValuePrev ( int  iDof,
int  iOrder = 0 
) const
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode, and DynamicStructNode.

Definition at line 1713 of file strnode.cc.

References ASSERT, WithLabel::GetLabel(), MBDYN_EXCEPT_ARGS, StructDispNode::VPrev, WPrev, and StructDispNode::XPrev.

Referenced by DynamicStructNode::dGetDofValuePrev().

1714 {
1715  ASSERT(iDof >= 1 && iDof <= 6);
1716  ASSERT(iOrder == 0 || iOrder == 1);
1717  if (iDof >= 1 && iDof <= 3) {
1718  if (iOrder == 0) {
1719  return XPrev(iDof);
1720  } else if (iOrder == 1) {
1721  return VPrev(iDof);
1722  }
1723  } else if (iDof >= 4 && iDof <= 6) {
1724  if (iOrder == 1) {
1725  return WPrev(iDof - 3);
1726  } else if (iOrder == 0) {
1727  silent_cerr("StructNode(" << GetLabel() << "): "
1728  "unable to return angles" << std::endl);
1730  }
1731  } else {
1732  silent_cerr("StructNode(" << GetLabel() << "): "
1733  "required dof " << iDof << " (order " << iOrder << ") "
1734  "is not available." << std::endl);
1736  }
1737 
1738  /* dummy return value to workaround compiler complains */
1739  static doublereal dmy = 0.;
1740  return dmy;
1741 }
Vec3 WPrev
Definition: strnode.h:745
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Vec3 XPrev
Definition: strnode.h:89
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 VPrev
Definition: strnode.h:92
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

doublereal StructNode::dGetPrivData ( unsigned int  i) const
virtual

Reimplemented from StructDispNode.

Definition at line 2806 of file strnode.cc.

References ASSERT, StructDispNode::bComputeAccelerations(), Mat3x3::GetVec(), MatR2EulerAngles123(), MatR2EulerAngles313(), MatR2EulerAngles321(), MatR2EulerParams(), MBDYN_EXCEPT_ARGS, RCurr, StructDispNode::VCurr, RotManip::VecRot(), WCurr, WPCurr, StructDispNode::XCurr, and StructDispNode::XPPCurr.

2807 {
2808  switch (i) {
2809  case 1:
2810  case 2:
2811  case 3:
2812  return XCurr(i);
2813 
2814  case 4:
2815  case 5:
2816  case 6:
2817  return RCurr.GetVec(i - 3)*XCurr;
2818 
2819  case 7:
2820  case 8:
2821  case 9: {
2822  /* TODO */
2823  Vec3 Phi(RotManip::VecRot(RCurr));
2824  return Phi(i - 6);
2825  }
2826 
2827  case 10:
2828  case 11:
2829  case 12:
2830  return VCurr(i - 9);
2831 
2832  case 13:
2833  case 14:
2834  case 15:
2835  return RCurr.GetVec(i - 12)*VCurr;
2836 
2837  case 16:
2838  case 17:
2839  case 18:
2840  return WCurr(i - 15);
2841 
2842  case 19:
2843  case 20:
2844  case 21:
2845  return RCurr.GetVec(i - 18)*WCurr;
2846 
2847  case 22:
2848  case 23:
2849  case 24: {
2851  return Phi(i - 21);
2852  }
2853 
2854  case 25:
2855  case 26:
2856  case 27: {
2858  return Phi(i - 24);
2859  }
2860 
2861  case 28:
2862  case 29:
2863  case 30: {
2865  return Phi(i - 27);
2866  }
2867 
2868  case 31:
2869  case 32:
2870  case 33:
2871  case 34: {
2872  /* TODO */
2873  Vec3 e;
2874  doublereal e0;
2875  MatR2EulerParams(RCurr, e0, e);
2876  if (i == 31) {
2877  return e0;
2878  }
2879  return e(i - 31);
2880  }
2881 
2882  case 35:
2883  case 36:
2884  case 37:
2885  ASSERT(bComputeAccelerations() == true);
2886  return XPPCurr(i - 34);
2887 
2888  case 38:
2889  case 39:
2890  case 40:
2891  ASSERT(bComputeAccelerations() == true);
2892  return RCurr.GetVec(i - 37)*XPPCurr;
2893 
2894  case 41:
2895  case 42:
2896  case 43:
2897  ASSERT(bComputeAccelerations() == true);
2898  return WPCurr(i - 40);
2899 
2900  case 44:
2901  case 45:
2902  case 46:
2903  ASSERT(bComputeAccelerations() == true);
2904  return RCurr.GetVec(i - 43)*WPCurr;
2905  }
2906 
2908 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
Vec3 WPCurr
Definition: strnode.h:749
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
Vec3 XPPCurr
Definition: strnode.h:95
Vec3 VecRot(const Mat3x3 &Phi)
Definition: Rot.cc:136
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 MatR2EulerAngles313(const Mat3x3 &R)
Definition: matvec3.cc:927
Vec3 WCurr
Definition: strnode.h:747
Vec3 MatR2EulerAngles123(const Mat3x3 &R)
Definition: matvec3.cc:893
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 VCurr
Definition: strnode.h:93
Vec3 MatR2EulerAngles321(const Mat3x3 &R)
Definition: matvec3.cc:941
Vec3 XCurr
Definition: strnode.h:90
void MatR2EulerParams(const Mat3x3 &R, doublereal &e0, Vec3 &e)
Definition: matvec3.cc:954
virtual bool bComputeAccelerations(void) const
Definition: strnode.h:433

Here is the call graph for this function:

const Vec3 & StructNode::GetgCurr ( void  ) const
inlinevirtual
const Vec3 & StructNode::GetgPCurr ( void  ) const
inlinevirtual

Definition at line 994 of file strnode.h.

Referenced by Motor::AssJac(), Modal::AssRes(), ViscoElasticBeam2::AssStiffnessVec(), and ViscoElasticBeam::AssStiffnessVec().

995 {
996  return gPCurr;
997 }
Vec3 gPCurr
Definition: strnode.h:735
const Vec3 & StructNode::GetgPRef ( void  ) const
inlinevirtual

Definition at line 988 of file strnode.h.

Referenced by ViscoElasticBeam2::AfterPredict(), and ViscoElasticBeam::AfterPredict().

989 {
990  return gPRef;
991 }
Vec3 gPRef
Definition: strnode.h:734
const Vec3 & StructNode::GetgRef ( void  ) const
inlinevirtual
const Mat3x3 & StructNode::GetR ( void  ) const
virtual

Reimplemented from StructDispNode.

Definition at line 1481 of file strnode.cc.

References GetRCurr().

Referenced by DataManager::OutputEigGeometry().

1482 {
1483  return GetRCurr();
1484 }
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012

Here is the call graph for this function:

const Mat3x3 & StructNode::GetRCurr ( void  ) const
inlinevirtual

Definition at line 1012 of file strnode.h.

Referenced by AerodynamicModal::AerodynamicModal(), AeroDynModule::AeroDynModule(), Brake::AfterConvergence(), PlaneHingeJoint::AfterConvergence(), TotalJoint::AfterConvergence(), PlaneRotationJoint::AfterConvergence(), TotalPinJoint::AfterConvergence(), AxialRotationJoint::AfterConvergence(), PlanePinJoint::AfterConvergence(), ElasticDispJoint::AfterPredict(), StructDispNode::AfterPredict(), ElasticDispJointInv::AfterPredict(), ElasticJointInv::AfterPredict(), ViscousDispJoint::AfterPredict(), ViscousJoint::AfterPredict(), ViscoElasticDispJoint::AfterPredict(), ViscoElasticJoint::AfterPredict(), AfterPredict(), angle(), anglerel(), DataManager::AssConstrRes(), HydrodynamicPlainBearing::AssJac(), InlineFriction::AssJac(), ContactJoint::AssJac(), asynchronous_machine::AssJac(), Motor::AssJac(), TranslAccel::AssJac(), AerodynamicModal::AssJac(), InLineWithOffsetJoint::AssJac(), TotalEquation::AssJac(), TotalJoint::AssJac(), RotAccel::AssJac(), AerodynamicBody::AssJac(), Wheel4::AssJac(), TotalReaction::AssJac(), ModuleIMUConstraint::AssJac(), TotalPinJoint::AssJac(), TotalForce::AssJac(), GimbalRotationJoint::AssMat(), DeformableJoint::AssMatCommon(), ElasticDispJoint::AssMats(), ElasticDispJointInv::AssMats(), ViscousDispJoint::AssMats(), ModalBody::AssMats(), ViscoElasticDispJoint::AssMats(), ModuleIMU::AssRes(), DispMeasure::AssRes(), ModalForce::AssRes(), Accelerometer::AssRes(), InlineFriction::AssRes(), InLineJoint::AssRes(), LoadIncNorm::AssRes(), UniversalHingeJoint::AssRes(), PrismaticJoint::AssRes(), SphericalHingeJoint::AssRes(), InPlaneJoint::AssRes(), Actuator::AssRes(), asynchronous_machine::AssRes(), Wheel2::AssRes(), Motor::AssRes(), StructExtForce::AssRes(), StructMappingExtForce::AssRes(), TranslAccel::AssRes(), Brake::AssRes(), ContactJoint::AssRes(), PlaneHingeJoint::AssRes(), AngularAccelerationJoint::AssRes(), DynamicVariableBody::AssRes(), BeamSliderJoint::AssRes(), AerodynamicModal::AssRes(), AngularVelocityJoint::AssRes(), InLineWithOffsetJoint::AssRes(), TotalEquation::AssRes(), TotalJoint::AssRes(), DistanceJointWithOffset::AssRes(), UniversalRotationJoint::AssRes(), RotAccel::AssRes(), PinJoint::AssRes(), AeroDynModule::AssRes(), InPlaneWithOffsetJoint::AssRes(), AbsoluteForce::AssRes(), StaticVariableBody::AssRes(), UniversalPinJoint::AssRes(), PlaneRotationJoint::AssRes(), Modal::AssRes(), FollowerForce::AssRes(), ClampJoint::AssRes(), Wheel4::AssRes(), TotalReaction::AssRes(), DynamicBody::AssRes(), ModuleIMUConstraint::AssRes(), TotalPinJoint::AssRes(), CyclocopterNoInflow::AssRes(), FollowerCouple::AssRes(), ModalBody::AssRes(), AxialRotationJoint::AssRes(), StaticBody::AssRes(), AbsoluteInternalForce::AssRes(), TotalForce::AssRes(), CyclocopterUniform1D::AssRes(), LoadIncForce::AssRes(), PlanePinJoint::AssRes(), FollowerInternalForce::AssRes(), DynamicInflowRotor::AssRes(), FollowerInternalCouple::AssRes(), PetersHeRotor::AssRes(), CyclocopterUniform2D::AssRes(), CyclocopterPolimi::AssRes(), Beam2::AssStiffnessMat(), HBeam::AssStiffnessMat(), Beam::AssStiffnessMat(), ViscoElasticBeam2::AssStiffnessMat(), ViscoElasticBeam::AssStiffnessMat(), Beam2::AssStiffnessVec(), HBeam::AssStiffnessVec(), Beam::AssStiffnessVec(), ViscoElasticBeam2::AssStiffnessVec(), ViscoElasticBeam::AssStiffnessVec(), GimbalRotationJoint::AssVec(), DriveDisplacementJoint::AssVec(), ViscousBody::AssVec(), DriveHingeJoint::AssVec(), PointSurfaceContact::AssVec(), GenericAerodynamicForce::AssVec(), RodBezier::AssVec(), AerodynamicModal::AssVec(), ElasticAxialJoint::AssVec(), ElasticDispJoint::AssVec(), ElasticHingeJoint::AssVec(), DriveDisplacementPinJoint::AssVec(), ElasticJoint::AssVec(), AerodynamicBody::AssVec(), ViscousAxialJoint::AssVec(), ElasticDispJointInv::AssVec(), ElasticHingeJointInv::AssVec(), ElasticJointInv::AssVec(), ViscousHingeJoint::AssVec(), ViscousDispJoint::AssVec(), ViscoElasticAxialJoint::AssVec(), ViscousJoint::AssVec(), ViscousHingeJointInv::AssVec(), ViscoElasticJoint::AssVec(), ViscoElasticDispJoint::AssVec(), ViscoElasticHingeJoint::AssVec(), ViscoElasticHingeJointInv::AssVec(), asynchronous_machine::asynchronous_machine(), StructDispNode::BeforePredict(), BeforePredict(), Shell4EAS::ComputeInitialNodeAndIptOrientation(), Shell4EASANS::ComputeInitialNodeOrientation(), HydrodynamicPlainBearing::ComputeResidual(), ContactJoint::ContactJoint(), NodeDistDriveCaller::dGet(), NodeDistDriveCaller::dGetP(), Motor::dGetPhiMechanical(), InlineFriction::dGetPrivData(), VariableBody::dGetPrivData(), ViscousBody::dGetPrivData(), DeformableAxialJoint::dGetPrivData(), DeformableDispJoint::dGetPrivData(), DeformableJoint::dGetPrivData(), DeformableHingeJoint::dGetPrivData(), Brake::dGetPrivData(), PlaneHingeJoint::dGetPrivData(), TotalEquation::dGetPrivData(), TotalJoint::dGetPrivData(), PlaneRotationJoint::dGetPrivData(), Body::dGetPrivData(), Modal::dGetPrivData(), TotalReaction::dGetPrivData(), TotalPinJoint::dGetPrivData(), AxialRotationJoint::dGetPrivData(), PlanePinJoint::dGetPrivData(), DeformableHingeJoint::dGetPrivDataInv(), HBeam::DsDxi(), Beam2::DsDxi(), Beam::DsDxi(), LocalNodeResForces::Force(), Motor::GetAxisOfRotation(), DynamicVariableBody::GetB_int(), DynamicBody::GetB_int(), getbladeparams(), Modal::GetCurrFEMNodesPosition(), Modal::GetCurrFEMNodesVelocity(), getelemparams(), DynamicVariableBody::GetG_int(), DynamicBody::GetG_int(), VariableBody::GetJ_int(), Modal::GetJ_int(), Body::GetJ_int(), PosRel::GetPosAbs(), PosRel::GetPosGlob(), GetR(), getrotorparams(), VariableBody::GetS_int(), Modal::GetS_int(), Body::GetS_int(), PosRel::GetVelAbs(), PosRel::GetVelGlob(), getvnvt(), Rotor::Init(), Beam::Init(), InlineFriction::InitialAssJac(), DriveDisplacementJoint::InitialAssJac(), TotalEquation::InitialAssJac(), TotalJoint::InitialAssJac(), ViscousAxialJoint::InitialAssJac(), TotalReaction::InitialAssJac(), TotalPinJoint::InitialAssJac(), ViscousHingeJoint::InitialAssJac(), ViscoElasticAxialJoint::InitialAssJac(), TotalForce::InitialAssJac(), ViscoElasticHingeJoint::InitialAssJac(), InlineFriction::InitialAssRes(), InLineJoint::InitialAssRes(), UniversalHingeJoint::InitialAssRes(), InPlaneJoint::InitialAssRes(), PrismaticJoint::InitialAssRes(), SphericalHingeJoint::InitialAssRes(), DriveDisplacementJoint::InitialAssRes(), DriveHingeJoint::InitialAssRes(), PlaneHingeJoint::InitialAssRes(), DynamicVariableBody::InitialAssRes(), InLineWithOffsetJoint::InitialAssRes(), DistanceJointWithOffset::InitialAssRes(), AerodynamicModal::InitialAssRes(), UniversalRotationJoint::InitialAssRes(), PinJoint::InitialAssRes(), TotalEquation::InitialAssRes(), InPlaneWithOffsetJoint::InitialAssRes(), TotalJoint::InitialAssRes(), AbsoluteForce::InitialAssRes(), DriveDisplacementPinJoint::InitialAssRes(), UniversalPinJoint::InitialAssRes(), PlaneRotationJoint::InitialAssRes(), Modal::InitialAssRes(), FollowerForce::InitialAssRes(), ClampJoint::InitialAssRes(), ViscousAxialJoint::InitialAssRes(), TotalReaction::InitialAssRes(), DynamicBody::InitialAssRes(), FollowerCouple::InitialAssRes(), TotalPinJoint::InitialAssRes(), ViscousHingeJoint::InitialAssRes(), ViscousDispJoint::InitialAssRes(), ViscoElasticAxialJoint::InitialAssRes(), AxialRotationJoint::InitialAssRes(), AbsoluteInternalForce::InitialAssRes(), TotalForce::InitialAssRes(), ViscoElasticDispJoint::InitialAssRes(), PlanePinJoint::InitialAssRes(), ViscoElasticHingeJoint::InitialAssRes(), FollowerInternalForce::InitialAssRes(), FollowerInternalCouple::InitialAssRes(), DataManager::InitialJointAssembly(), Rotor::InitParam(), ModalMappingExt::ModalMappingExt(), ModuleIMUConstraint::ModuleIMUConstraint(), LocalNodeResForces::Moment(), HBeam::Omega0(), Beam2::Omega0(), Beam::Omega0(), GimbalRotationJoint::Output(), DriveDisplacementJoint::Output(), ViscousBody::Output(), DriveHingeJoint::Output(), InLineJoint::Output(), UniversalHingeJoint::Output(), PrismaticJoint::Output(), SphericalHingeJoint::Output(), DeformableAxialJoint::Output(), InPlaneJoint::Output(), DeformableDispJoint::Output(), DeformableHingeJoint::Output(), DeformableJoint::Output(), StructExtForce::Output(), Brake::Output(), PlaneHingeJoint::Output(), BeamSliderJoint::Output(), AngularVelocityJoint::Output(), InLineWithOffsetJoint::Output(), ContactJoint::Output(), UniversalRotationJoint::Output(), PinJoint::Output(), TotalEquation::Output(), InPlaneWithOffsetJoint::Output(), TotalJoint::Output(), DriveDisplacementPinJoint::Output(), AbsoluteForce::Output(), UniversalPinJoint::Output(), PlaneRotationJoint::Output(), FollowerForce::Output(), ClampJoint::Output(), TotalReaction::Output(), TotalPinJoint::Output(), FollowerCouple::Output(), AxialRotationJoint::Output(), AbsoluteInternalForce::Output(), PlanePinJoint::Output(), FollowerInternalForce::Output(), FollowerInternalCouple::Output(), DeformableHingeJoint::OutputInv(), ReadBeam(), ReadBeam2(), ReadHBeam(), ReadModal(), ReadStructMappingExtForce(), ReadStructNode(), ModalMappingExt::Recv(), StructMappingExtForce::RecvFromFileDes(), StructMembraneMappingExtForce::RecvFromFileDes(), ModalMappingExt::Send(), ModalExt::Send(), StructExtForce::SendToFileDes(), StructMappingExtForce::SendToFileDes(), StructMembraneMappingExtForce::SendToFileDes(), StructExtEDGEForce::SendToStream(), StructExtForce::SendToStream(), StructMappingExtForce::SendToStream(), StructMembraneMappingExtForce::SendToStream(), DistanceJointWithOffset::SetInitialValue(), DispMeasure::SetValue(), Accelerometer::SetValue(), DriveDisplacementJoint::SetValue(), DriveHingeJoint::SetValue(), PrismaticJoint::SetValue(), SphericalHingeJoint::SetValue(), DeformableAxialJoint::SetValue(), DeformableDispJoint::SetValue(), Brake::SetValue(), DeformableHingeJoint::SetValue(), DeformableJoint::SetValue(), PlaneHingeJoint::SetValue(), TranslAccel::SetValue(), TotalEquation::SetValue(), TotalJoint::SetValue(), AngularAccelerationJoint::SetValue(), DynamicVariableBody::SetValue(), RotAccel::SetValue(), DistanceJointWithOffset::SetValue(), DriveDisplacementPinJoint::SetValue(), StructDispNode::SetValue(), PlaneRotationJoint::SetValue(), TotalReaction::SetValue(), TotalPinJoint::SetValue(), ModuleIMUConstraint::SetValue(), DynamicBody::SetValue(), AxialRotationJoint::SetValue(), PlanePinJoint::SetValue(), SetValue(), TotalJoint::TotalJoint(), TotalPinJoint::TotalPinJoint(), AircraftInstruments::Update(), OffsetDummyStructNode::Update_int(), RelFrameDummyStructNode::Update_int(), PivotRelFrameDummyStructNode::Update_int(), Shell4EAS::UpdateNodalAndAveragePosAndOrientation(), and Shell4EASANS::UpdateNodalAndAveragePosAndOrientation().

1013 {
1014  return RCurr;
1015 }
Mat3x3 RCurr
Definition: strnode.h:730
const Mat3x3 & StructNode::GetRPrev ( void  ) const
inlinevirtual
const Mat3x3 & StructNode::GetRRef ( void  ) const
inlinevirtual

Definition at line 1006 of file strnode.h.

Referenced by VariableBody::AfterPredict(), DriveDisplacementJoint::AfterPredict(), DriveHingeJoint::AfterPredict(), ElasticAxialJoint::AfterPredict(), ViscousBody::AfterPredict(), ElasticHingeJoint::AfterPredict(), HBeam::AfterPredict(), Beam2::AfterPredict(), ElasticJoint::AfterPredict(), ViscousAxialJoint::AfterPredict(), DriveDisplacementPinJoint::AfterPredict(), ElasticHingeJointInv::AfterPredict(), ElasticDispJointInv::AfterPredict(), Body::AfterPredict(), Beam::AfterPredict(), ElasticJointInv::AfterPredict(), ViscousHingeJoint::AfterPredict(), ViscoElasticAxialJoint::AfterPredict(), ViscoElasticBeam2::AfterPredict(), ViscousJoint::AfterPredict(), ViscousHingeJointInv::AfterPredict(), ViscoElasticJoint::AfterPredict(), ViscoElasticBeam::AfterPredict(), ViscoElasticHingeJoint::AfterPredict(), ViscoElasticHingeJointInv::AfterPredict(), HydrodynamicPlainBearing::AssJac(), Accelerometer::AssJac(), InLineJoint::AssJac(), InlineFriction::AssJac(), UniversalHingeJoint::AssJac(), PrismaticJoint::AssJac(), SphericalHingeJoint::AssJac(), InPlaneJoint::AssJac(), Actuator::AssJac(), asynchronous_machine::AssJac(), RodBezier::AssJac(), Motor::AssJac(), Brake::AssJac(), PlaneHingeJoint::AssJac(), AngularAccelerationJoint::AssJac(), AngularVelocityJoint::AssJac(), InLineWithOffsetJoint::AssJac(), TotalEquation::AssJac(), DistanceJointWithOffset::AssJac(), UniversalRotationJoint::AssJac(), PinJoint::AssJac(), TotalJoint::AssJac(), InPlaneWithOffsetJoint::AssJac(), AbsoluteForce::AssJac(), UniversalPinJoint::AssJac(), PlaneRotationJoint::AssJac(), FollowerForce::AssJac(), TotalReaction::AssJac(), FollowerCouple::AssJac(), AxialRotationJoint::AssJac(), AbsoluteInternalForce::AssJac(), TotalForce::AssJac(), LoadIncForce::AssJac(), PlanePinJoint::AssJac(), FollowerInternalForce::AssJac(), FollowerInternalCouple::AssJac(), ModalBody::AssMats(), ElasticDispJointInv::AssVec(), ElasticJointInv::AssVec(), DeformableJoint::DeformableJoint(), ElasticDispJoint::ElasticDispJoint(), ElasticDispJointInv::ElasticDispJointInv(), InlineFriction::InitialAssJac(), InLineJoint::InitialAssJac(), UniversalHingeJoint::InitialAssJac(), InPlaneJoint::InitialAssJac(), PrismaticJoint::InitialAssJac(), SphericalHingeJoint::InitialAssJac(), RodBezier::InitialAssJac(), DriveHingeJoint::InitialAssJac(), PlaneHingeJoint::InitialAssJac(), InLineWithOffsetJoint::InitialAssJac(), DistanceJointWithOffset::InitialAssJac(), UniversalRotationJoint::InitialAssJac(), PinJoint::InitialAssJac(), TotalEquation::InitialAssJac(), InPlaneWithOffsetJoint::InitialAssJac(), TotalJoint::InitialAssJac(), AbsoluteForce::InitialAssJac(), UniversalPinJoint::InitialAssJac(), PlaneRotationJoint::InitialAssJac(), FollowerForce::InitialAssJac(), TotalReaction::InitialAssJac(), FollowerCouple::InitialAssJac(), ViscousDispJoint::InitialAssJac(), AxialRotationJoint::InitialAssJac(), AbsoluteInternalForce::InitialAssJac(), TotalForce::InitialAssJac(), ViscoElasticDispJoint::InitialAssJac(), PlanePinJoint::InitialAssJac(), FollowerInternalForce::InitialAssJac(), FollowerInternalCouple::InitialAssJac(), TotalEquation::InitialAssRes(), TotalJoint::InitialAssRes(), TotalReaction::InitialAssRes(), TotalForce::InitialAssRes(), RodBezier::RodBezier(), Shell4EAS::UpdateNodalAndAveragePosAndOrientation(), Shell4EASANS::UpdateNodalAndAveragePosAndOrientation(), ViscoElasticDispJoint::ViscoElasticDispJoint(), ViscousBody::ViscousBody(), and ViscousDispJoint::ViscousDispJoint().

1007 {
1008  return RRef;
1009 }
Mat3x3 RRef
Definition: strnode.h:729
const Vec3 & StructNode::GetW ( void  ) const
virtual

Reimplemented from StructDispNode.

Definition at line 1487 of file strnode.cc.

References GetWCurr().

1488 {
1489  return GetWCurr();
1490 }
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030

Here is the call graph for this function:

const Vec3 & StructNode::GetWCurr ( void  ) const
inlinevirtual

Definition at line 1030 of file strnode.h.

Referenced by Brake::AfterConvergence(), PlaneHingeJoint::AfterConvergence(), AxialRotationJoint::AfterConvergence(), ViscousBody::AfterPredict(), StructDispNode::AfterPredict(), ViscousDispJoint::AfterPredict(), ViscousJoint::AfterPredict(), ViscoElasticDispJoint::AfterPredict(), ViscoElasticJoint::AfterPredict(), AfterPredict(), angvel(), angvrel(), DataManager::AssConstrRes(), HydrodynamicPlainBearing::AssJac(), InlineFriction::AssJac(), asynchronous_machine::AssJac(), Motor::AssJac(), Brake::AssJac(), PlaneHingeJoint::AssJac(), TotalEquation::AssJac(), TotalJoint::AssJac(), AerodynamicBody::AssJac(), Wheel4::AssJac(), AxialRotationJoint::AssJac(), DeformableDispJoint::AssMatFDEPrime(), DeformableAxialJoint::AssMatMDEPrime(), DeformableHingeJoint::AssMatMDEPrime(), DeformableHingeJoint::AssMatMDEPrimeInv(), ViscousBody::AssMats(), DynamicVariableBody::AssMats(), DynamicBody::AssMats(), ModalBody::AssMats(), VariableBody::AssMatsRBK_int(), Body::AssMatsRBK_int(), DeformableJoint::AssMatViscous(), ModuleIMU::AssRes(), InlineFriction::AssRes(), Actuator::AssRes(), asynchronous_machine::AssRes(), Wheel2::AssRes(), TranslAccel::AssRes(), Brake::AssRes(), PlaneHingeJoint::AssRes(), AngularAccelerationJoint::AssRes(), DynamicVariableBody::AssRes(), AerodynamicModal::AssRes(), AngularVelocityJoint::AssRes(), TotalEquation::AssRes(), TotalJoint::AssRes(), RotAccel::AssRes(), StaticVariableBody::AssRes(), Wheel4::AssRes(), DynamicBody::AssRes(), ModuleIMUConstraint::AssRes(), TotalPinJoint::AssRes(), ModalBody::AssRes(), AxialRotationJoint::AssRes(), StaticBody::AssRes(), ViscoElasticBeam::AssStiffnessMat(), ViscoElasticBeam2::AssStiffnessVec(), ViscoElasticBeam::AssStiffnessVec(), ViscousBody::AssVec(), GenericAerodynamicForce::AssVec(), RodBezier::AssVec(), AerodynamicBody::AssVec(), ViscousAxialJoint::AssVec(), ViscousHingeJoint::AssVec(), ViscousDispJoint::AssVec(), ViscoElasticAxialJoint::AssVec(), ViscousJoint::AssVec(), ViscousHingeJointInv::AssVec(), ViscoElasticJoint::AssVec(), ViscoElasticDispJoint::AssVec(), ViscoElasticHingeJoint::AssVec(), ViscoElasticHingeJointInv::AssVec(), VariableBody::AssVecRBK_int(), Body::AssVecRBK_int(), asynchronous_machine::asynchronous_machine(), StructDispNode::BeforePredict(), BeforePredict(), Wheel4::CalculateR_e(), HydrodynamicPlainBearing::ComputeResidual(), Motor::dGetOmega(), NodeDistDriveCaller::dGetP(), InlineFriction::dGetPrivData(), VariableBody::dGetPrivData(), ViscousBody::dGetPrivData(), DeformableAxialJoint::dGetPrivData(), DeformableDispJoint::dGetPrivData(), DeformableJoint::dGetPrivData(), DeformableHingeJoint::dGetPrivData(), Brake::dGetPrivData(), PlaneHingeJoint::dGetPrivData(), TotalEquation::dGetPrivData(), TotalJoint::dGetPrivData(), AutomaticStructElem::dGetPrivData(), PlaneRotationJoint::dGetPrivData(), Body::dGetPrivData(), Modal::dGetPrivData(), TotalReaction::dGetPrivData(), TotalPinJoint::dGetPrivData(), PlanePinJoint::dGetPrivData(), DeformableHingeJoint::dGetPrivDataInv(), DynamicVariableBody::GetB_int(), DynamicBody::GetB_int(), Modal::GetCurrFEMNodesVelocity(), DynamicVariableBody::GetG_int(), DynamicBody::GetG_int(), getrotorparams(), PosRel::GetVelAbs(), PosRel::GetVelGlob(), GetW(), InlineFriction::InitialAssJac(), TotalEquation::InitialAssJac(), TotalJoint::InitialAssJac(), ViscousAxialJoint::InitialAssJac(), TotalReaction::InitialAssJac(), TotalPinJoint::InitialAssJac(), ViscousHingeJoint::InitialAssJac(), ViscoElasticAxialJoint::InitialAssJac(), TotalForce::InitialAssJac(), ViscoElasticHingeJoint::InitialAssJac(), InlineFriction::InitialAssRes(), InLineJoint::InitialAssRes(), UniversalHingeJoint::InitialAssRes(), InPlaneJoint::InitialAssRes(), PrismaticJoint::InitialAssRes(), SphericalHingeJoint::InitialAssRes(), DriveDisplacementJoint::InitialAssRes(), DriveHingeJoint::InitialAssRes(), PlaneHingeJoint::InitialAssRes(), DynamicVariableBody::InitialAssRes(), AngularVelocityJoint::InitialAssRes(), InLineWithOffsetJoint::InitialAssRes(), AerodynamicModal::InitialAssRes(), DistanceJointWithOffset::InitialAssRes(), UniversalRotationJoint::InitialAssRes(), PinJoint::InitialAssRes(), TotalEquation::InitialAssRes(), InPlaneWithOffsetJoint::InitialAssRes(), TotalJoint::InitialAssRes(), AbsoluteForce::InitialAssRes(), DriveDisplacementPinJoint::InitialAssRes(), UniversalPinJoint::InitialAssRes(), PlaneRotationJoint::InitialAssRes(), Modal::InitialAssRes(), FollowerForce::InitialAssRes(), ClampJoint::InitialAssRes(), ViscousAxialJoint::InitialAssRes(), TotalReaction::InitialAssRes(), DynamicBody::InitialAssRes(), TotalPinJoint::InitialAssRes(), FollowerCouple::InitialAssRes(), ViscousHingeJoint::InitialAssRes(), ViscousDispJoint::InitialAssRes(), ViscoElasticAxialJoint::InitialAssRes(), AxialRotationJoint::InitialAssRes(), AbsoluteInternalForce::InitialAssRes(), TotalForce::InitialAssRes(), ViscoElasticDispJoint::InitialAssRes(), PlanePinJoint::InitialAssRes(), FollowerInternalForce::InitialAssRes(), ViscoElasticHingeJoint::InitialAssRes(), FollowerInternalCouple::InitialAssRes(), DataManager::InitialJointAssembly(), Rotor::InitParam(), HBeam::Omega0(), Beam2::Omega0(), Beam::Omega0(), DeformableAxialJoint::Output(), DeformableHingeJoint::Output(), StructExtForce::Output(), Brake::Output(), PlaneHingeJoint::Output(), TotalEquation::Output(), TotalJoint::Output(), PlaneRotationJoint::Output(), TotalReaction::Output(), TotalPinJoint::Output(), AxialRotationJoint::Output(), PlanePinJoint::Output(), DeformableHingeJoint::OutputInv(), ModalMappingExt::Send(), ModalExt::Send(), StructExtForce::SendToFileDes(), StructMappingExtForce::SendToFileDes(), StructMembraneMappingExtForce::SendToFileDes(), StructExtEDGEForce::SendToStream(), StructExtForce::SendToStream(), StructMappingExtForce::SendToStream(), StructMembraneMappingExtForce::SendToStream(), DistanceJointWithOffset::SetInitialValue(), Modal::SetInitialValue(), DispMeasure::SetValue(), TranslAccel::SetValue(), AngularAccelerationJoint::SetValue(), DynamicVariableBody::SetValue(), RotAccel::SetValue(), StructDispNode::SetValue(), Modal::SetValue(), ModuleIMUConstraint::SetValue(), DynamicBody::SetValue(), SetValue(), AircraftInstruments::Update(), OffsetDummyStructNode::Update_int(), RelFrameDummyStructNode::Update_int(), and PivotRelFrameDummyStructNode::Update_int().

1031 {
1032  return WCurr;
1033 }
Vec3 WCurr
Definition: strnode.h:747
const Vec3 & StructNode::GetWP ( void  ) const
virtual

Reimplemented from StructDispNode.

Reimplemented in DynamicStructNode.

Definition at line 1493 of file strnode.cc.

References MBDYN_EXCEPT_ARGS.

1494 {
1496 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
const Vec3 & StructNode::GetWPPrev ( void  ) const
inlinevirtual

Definition at line 1036 of file strnode.h.

Referenced by DataManager::AssConstrRes().

1037 {
1038  return WPPrev;
1039 }
Vec3 WPPrev
Definition: strnode.h:750
const Vec3 & StructNode::GetWPrev ( void  ) const
inlinevirtual

Definition at line 1018 of file strnode.h.

Referenced by angvel(), angvrel(), DataManager::AssConstrRes(), and DataManager::InitialJointAssembly().

1019 {
1020  return WPrev;
1021 }
Vec3 WPrev
Definition: strnode.h:745
const Vec3 & StructNode::GetWRef ( void  ) const
inlinevirtual

Definition at line 1024 of file strnode.h.

Referenced by ViscousAxialJoint::AfterPredict(), ViscousHingeJoint::AfterPredict(), ViscoElasticAxialJoint::AfterPredict(), ViscoElasticBeam2::AfterPredict(), ViscousHingeJointInv::AfterPredict(), ViscoElasticBeam::AfterPredict(), ViscoElasticHingeJoint::AfterPredict(), ViscoElasticHingeJointInv::AfterPredict(), HydrodynamicPlainBearing::AssJac(), InlineFriction::AssJac(), Actuator::AssJac(), asynchronous_machine::AssJac(), RodBezier::AssJac(), Motor::AssJac(), Brake::AssJac(), Modal::AssJac(), Wheel4::AssJac(), AxialRotationJoint::AssJac(), Modal::AssRes(), InLineJoint::InitialAssJac(), UniversalHingeJoint::InitialAssJac(), InPlaneJoint::InitialAssJac(), PrismaticJoint::InitialAssJac(), SphericalHingeJoint::InitialAssJac(), RodBezier::InitialAssJac(), DriveDisplacementJoint::InitialAssJac(), DriveHingeJoint::InitialAssJac(), PlaneHingeJoint::InitialAssJac(), DynamicVariableBody::InitialAssJac(), AngularVelocityJoint::InitialAssJac(), InLineWithOffsetJoint::InitialAssJac(), DistanceJointWithOffset::InitialAssJac(), UniversalRotationJoint::InitialAssJac(), PinJoint::InitialAssJac(), InPlaneWithOffsetJoint::InitialAssJac(), AbsoluteForce::InitialAssJac(), DriveDisplacementPinJoint::InitialAssJac(), UniversalPinJoint::InitialAssJac(), PlaneRotationJoint::InitialAssJac(), Modal::InitialAssJac(), FollowerForce::InitialAssJac(), DynamicBody::InitialAssJac(), FollowerCouple::InitialAssJac(), ViscousDispJoint::InitialAssJac(), AxialRotationJoint::InitialAssJac(), AbsoluteInternalForce::InitialAssJac(), ViscoElasticDispJoint::InitialAssJac(), PlanePinJoint::InitialAssJac(), FollowerInternalForce::InitialAssJac(), and FollowerInternalCouple::InitialAssJac().

1025 {
1026  return WRef;
1027 }
Vec3 WRef
Definition: strnode.h:746
unsigned int StructNode::iGetInitialNumDof ( void  ) const
inlinevirtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 964 of file strnode.h.

965 {
966  return 12;
967 }
unsigned int StructNode::iGetNumPrivData ( void  ) const
virtual

Reimplemented from StructDispNode.

Definition at line 2630 of file strnode.cc.

References StructDispNode::bComputeAccelerations().

2631 {
2632  unsigned i =
2633  3 // X
2634  + 3 // x (R^T * X)
2635  + 3 // Phi
2636  + 3 // XP
2637  + 3 // xP (R^T * XP)
2638  + 3 // Omega
2639  + 3 // omega (R^T * Omega)
2640  + 3 // Euler angles (123)
2641  + 3 // Euler angles (313)
2642  + 3 // Euler angles (321)
2643  + 4; // Euler parameters
2644 
2645  if (bComputeAccelerations()) {
2646  i +=
2647  3 // XPP
2648  + 3 // xPP (R^T * XPP)
2649  + 3 // OmegaP
2650  + 3; // omegaP (R^T * OmegaP)
2651  }
2652 
2653  return i;
2654 }
virtual bool bComputeAccelerations(void) const
Definition: strnode.h:433

Here is the call graph for this function:

unsigned int StructNode::iGetPrivDataIdx ( const char *  s) const
virtual

Reimplemented from StructDispNode.

Definition at line 2662 of file strnode.cc.

References StructDispNode::ComputeAccelerations(), WithLabel::GetLabel(), and MBDYN_EXCEPT_ARGS.

2663 {
2664  long idx;
2665  char *next;
2666  std::string sDataName(s);
2667 
2668  const char *brk = std::strchr(s, '[' /*]*/ );
2669  if (brk == 0) {
2670  return 0;
2671  }
2672 
2673  size_t len = brk - s;;
2674  brk++;
2675 
2676  errno = 0;
2677  idx = strtol(brk, &next, 10);
2678  int save_errno = errno;
2679  if (next == brk || strcmp(next, /*[*/ "]") != 0) {
2680  return 0;
2681  }
2682 
2683  if (save_errno == ERANGE) {
2684  silent_cerr("StructNode(" << GetLabel() << "): "
2685  "warning, private data index "
2686  << std::string(brk, next - brk)
2687  << " overflows" << std::endl);
2688  return 0;
2689  }
2690 
2691  /*
2692  X 0 + idx idx = {1,3}
2693  x 3 + idx idx = {1,3}
2694  Phi 6 + idx idx = {1,3}
2695  XP 9 + idx idx = {1,3}
2696  x 12 + idx idx = {1,3}
2697  Omega 15 + idx idx = {1,3}
2698  omega 18 + idx idx = {1,3}
2699  E | E123 21 + idx idx = {1,3}
2700  E313 24 + idx idx = {1,3}
2701  E321 27 + idx idx = {1,3}
2702  PE 31 + idx idx = {0,3}
2703  -------------------------------------------
2704  XPP 34 + idx idx = {1,3}
2705  xPP 37 + idx idx = {1,3}
2706  OmegaP 40 + idx idx = {1,3}
2707  omegaP 43 + idx idx = {1,3}
2708  */
2709 
2710  if (strncmp(s, "PE", len) == 0) {
2711  if (idx < 0 || idx > 3) {
2712  return 0;
2713  }
2714 
2715  return 31 + idx;
2716  }
2717 
2718  if (idx < 1 || idx > 3) {
2719  return 0;
2720  }
2721 
2722  if (strncmp(s, "X", len) == 0) {
2723  return 0 + idx;
2724  }
2725 
2726  if (strncmp(s, "x", len) == 0) {
2727  return 3 + idx;
2728  }
2729 
2730  if (strncmp(s, "Phi", len) == 0) {
2731  return 6 + idx;
2732  }
2733 
2734  if (strncmp(s, "XP", len) == 0) {
2735  return 9 + idx;
2736  }
2737 
2738  if (strncmp(s, "xP", len) == 0) {
2739  return 12 + idx;
2740  }
2741 
2742  if (strncmp(s, "Omega", len) == 0) {
2743  return 15 + idx;
2744  }
2745 
2746  if (strncmp(s, "omega", len) == 0) {
2747  return 18 + idx;
2748  }
2749 
2750  if (strncmp(s, "E", len) == 0
2751  || strncmp(s, "E123", len) == 0)
2752  {
2753  return 21 + idx;
2754  }
2755 
2756  if (strncmp(s, "E313", len) == 0) {
2757  return 24 + idx;
2758  }
2759 
2760  if (strncmp(s, "E321", len) == 0) {
2761  return 27 + idx;
2762  }
2763 
2764  bool bca = false;
2765  unsigned i;
2766  if (strncmp(s, "XPP", len) == 0) {
2767  bca = true;
2768  i = 34 + idx;
2769 
2770  } else if (strncmp(s, "xPP", len) == 0) {
2771  bca = true;
2772  i = 37 + idx;
2773 
2774  } else if (strncmp(s, "OmegaP", len) == 0) {
2775  bca = true;
2776  i = 40 + idx;
2777 
2778  } else if (strncmp(s, "omegaP", len) == 0) {
2779  bca = true;
2780  i = 43 + idx;
2781 
2782  } else {
2783  // error
2784  return 0;
2785  }
2786 
2787  // NOTE: bComputeAccels is set only if iGetPrivDataIdx() is called
2788  // first; it is not when the (deprecated) idx is directly used.
2789  if (bca) {
2790  if (!const_cast<StructNode *>(this)->ComputeAccelerations(true)) {
2791  silent_cerr("StructNode(" << GetLabel() << "): "
2792  "request to compute accelerations failed, requested by private data \"" << sDataName << "\""
2793  << std::endl);
2795  }
2796  }
2797 
2798  return i;
2799 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual bool ComputeAccelerations(bool b)
Definition: strnode.cc:194
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void StructNode::InitialUpdate ( const VectorHandler X)
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 2258 of file strnode.cc.

References gCurr, DofOwnerOwner::iGetFirstIndex(), CGR_Rot::MatR, RCurr, RRef, StructDispNode::VCurr, WCurr, and StructDispNode::XCurr.

2259 {
2260 #ifdef USE_AUTODIFF
2261  bUpdateRotation = true;
2262 #endif
2263 
2264  integer iFirstIndex = iGetFirstIndex();
2265 
2266  XCurr = Vec3(X, iFirstIndex + 1);
2267  VCurr = Vec3(X, iFirstIndex + 7);
2268 
2269  /* Nota: g viene incrementato */
2270  gCurr = Vec3(X, iFirstIndex + 4);
2271 
2272  Mat3x3 RDelta(CGR_Rot::MatR, gCurr);
2273 
2274  RCurr = RDelta*RRef;
2275  WCurr = Vec3(X, iFirstIndex + 10);
2276 }
Definition: matvec3.h:98
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 WCurr
Definition: strnode.h:747
Mat3x3 RRef
Definition: strnode.h:729
const MatR_Manip MatR
Definition: matvec3.cc:645
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

void StructNode::Output ( OutputHandler OH) const
virtual

Reimplemented from StructDispNode.

Definition at line 1846 of file strnode.cc.

References StructDispNode::bOutputAccels, ToBeOutput::bToBeOutput(), dRaDegr, EULER_123, EULER_313, EULER_321, OutputHandler::GetCurrentStep(), WithLabel::GetLabel(), MatR2EulerAngles123(), MatR2EulerAngles313(), MatR2EulerAngles321(), StructDispNode::od, ORIENTATION_MATRIX, ORIENTATION_VECTOR, Mat3x3::pGetMat(), Vec3::pGetVec(), RCurr, OutputHandler::STRNODES, OutputHandler::StrNodes(), OutputHandler::UseNetCDF(), OutputHandler::UseText(), StructDispNode::VCurr, RotManip::VecRot(), WCurr, WPCurr, StructDispNode::XCurr, and StructDispNode::XPPCurr.

1847 {
1848  if (bToBeOutput()) {
1849  Vec3 E;
1850  switch (od) {
1851  case EULER_123:
1853  break;
1854 
1855  case EULER_313:
1857  break;
1858 
1859  case EULER_321:
1861  break;
1862 
1863  case ORIENTATION_VECTOR:
1864  E = RotManip::VecRot(RCurr);
1865  break;
1866 
1867  case ORIENTATION_MATRIX:
1868  break;
1869 
1870  default:
1871  /* impossible */
1872  break;
1873  }
1874 
1875 #ifdef USE_NETCDF
1877  Var_X->put_rec(XCurr.pGetVec(), OH.GetCurrentStep());
1878  switch (od) {
1879  case EULER_123:
1880  case EULER_313:
1881  case EULER_321:
1882  case ORIENTATION_VECTOR:
1883  Var_Phi->put_rec(E.pGetVec(), OH.GetCurrentStep());
1884  break;
1885 
1886  case ORIENTATION_MATRIX:
1887  Var_Phi->put_rec(RCurr.pGetMat(), OH.GetCurrentStep());
1888  break;
1889 
1890  default:
1891  /* impossible */
1892  break;
1893  }
1894  Var_XP->put_rec(VCurr.pGetVec(), OH.GetCurrentStep());
1895  Var_Omega->put_rec(WCurr.pGetVec(), OH.GetCurrentStep());
1896 
1897  if (bOutputAccels) {
1898  Var_XPP->put_rec(XPPCurr.pGetVec(), OH.GetCurrentStep());
1899  Var_OmegaP->put_rec(WPCurr.pGetVec(), OH.GetCurrentStep());
1900  }
1901  }
1902 #endif /* USE_NETCDF */
1903 
1904  if (OH.UseText(OutputHandler::STRNODES)) {
1905  std::ostream& out = OH.StrNodes();
1906  out
1907  << std::setw(8) << GetLabel()
1908  << " " << XCurr << " ";
1909  switch (od) {
1910  case EULER_123:
1911  case EULER_313:
1912  case EULER_321:
1913  case ORIENTATION_VECTOR:
1914  OH.StrNodes() << E;
1915  break;
1916 
1917  case ORIENTATION_MATRIX:
1918  OH.StrNodes() << RCurr;
1919  break;
1920 
1921  default:
1922  /* impossible */
1923  break;
1924  }
1925  OH.StrNodes() << " " << VCurr << " " << WCurr;
1926 
1927  if (bOutputAccels) {
1928  out
1929  << " " << XPPCurr
1930  << " " << WPCurr;
1931  }
1932  out << std::endl;
1933  }
1934  }
1935 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
Vec3 WPCurr
Definition: strnode.h:749
std::ostream & StrNodes(void) const
Definition: output.h:401
Vec3 XPPCurr
Definition: strnode.h:95
Vec3 VecRot(const Mat3x3 &Phi)
Definition: Rot.cc:136
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 MatR2EulerAngles313(const Mat3x3 &R)
Definition: matvec3.cc:927
Vec3 WCurr
Definition: strnode.h:747
OrientationDescription od
Definition: strnode.h:111
long GetCurrentStep(void) const
Definition: output.h:116
Vec3 MatR2EulerAngles123(const Mat3x3 &R)
Definition: matvec3.cc:893
const doublereal dRaDegr
Definition: matvec3.cc:884
bool bOutputAccels
Definition: strnode.h:122
const doublereal * pGetMat(void) const
Definition: matvec3.h:743
Vec3 VCurr
Definition: strnode.h:93
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
Vec3 MatR2EulerAngles321(const Mat3x3 &R)
Definition: matvec3.cc:941
Vec3 XCurr
Definition: strnode.h:90
unsigned int GetLabel(void) const
Definition: withlab.cc:62
bool UseText(int out) const
Definition: output.cc:446

Here is the call graph for this function:

void StructNode::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from StructDispNode.

Definition at line 1779 of file strnode.cc.

References ASSERT, StructDispNode::bOutputAccels, ToBeOutput::bToBeOutput(), DUMMY, DYNAMIC, WithLabel::GetLabel(), GetStructNodeType(), OutputHandler::IsOpen(), MODAL, OutputHandler::NETCDF, StructDispNode::od, STATIC, OutputHandler::STRNODES, and OutputHandler::UseNetCDF().

1780 {
1781  if (bToBeOutput()) {
1782 #ifdef USE_NETCDF
1785 
1786  // node
1787  const char *type;
1788  switch (GetStructNodeType()) {
1789  case STATIC:
1790  type = "static";
1791  break;
1792 
1793  case DYNAMIC:
1794  type = "dynamic";
1795  break;
1796 
1797  case MODAL:
1798  type = "modal";
1799  break;
1800 
1801  case DUMMY:
1802  type = "dummy";
1803  break;
1804 
1805  default:
1806  pedantic_cerr("StructNode::OutputPrepare(" << GetLabel() << "): "
1807  "warning, unknown node type?" << std::endl);
1808  type = "unknown";
1809  break;
1810  }
1811 
1812  std::ostringstream os;
1813  os << "node.struct." << GetLabel();
1814  (void)OH.CreateVar(os.str(), type);
1815 
1816  // node sub-data
1817  os << '.';
1818  std::string name = os.str();
1819 
1820  Var_X = OH.CreateVar<Vec3>(name + "X", "m",
1821  "global position vector (X, Y, Z)");
1822 
1823  Var_Phi = OH.CreateRotationVar(name, "", od, "global");
1824 
1825  Var_XP = OH.CreateVar<Vec3>(name + "XP", "m/s",
1826  "global velocity vector (v_X, v_Y, v_Z)");
1827 
1828  Var_Omega = OH.CreateVar<Vec3>(name + "Omega", "radian/s",
1829  "global angular velocity vector (omega_X, omega_Y, omega_Z)");
1830 
1831  // accelerations
1832  if (bOutputAccels) {
1833  Var_XPP = OH.CreateVar<Vec3>(name + "XPP", "m/s^2",
1834  "global acceleration vector (a_X, a_Y, a_Z)");
1835 
1836  Var_OmegaP = OH.CreateVar<Vec3>(name + "OmegaP", "radian/s^2",
1837  "global angular acceleration vector (omegaP_X, omegaP_Y, omegaP_Z)");
1838  }
1839  }
1840 #endif // USE_NETCDF
1841  }
1842 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
virtual StructNode::Type GetStructNodeType(void) const =0
OrientationDescription od
Definition: strnode.h:111
bool bOutputAccels
Definition: strnode.h:122
bool IsOpen(int out) const
Definition: output.cc:395
#define ASSERT(expression)
Definition: colamd.c:977
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

std::ostream & StructNode::Restart ( std::ostream &  out) const
virtual

Reimplemented from StructDispNode.

Definition at line 1652 of file strnode.cc.

References bOmegaRot, DofOwner::dGetScale(), StructDispNode::dPositionStiffness, StructDispNode::dVelocityStiffness, DYNAMIC, WithLabel::GetLabel(), GetStructNodeType(), Mat3x3::GetVec(), DofOwnerOwner::pGetDofOwner(), RCurr, STATIC, StructDispNode::VCurr, WCurr, Write(), Vec3::Write(), and StructDispNode::XCurr.

1653 {
1654  out << " structural: " << GetLabel() << ", ";
1656  out << "dynamic";
1657  } else if (GetStructNodeType() == StructNode::STATIC) {
1658  out << "static";
1659  }
1660  out << ", reference, global, ";
1661  XCurr.Write(out, ", ")
1662  << ", reference, global, 1, ", (RCurr.GetVec(1)).Write(out, ", ")
1663  << ", 2, ", (RCurr.GetVec(2)).Write(out, ", ")
1664  << ", reference, global, ",
1665  VCurr.Write(out, ", ")
1666  << ", reference, global, ",
1667  WCurr.Write(out, ", ") << ", assembly, "
1668  << dPositionStiffness << ", "
1669  << dVelocityStiffness << ", "
1670  << bOmegaRot
1671  << ", scale, " << pGetDofOwner()->dGetScale() << ';' << std::endl;
1672 
1673  return out;
1674 }
doublereal dVelocityStiffness
Definition: strnode.h:115
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
Definition: matvec3.cc:738
bool bOmegaRot
Definition: strnode.h:756
std::ostream & Write(std::ostream &out, const FullMatrixHandler &m, const char *s, const char *s2)
Definition: fullmh.cc:376
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
Mat3x3 RCurr
Definition: strnode.h:730
virtual const DofOwner * pGetDofOwner(void) const
Definition: dofown.h:113
doublereal dGetScale(void) const
Definition: dofown.cc:38
virtual StructNode::Type GetStructNodeType(void) const =0
Vec3 WCurr
Definition: strnode.h:747
doublereal dPositionStiffness
Definition: strnode.h:114
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void StructNode::SetDofValue ( const doublereal dValue,
unsigned int  iDof,
unsigned int  iOrder = 0 
)
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode, and DynamicStructNode.

Definition at line 1746 of file strnode.cc.

References ASSERT, WithLabel::GetLabel(), MBDYN_EXCEPT_ARGS, StructDispNode::VCurr, WCurr, and StructDispNode::XCurr.

Referenced by DynamicStructNode::SetDofValue().

1749 {
1750  ASSERT(iDof >= 1 && iDof <= 6);
1751  ASSERT(iOrder == 0 || iOrder == 1);
1752  if (iDof >= 1 && iDof <= 3) {
1753  if (iOrder == 0) {
1754  XCurr(iDof) = dValue;
1755 
1756  } else if (iOrder == 1) {
1757  VCurr(iDof) = dValue;
1758  }
1759 
1760  } else if (iDof >= 4 && iDof <= 6) {
1761  if (iOrder == 1) {
1762  WCurr(iDof - 3) = dValue;
1763 
1764  } else if (iOrder == 0) {
1765  silent_cerr("StructNode(" << GetLabel() << "): "
1766  "unable to set angles" << std::endl);
1768  }
1769 
1770  } else {
1771  silent_cerr("StructNode(" << GetLabel() << "): "
1772  "required dof " << iDof << " (order " << iOrder << ") "
1773  "is not available." << std::endl);
1775  }
1776 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Vec3 WCurr
Definition: strnode.h:747
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void StructNode::SetInitialValue ( VectorHandler X)
virtual

Initialize state vector used in initial assembly. May set internal states of the element. Do not rely on being always called, because initial assembly could be implicitly or explicitly skipped

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 2319 of file strnode.cc.

References DofOwnerOwner::iGetFirstIndex(), VectorHandler::Put(), StructDispNode::VCurr, WCurr, StructDispNode::XCurr, and Zero3.

2320 {
2321  /* FIXME: why is this called? */
2322  integer iIndex = iGetFirstIndex();
2323 
2324  X.Put(iIndex + 1, XCurr);
2325  X.Put(iIndex + 4, Zero3);
2326  X.Put(iIndex + 7, VCurr);
2327  X.Put(iIndex + 10, WCurr);
2328 }
const Vec3 Zero3(0., 0., 0.)
Vec3 WCurr
Definition: strnode.h:747
virtual void Put(integer iRow, const Vec3 &v)
Definition: vh.cc:93
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

void StructNode::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from StructDispNode.

Reimplemented in DummyStructNode.

Definition at line 2332 of file strnode.cc.

References Vec3::Cross(), gCurr, WithLabel::GetLabel(), GetRCurr(), StructDispNode::GetVCurr(), GetWCurr(), StructDispNode::GetXCurr(), gPCurr, gPRef, gRef, DofOwnerOwner::iGetFirstIndex(), Mat3x3::MulTM(), Mat3x3::MulTV(), StructDispNode::pRefNode, VectorHandler::Put(), RCurr, RPrev, StructDispNode::VCurr, StructDispNode::VPrev, WCurr, WPrev, StructDispNode::XCurr, StructDispNode::XPrev, and Zero3.

2335 {
2336 #ifdef USE_AUTODIFF
2337  bUpdateRotation = true;
2338 #endif
2339 
2340 #ifdef MBDYN_X_RELATIVE_PREDICTION
2341  if (pRefNode) {
2342  Vec3 Xtmp = XPrev - pRefNode->GetXCurr();
2343  const Mat3x3& R0 = pRefNode->GetRCurr();
2344  const Vec3& V0 = pRefNode->GetVCurr();
2345  const Vec3& W0 = pRefNode->GetWCurr();
2346 
2347  XPrev = R0.MulTV(Xtmp);
2348  RPrev = R0.MulTM(RCurr);
2349  VPrev = R0.MulTV(VCurr - V0 - W0.Cross(Xtmp));
2350  WPrev = R0.MulTV(WCurr - W0);
2351 
2352 #if 0
2353  std::cout << "StructNode(" << GetLabel() << "): "
2354  "SetValue: X=" << XPrev
2355  << ", R=" << RPrev
2356  << ", V=" << VPrev
2357  << ", W=" << WPrev
2358  << std::endl;
2359 #endif
2360 
2361  } else
2362 #endif /* MBDYN_X_RELATIVE_PREDICTION */
2363  {
2364  /* FIXME: in any case, we start with Crank-Nicolson ... */
2365  XPrev = XCurr;
2366  RPrev = RCurr;
2367  VPrev = VCurr;
2368  WPrev = WCurr;
2369  // Without the next line the Jacobian matrix of most elements
2370  // will be incorrect during the initial derivatives calculation
2371  // if RCurr has been changed during initial assembly!
2372  // The reason is, that most elements assume that
2373  // RCurr = RDelta * RRef
2374  // and not RCurr = RDelta * RPrev
2375  RRef = RCurr;
2376  WRef = WCurr;
2377  }
2378 
2379  integer iFirstIndex = iGetFirstIndex();
2380  X.Put(iFirstIndex + 1, XPrev);
2381  X.Put(iFirstIndex + 4, Zero3);
2382  gRef = gCurr = gPRef = gPCurr = Zero3;
2383  XP.Put(iFirstIndex + 1, VPrev);
2384  XP.Put(iFirstIndex + 4, WPrev);
2385 }
Vec3 WPrev
Definition: strnode.h:745
Mat3x3 RPrev
Definition: strnode.h:728
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Definition: matvec3.h:98
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 XPrev
Definition: strnode.h:89
Vec3 gPCurr
Definition: strnode.h:735
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
Mat3x3 RCurr
Definition: strnode.h:730
const StructNode * pRefNode
Definition: strnode.h:98
Vec3 WCurr
Definition: strnode.h:747
Mat3x3 RRef
Definition: strnode.h:729
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
Mat3x3 MulTM(const Mat3x3 &m) const
Definition: matvec3.cc:500
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
Vec3 gPRef
Definition: strnode.h:734
Vec3 WRef
Definition: strnode.h:746
Vec3 gRef
Definition: strnode.h:732
virtual void Put(integer iRow, const Vec3 &v)
Definition: vh.cc:93
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
Vec3 VPrev
Definition: strnode.h:92
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

void StructNode::Update ( const VectorHandler X,
const VectorHandler XP 
)
virtual

Reimplemented from StructDispNode.

Reimplemented in PivotRelFrameDummyStructNode, RelFrameDummyStructNode, OffsetDummyStructNode, ModalNode, and DynamicStructNode.

Definition at line 1939 of file strnode.cc.

References gCurr, WithLabel::GetLabel(), gPCurr, DofOwnerOwner::iGetFirstIndex(), CGR_Rot::MatG, CGR_Rot::MatR, Vec3::Norm(), RCurr, RRef, StructDispNode::VCurr, WCurr, WRef, and StructDispNode::XCurr.

1940 {
1941 #ifdef USE_AUTODIFF
1942  bUpdateRotation = true;
1943 #endif
1944 
1945  integer iFirstIndex = iGetFirstIndex();
1946 
1947  XCurr = Vec3(X, iFirstIndex + 1);
1948  VCurr = Vec3(XP, iFirstIndex + 1);
1949 
1950  /* Nota: i g, gP non vengono incrementati */
1951  gCurr = Vec3(X, iFirstIndex + 4);
1952  gPCurr = Vec3(XP, iFirstIndex + 4);
1953 
1954 #if 0
1955  // test amplitude of orientation increment
1956  if (gCurr.Norm() > 1.) {
1957  silent_cerr("StructNode(" << GetLabel() << "): "
1958  "incremental rotation too large, YMMV" << std::endl);
1959  }
1960 #endif
1961 
1962  /* Matrice RDelta, incremento di rotazione da predetto a corrente;
1963  * Questo e' piu' efficiente */
1964  Mat3x3 RDelta(CGR_Rot::MatR, gCurr);
1965 
1966 #if 0
1967  /* Questo e' meno efficiente anche se sembra piu' elegante.
1968  * Il problema e' che per scrivere il manipolatore in forma
1969  * elegante bisogna aggiungere alla matrice le informazioni
1970  * di memorizzazione della funzione di manipolazione.
1971  * Oppure occorre un operatore ternario */
1972  RDelta = MatR << gCurr;
1973 #endif
1974 
1975  /* La matrice di rotazione corrente e' data dalla matrice predetta
1976  * (costante) moltiplicata per l'incremento totale occorso;
1977  * la velocita' angolare e' data dalla parte incrementale totale
1978  * piu' il contributo della velocita' di riferimento (costante) */
1979  RCurr = RDelta*RRef;
1980  WCurr = Mat3x3(CGR_Rot::MatG, gCurr)*gPCurr + RDelta*WRef;
1981 
1982 #if 0
1983  /* Nuovo manipolatore (forse e' meno efficiente) */
1984  WCurr = (CGR_Rot::MatG << gCurr)*gPCurr+RDelta*WRef;
1985 #endif
1986 }
Definition: matvec3.h:98
doublereal Norm(void) const
Definition: matvec3.h:263
Vec3 gPCurr
Definition: strnode.h:735
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 WCurr
Definition: strnode.h:747
const MatG_Manip MatG
Definition: matvec3.cc:646
Mat3x3 RRef
Definition: strnode.h:729
const MatR_Manip MatR
Definition: matvec3.cc:645
Vec3 WRef
Definition: strnode.h:746
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

void StructNode::Update ( const VectorHandler X,
InverseDynamics::Order  iOrder 
)
virtual

Reimplemented from StructDispNode.

Definition at line 2280 of file strnode.cc.

References InverseDynamics::ACCELERATION, ASSERT, gCurr, gPCurr, DofOwnerOwner::iGetFirstIndex(), CGR_Rot::MatG, CGR_Rot::MatR, MBDYN_EXCEPT_ARGS, InverseDynamics::POSITION, RCurr, RRef, StructDispNode::VCurr, InverseDynamics::VELOCITY, WCurr, WPCurr, WRef, StructDispNode::XCurr, and StructDispNode::XPPCurr.

2281 {
2282 #ifdef USE_AUTODIFF
2283  bUpdateRotation = true;
2284 #endif
2285 
2286  integer iFirstIndex = iGetFirstIndex();
2287  switch (iOrder) {
2289  XCurr = Vec3(X, iFirstIndex + 1);
2290  gCurr = Vec3(X, iFirstIndex + 4);
2291  Mat3x3 RDelta(CGR_Rot::MatR, gCurr);
2292  RCurr = RDelta*RRef;
2293  // gCurr = ::Zero3;
2294  } break;
2295 
2297  VCurr = Vec3(X, iFirstIndex + 1);
2298 #if 0
2299  gPCurr = Vec3(X, iFirstIndex + 4);
2300  Mat3x3 RDelta(CGR_Rot::MatR, gCurr);
2301  WCurr = Mat3x3(CGR_Rot::MatG, gCurr)*gPCurr + RDelta*WRef;
2302 #endif
2303  WCurr = Vec3(X, iFirstIndex + 4);
2304  } break;
2305 
2307  XPPCurr = Vec3(X, iFirstIndex + 1);
2308  WPCurr = Vec3(X, iFirstIndex + 4);
2309  } break;
2310 
2311  default:
2312  ASSERT(0);
2314  }
2315 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
Vec3 WPCurr
Definition: strnode.h:749
Vec3 gPCurr
Definition: strnode.h:735
Vec3 XPPCurr
Definition: strnode.h:95
Mat3x3 RCurr
Definition: strnode.h:730
Vec3 WCurr
Definition: strnode.h:747
const MatG_Manip MatG
Definition: matvec3.cc:646
Mat3x3 RRef
Definition: strnode.h:729
const MatR_Manip MatR
Definition: matvec3.cc:645
#define ASSERT(expression)
Definition: colamd.c:977
Vec3 WRef
Definition: strnode.h:746
Vec3 VCurr
Definition: strnode.h:93
Vec3 XCurr
Definition: strnode.h:90
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
Vec3 gCurr
Definition: strnode.h:733

Here is the call graph for this function:

Member Data Documentation

bool StructNode::bOmegaRot
protected

Definition at line 756 of file strnode.h.

Referenced by Restart().

Vec3 StructNode::gCurr
mutableprotected
Vec3 StructNode::gPCurr
mutableprotected

Definition at line 735 of file strnode.h.

Referenced by AfterPredict(), DerivativesUpdate(), SetValue(), and Update().

Vec3 StructNode::gPRef
mutableprotected

Definition at line 734 of file strnode.h.

Referenced by AfterPredict(), and SetValue().

Vec3 StructNode::gRef
mutableprotected

Definition at line 732 of file strnode.h.

Referenced by AfterConvergence(), AfterPredict(), and SetValue().

Mat3x3 StructNode::RPrev
mutableprotected

Definition at line 728 of file strnode.h.

Referenced by AfterConvergence(), AfterPredict(), BeforePredict(), and SetValue().

Mat3x3 StructNode::RRef
protected

Definition at line 729 of file strnode.h.

Referenced by InitialUpdate(), and Update().

Vec3 StructNode::WPPrev
mutableprotected
Vec3 StructNode::WPrev
mutableprotected

Definition at line 745 of file strnode.h.

Referenced by AfterConvergence(), BeforePredict(), dGetDofValuePrev(), and SetValue().

Vec3 StructNode::WRef
protected

Definition at line 746 of file strnode.h.

Referenced by Update().


The documentation for this class was generated from the following files: