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

#include <rodbezj.h>

Inheritance diagram for RodBezier:
Collaboration diagram for RodBezier:

Public Member Functions

 RodBezier (unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const StructNode *pN1, const StructNode *pN2, const Vec3 &fOTmp, const Vec3 &fATmp, const Vec3 &fBTmp, const Vec3 &fITmp, doublereal dLength, bool bFromNodes, const unsigned int iIntOrder, const unsigned int iIntSegments, flag fOut)
 
virtual ~RodBezier (void)
 
virtual Joint::Type GetJointType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual unsigned int iGetNumDof (void) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void AssVec (SubVectorHandler &WorkVec)
 
void Output (OutputHandler &OH) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
virtual bool bInverseDynamics (void) const
 
VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
doublereal dGetPrivData (unsigned int i) const
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
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 DofOrder::Order GetDofType (unsigned int) const
 
virtual void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual int GetNumConnectedNodes (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 bool bIsValidIndex (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void OutputPrepare (OutputHandler &OH)
 
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 Joint
 Joint (unsigned int uL, const DofOwner *pD, flag fOut)
 
virtual ~Joint (void)
 
virtual Elem::Type GetElemType (void) const
 
std::ostream & Output (std::ostream &out, const char *sJointName, unsigned int uLabel, const Vec3 &FLocal, const Vec3 &MLocal, const Vec3 &FGlobal, const Vec3 &MGlobal) const
 
virtual void SetInitialValue (VectorHandler &)
 
virtual void SetValue (DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
 
bool bIsPrescribedMotion (void) const
 
bool bIsTorque (void) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) const
 
- Public Member Functions inherited from ElemWithDofs
 ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~ElemWithDofs (void)
 
- 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 InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 
- Public Member Functions inherited from ConstitutiveLawOwner< T, Tder >
 ConstitutiveLawOwner (const ConstitutiveLaw< T, Tder > *pCL)
 
virtual ~ConstitutiveLawOwner (void)
 
ConstitutiveLaw< T, Tder > * pGetConstLaw (void) const
 
void Update (const T &Eps, const T &EpsPrime=mb_zero< T >())
 
void AfterConvergence (const T &Eps, const T &EpsPrime=mb_zero< T >())
 
const T & GetF (void) const
 
const Tder & GetFDE (void) const
 
const Tder & GetFDEPrime (void) 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 DofOrder::Order GetDofType (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 

Protected Attributes

const StructNodepNode1
 
const StructNodepNode2
 
const Vec3 fO
 
const Vec3 fA
 
const Vec3 fB
 
const Vec3 fI
 
doublereal dL0
 
Vec3 l1
 
Vec3 l2
 
doublereal dElle
 
doublereal dEpsilon
 
doublereal dEpsilonPrime
 
unsigned int iIntOrd
 
unsigned int iIntSeg
 
GaussDataIteratorgdi
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 
- Protected Attributes inherited from ConstitutiveLawOwner< T, Tder >
ConstitutiveLaw< T, Tder > * pConstLaw
 

Private Member Functions

doublereal Ap1 (doublereal u)
 
doublereal Ap2 (doublereal u)
 
doublereal Ap3 (doublereal u)
 
doublereal Ap4 (doublereal u)
 

Additional Inherited Members

- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- 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 Types inherited from Joint
enum  Type {
  UNKNOWN = -1, DISTANCE = 0, DISTANCEWITHOFFSET, CLAMP,
  SPHERICALHINGE, PIN, UNIVERSALHINGE, UNIVERSALROTATION,
  UNIVERSALPIN, PLANEHINGE, PLANEROTATION, PLANEPIN,
  AXIALROTATION, PLANEDISP, PLANEDISPPIN, INPLANE,
  INPLANECONTACT, J_INLINE, ROD, RODBEZIER,
  DEFORMABLEHINGE, DEFORMABLEDISPJOINT, DEFORMABLEJOINT, DEFORMABLEAXIALJOINT,
  VISCOUSBODY, LINEARVELOCITY, ANGULARVELOCITY, LINEARACCELERATION,
  ANGULARACCELERATION, PRISMATIC, DRIVEHINGE, DRIVEDISP,
  DRIVEDISPPIN, IMPOSEDORIENTATION, IMPOSEDDISP, IMPOSEDDISPPIN,
  IMPOSEDKINEMATICS, BEAMSLIDER, BRAKE, GIMBAL,
  POINT_SURFACE_CONTACT, TOTALJOINT, TOTALPINJOINT, TOTALEQUATION,
  TOTALREACTION, MODAL, SCREWJOINT, LASTJOINTTYPE
}
 
- Protected Member Functions inherited from Joint
virtual void OutputPrepare_int (const std::string &type, OutputHandler &OH, std::string &name)
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 

Detailed Description

Definition at line 48 of file rodbezj.h.

Constructor & Destructor Documentation

RodBezier::RodBezier ( unsigned int  uL,
const DofOwner pDO,
const ConstitutiveLaw1D pCL,
const StructNode pN1,
const StructNode pN2,
const Vec3 fOTmp,
const Vec3 fATmp,
const Vec3 fBTmp,
const Vec3 fITmp,
doublereal  dLength,
bool  bFromNodes,
const unsigned int  iIntOrder,
const unsigned int  iIntSegments,
flag  fOut 
)

Definition at line 52 of file rodbezj.cc.

References Ap1(), Ap2(), Ap3(), Ap4(), ASSERT, PntWght::dGetPnt(), dL0, fA, fB, fI, fO, gdi, StructDispNode::GetNodeType(), StructNode::GetRRef(), StructDispNode::GetXCurr(), l1, l2, Vec3::Norm(), and Node::STRUCTURAL.

60 : Elem(uL, fOut),
61 Joint(uL, pDO, fOut),
63 pNode1(pN1),
64 pNode2(pN2),
65 fO(fOTmp),
66 fA(fATmp),
67 fB(fBTmp),
68 fI(fITmp),
69 dL0(dLength),
70 l1(Zero3),
71 l2(Zero3),
72 dElle(0.),
73 dEpsilon(0.),
74 dEpsilonPrime(0.),
75 iIntOrd(iIntOrder),
76 iIntSeg(iIntSegments)
77 {
78  /* Check initial data coherence */
79  ASSERT(pN1 != NULL);
81  ASSERT(pN2 != NULL);
83 
84  /* Integration sites and weights (for curve length)
85  * Gauss-Legendre quadrature used. */
86 
87  gdi = new GaussDataIterator(iIntOrder);
88 
89  const Mat3x3& R1(pN1->GetRRef());
90  const Mat3x3& R2(pN2->GetRRef());
91 
92  l1 = R1*(fATmp - fOTmp);
93  l2 = R2*(fBTmp - fITmp);
94 
95  l1 = l1/l1.Norm();
96  l2 = l2/l2.Norm();
97 
98  if (bFromNodes) {
99 
100  const Vec3 b1 = pN1->GetXCurr() + R1*fO;
101  const Vec3 b2 = pN1->GetXCurr() + R1*fA;
102  const Vec3 b3 = pN2->GetXCurr() + R2*fB;
103  const Vec3 b4 = pN2->GetXCurr() + R2*fI;
104 
105  Vec3 p;
106  doublereal q, up;
107  doublereal s = 1.0/(2.0*iIntSegments);
108 
109  for (unsigned int jj = 0; jj < iIntSegments; jj++) {
110  q = s*(2*jj + 1);
111 
112  PntWght gp = gdi->GetFirst();
113  do {
114  up = s*gp.dGetPnt() + q;
115  p = b1*Ap1(up) + b2*Ap2(up) + b3*Ap3(up) + b4*Ap4(up);
116  dLength = dLength + s*gp.dGetWght()*p.Norm();
117 
118  } while (gdi->fGetNext(gp));
119  }
120 
121  dL0 = dLength;
122 
123  }
124 
125  ASSERT(dLength > std::numeric_limits<doublereal>::epsilon());
126 
127 }
const Vec3 fI
Definition: rodbezj.h:56
const Vec3 Zero3(0., 0., 0.)
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
Vec3 l2
Definition: rodbezj.h:60
unsigned int iIntOrd
Definition: rodbezj.h:65
virtual Node::Type GetNodeType(void) const
Definition: strnode.cc:145
doublereal Norm(void) const
Definition: matvec3.h:263
const Vec3 fB
Definition: rodbezj.h:55
Joint(unsigned int uL, const DofOwner *pD, flag fOut)
Definition: joint.cc:83
doublereal Ap2(doublereal u)
Definition: rodbezj.h:182
GaussDataIterator * gdi
Definition: rodbezj.h:68
ConstitutiveLawOwner< doublereal, doublereal > ConstitutiveLaw1DOwner
Definition: constltp.h:378
unsigned int iIntSeg
Definition: rodbezj.h:66
const Vec3 fA
Definition: rodbezj.h:54
Vec3 l1
Definition: rodbezj.h:59
doublereal Ap4(doublereal u)
Definition: rodbezj.h:184
#define ASSERT(expression)
Definition: colamd.c:977
doublereal dElle
Definition: rodbezj.h:61
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const StructNode * pNode1
Definition: rodbezj.h:51
doublereal dGetPnt(void) const
Definition: gauss.h:55
doublereal Ap3(doublereal u)
Definition: rodbezj.h:183
const Vec3 fO
Definition: rodbezj.h:53
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
double doublereal
Definition: colamd.c:52
doublereal dEpsilon
Definition: rodbezj.h:62
const StructNode * pNode2
Definition: rodbezj.h:52
doublereal dL0
Definition: rodbezj.h:57
doublereal dEpsilonPrime
Definition: rodbezj.h:63
doublereal Ap1(doublereal u)
Definition: rodbezj.h:181
Definition: gauss.h:50

Here is the call graph for this function:

RodBezier::~RodBezier ( void  )
virtual

Definition at line 130 of file rodbezj.cc.

References NO_OP.

131 {
132  NO_OP;
133 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

void RodBezier::AfterConvergence ( const VectorHandler X,
const VectorHandler XP 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 155 of file rodbezj.cc.

References ConstitutiveLawOwner< T, Tder >::AfterConvergence(), dEpsilon, and dEpsilonPrime.

Referenced by AfterConvergence().

157 {
159 }
void AfterConvergence(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:288
doublereal dEpsilon
Definition: rodbezj.h:62
doublereal dEpsilonPrime
Definition: rodbezj.h:63

Here is the call graph for this function:

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

Reimplemented from SimulationEntity.

Definition at line 839 of file rodbezj.cc.

References AfterConvergence().

841 {
842  AfterConvergence(X, XP);
843 }
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: rodbezj.cc:155

Here is the call graph for this function:

doublereal RodBezier::Ap1 ( doublereal  u)
inlineprivate

Definition at line 181 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

181 { return (-3*u*u + 6*u -3); };
doublereal RodBezier::Ap2 ( doublereal  u)
inlineprivate

Definition at line 182 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

182 { return (9*u*u - 12*u + 3); };
doublereal RodBezier::Ap3 ( doublereal  u)
inlineprivate

Definition at line 183 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

183 { return (-9*u*u + 6*u); };
doublereal RodBezier::Ap4 ( doublereal  u)
inlineprivate

Definition at line 184 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

184 { return (3*u*u); };
VariableSubMatrixHandler & RodBezier::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 163 of file rodbezj.cc.

References FullSubMatrixHandler::Add(), Ap1(), Ap2(), Ap3(), Ap4(), Vec3::Cross(), DEBUGCOUT, PntWght::dGetPnt(), dL0, fA, fB, GaussDataIterator::fGetNext(), fI, fO, gdi, ConstitutiveLawOwner< T, Tder >::GetF(), ConstitutiveLawOwner< T, Tder >::GetFDE(), ConstitutiveLawOwner< T, Tder >::GetFDEPrime(), GaussDataIterator::GetFirst(), StructNode::GetRRef(), StructNode::GetWRef(), StructDispNode::GetXCurr(), StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), iIntSeg, l1, l2, MatCross, MatCrossCross, Vec3::Norm(), pNode1, pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), FullSubMatrixHandler::Sub(), Vec3::Tens(), WorkSpaceDim(), and Zero3.

Referenced by AssJac().

167 {
168  DEBUGCOUT("Entering RodBezier::AssJac()" << std::endl);
169 
170  FullSubMatrixHandler& WM = WorkMat.SetFull();
171 
172  /* Resizes and resets the work matrix */
173  integer iNumRows = 0;
174  integer iNumCols = 0;
175  WorkSpaceDim(&iNumRows, &iNumCols);
176  WM.ResizeReset(iNumRows, iNumCols);
177 
178  /* Gets the nodes indexes */
179  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
180  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
181  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
182  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
183 
184  /* Sets the matrix indexes */
185  for (int iCnt = 1; iCnt <= 6; iCnt++) {
186  WM.PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
187  WM.PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
188  WM.PutRowIndex(6 + iCnt, iNode2FirstMomIndex + iCnt);
189  WM.PutColIndex(6 + iCnt, iNode2FirstPosIndex + iCnt);
190  }
191 
192  const Mat3x3& R1(pNode1->GetRRef());
193  const Mat3x3& R2(pNode2->GetRRef());
194  const Vec3 fOTmp(R1*fO);
195  const Vec3 fATmp(R1*fA);
196  const Vec3 fBTmp(R2*fB);
197  const Vec3 fITmp(R2*fI);
198 
199  const Vec3& Omega1(pNode1->GetWRef());
200  const Vec3& Omega2(pNode2->GetWRef());
201 
202  /* Force and slopes */
203  doublereal dF = GetF();
204  doublereal dFDE = GetFDE();
205  doublereal dFDEPrime = GetFDEPrime();
206 
207  const Vec3 b1 = pNode1->GetXCurr() + R1*fO;
208  const Vec3 b2 = pNode1->GetXCurr() + R1*fA;
209  const Vec3 b3 = pNode2->GetXCurr() + R2*fB;
210  const Vec3 b4 = pNode2->GetXCurr() + R2*fI;
211 
212  Vec3 p;
213  doublereal q, up, pNorm, dKC, dAp1, dAp2, dAp3, dAp4;
214  doublereal s = 1.0/(2.0*iIntSeg);
215 
216  Vec3 kcx1(Zero3);
217  Vec3 kcg1(Zero3);
218  Vec3 kcx2(Zero3);
219  Vec3 kcg2(Zero3);
220 
221  Vec3 TmpV;
222 
223  for (unsigned int jj = 0; jj < iIntSeg; jj++) {
224  q = s*(2*jj + 1);
225 
226  PntWght gp = gdi->GetFirst();
227  do {
228  up = s*gp.dGetPnt() + q;
229 
230  dAp1 = Ap1(up);
231  dAp2 = Ap2(up);
232  dAp3 = Ap3(up);
233  dAp4 = Ap4(up);
234 
235  p = b1*dAp1 + b2*dAp2 + b3*dAp3 + b4*dAp4;
236  pNorm = p.Norm();
237  dKC = (s*gp.dGetWght())/(2*dL0*pNorm);
238 
239  kcx1 = kcx1 + p*(dFDE*dKC*dCoef*(dAp1 + dAp2));
240 
241  kcg1 = kcg1 + p.Cross(fOTmp*dAp1 + fATmp*dAp2)*dFDE*dKC*dCoef;
242 
243  kcx2 = kcx2 + p*dFDE*dKC*dCoef*(dAp3 + dAp4);
244 
245  kcg2 = kcg2 + p.Cross(fBTmp*dAp3 +fITmp*dAp4)*dFDE*dKC*dCoef;
246 
247  if (dFDEPrime != 0.) {
248  kcx1 = kcx1 + p*dFDEPrime*dKC*(dAp1 + dAp2);
249 
250  TmpV = p*2. - p.Cross(fOTmp*dAp1 + fATmp*dAp2);
251  kcg1 = kcg1 - Omega1.Cross(TmpV)*dFDEPrime*dKC*dCoef;
252 
253  kcx2 = kcx2 + p*dFDEPrime*dKC*(dAp3 + dAp4);
254 
255  TmpV = p*2. - p.Cross(fBTmp*dAp3 + fITmp*dAp4);
256  kcg2 = kcg2 + Omega2.Cross(TmpV)*dFDEPrime*dKC*dCoef;
257  }
258 
259  } while (gdi->fGetNext(gp));
260  }
261 
262 
263  /* Forces on node 1 from dx1 */
264  Mat3x3 F1x1 = l1.Tens(kcx1);
265  WM.Add(1, 1, F1x1);
266 
267  /* Moments on node 1 from dx1 */
268  Mat3x3 M1x1 = Mat3x3(MatCross, fOTmp)*F1x1;
269  WM.Sub(3 + 1, 1, M1x1);
270 
271  /* Forces on node 2 from dx1 */
272  Mat3x3 F2x1 = l2.Tens(kcx1);
273  WM.Add(6 + 1, 1, F2x1);
274 
275  /* Moments on node 2 from dx1 */
276  Mat3x3 M2x1 = Mat3x3(MatCross, fITmp)*F2x1;
277  WM.Sub(9 + 1, 1, M2x1);
278 
279  /* Forces on node 1 from dg1 */
280  Mat3x3 F1g1 = l1.Tens(kcg1) - (Mat3x3(MatCross, l1) - Mat3x3(MatCross, l1)*l1.Tens())*dCoef*dF;
281  WM.Add(1, 3 + 1, F1g1);
282 
283  /* Moments on node 1 from dg1 */
284  Mat3x3 M1g1 = Mat3x3(MatCross, fOTmp)*F1g1 - Mat3x3(MatCrossCross, l1, fOTmp)*dCoef*dF;
285  WM.Sub(3 + 1, 3 + 1, M1g1);
286 
287  /* Forces on node 2 from dg1 */
288  Mat3x3 F2g1 = l2.Tens(kcg1);
289  WM.Add(6 + 1, 3 + 1, F2g1);
290 
291  /* Moments on node 2 from dg1 */
292  Mat3x3 M2g1 = Mat3x3(MatCross, fITmp)*F2g1;
293  WM.Sub(9 + 1, 3 + 1, M2g1);
294 
295  /* Forces on node 1 from dx2 */
296  Mat3x3 F1x2 = l1.Tens(kcx2);
297  WM.Add(1, 6 + 1, F1x2);
298 
299  /* Moments on node 1 from dx2 */
300  Mat3x3 M1x2 = Mat3x3(MatCross, fOTmp)*F1x2;
301  WM.Sub(3 + 1, 6 + 1, M1x2);
302 
303  /* Forces on node 2 from dx2 */
304  Mat3x3 F2x2 = l2.Tens(kcx2);
305  WM.Add(6 + 1, 6 + 1, F2x2);
306 
307  /* Moments on node 2 from dx2 */
308  Mat3x3 M2x2 = Mat3x3(MatCross, fITmp)*F2x2;
309  WM.Sub(9 + 1, 6 + 1, M2x2);
310 
311  /* Forces on node 1 from dg2 */
312  Mat3x3 F1g2 = l1.Tens(kcg2);
313  WM.Add(1, 9 + 1, F1g2);
314 
315  /* Moments on node 1 from dg2 */
316  Mat3x3 M1g2 = Mat3x3(MatCross, fOTmp)*F1g2;
317  WM.Sub(3 + 1, 9 + 1, M1g2);
318 
319  /* Forces on node 2 from dg2 */
320  Mat3x3 F2g2 = l2.Tens(kcg2) - (Mat3x3(MatCross, l2) - Mat3x3(MatCross, l2)*l2.Tens())*dF*dCoef;
321  WM.Add(6 + 1, 9 + 1, F2g2);
322 
323  /* Moments on node 2 from dg2 */
324  Mat3x3 M2g2 = Mat3x3(MatCross, fITmp)*F2g2 - Mat3x3(MatCrossCross, l2, fITmp)*dCoef*dF;
325  WM.Sub(9 + 1, 9 + 1, M2g2);
326 
327  return WorkMat;
328 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
const Vec3 fI
Definition: rodbezj.h:56
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
Vec3 l2
Definition: rodbezj.h:60
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
doublereal Norm(void) const
Definition: matvec3.h:263
const Vec3 fB
Definition: rodbezj.h:55
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
flag fGetNext(doublereal &d, integer i=0) const
Definition: gauss.cc:205
PntWght GetFirst(void) const
Definition: gauss.cc:198
const Tder & GetFDE(void) const
Definition: constltp.h:298
doublereal Ap2(doublereal u)
Definition: rodbezj.h:182
virtual const Vec3 & GetWRef(void) const
Definition: strnode.h:1024
GaussDataIterator * gdi
Definition: rodbezj.h:68
unsigned int iIntSeg
Definition: rodbezj.h:66
const Vec3 fA
Definition: rodbezj.h:54
#define DEBUGCOUT(msg)
Definition: myassert.h:232
Vec3 l1
Definition: rodbezj.h:59
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
doublereal Ap4(doublereal u)
Definition: rodbezj.h:184
Mat3x3 Tens(const Vec3 &v) const
Definition: matvec3.cc:53
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const StructNode * pNode1
Definition: rodbezj.h:51
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
doublereal dGetPnt(void) const
Definition: gauss.h:55
doublereal Ap3(doublereal u)
Definition: rodbezj.h:183
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const T & GetF(void) const
Definition: constltp.h:293
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
const Vec3 fO
Definition: rodbezj.h:53
double doublereal
Definition: colamd.c:52
const Tder & GetFDEPrime(void) const
Definition: constltp.h:303
long int integer
Definition: colamd.c:51
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodbezj.h:100
const StructNode * pNode2
Definition: rodbezj.h:52
doublereal dL0
Definition: rodbezj.h:57
doublereal Ap1(doublereal u)
Definition: rodbezj.h:181
Definition: gauss.h:50

Here is the call graph for this function:

VariableSubMatrixHandler & RodBezier::AssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Reimplemented from Elem.

Definition at line 807 of file rodbezj.cc.

References ASSERT, AssJac(), and Elem::bIsErgonomy().

809 {
810  ASSERT(bIsErgonomy());
811  return AssJac(WorkMat, 1., XCurr, XCurr);
812 }
bool bIsErgonomy(void) const
Definition: elem.cc:83
#define ASSERT(expression)
Definition: colamd.c:977
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: rodbezj.cc:163

Here is the call graph for this function:

SubVectorHandler & RodBezier::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 332 of file rodbezj.cc.

References AssVec(), DEBUGCOUT, StructDispNode::iGetFirstMomentumIndex(), pNode1, pNode2, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), and WorkSpaceDim().

Referenced by AssRes().

336 {
337  DEBUGCOUT("RodBezier::AssRes()" << std::endl);
338 
339  /* Resizes and resets the work matrix */
340  integer iNumRows = 0;
341  integer iNumCols = 0;
342  WorkSpaceDim(&iNumRows, &iNumCols);
343  WorkVec.ResizeReset(iNumRows);
344 
345  /* Gets the nodes indexes */
346  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
347  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
348 
349  /* Sets the indexes */
350  for (int iCnt = 1; iCnt <= 6; iCnt++) {
351  WorkVec.PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
352  WorkVec.PutRowIndex(6 + iCnt, iNode2FirstMomIndex + iCnt);
353  }
354 
355  AssVec(WorkVec);
356 
357  return WorkVec;
358 }
void AssVec(SubVectorHandler &WorkVec)
Definition: rodbezj.cc:361
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
const StructNode * pNode1
Definition: rodbezj.h:51
long int integer
Definition: colamd.c:51
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodbezj.h:100
const StructNode * pNode2
Definition: rodbezj.h:52

Here is the call graph for this function:

SubVectorHandler & RodBezier::AssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr,
const VectorHandler XPrimePrimeCurr,
InverseDynamics::Order  iOrder = InverseDynamics::INVERSE_DYNAMICS 
)
virtual

Reimplemented from Elem.

Definition at line 816 of file rodbezj.cc.

References ASSERT, AssRes(), Elem::bIsErgonomy(), DEBUGCOUT, InverseDynamics::INVERSE_DYNAMICS, and InverseDynamics::POSITION.

821 {
822  DEBUGCOUT("Entering RodBezier::AssRes()" << std::endl);
823 
825  || (iOrder == InverseDynamics::POSITION && bIsErgonomy()));
826 
827  return AssRes(WorkVec, 1., XCurr, XPrimeCurr);
828 }
bool bIsErgonomy(void) const
Definition: elem.cc:83
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: rodbezj.cc:332
#define DEBUGCOUT(msg)
Definition: myassert.h:232
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

void RodBezier::AssVec ( SubVectorHandler WorkVec)

Definition at line 361 of file rodbezj.cc.

References VectorHandler::Add(), Ap1(), Ap2(), Ap3(), Ap4(), Vec3::Cross(), DEBUGCOUT, dElle, dEpsilon, dEpsilonPrime, PntWght::dGetPnt(), dL0, Vec3::Dot(), fA, fB, GaussDataIterator::fGetNext(), fI, fO, gdi, ConstitutiveLawOwner< T, Tder >::GetF(), GaussDataIterator::GetFirst(), WithLabel::GetLabel(), StructNode::GetRCurr(), StructDispNode::GetVCurr(), StructNode::GetWCurr(), StructDispNode::GetXCurr(), iIntSeg, l1, l2, MBDYN_EXCEPT_ARGS, Vec3::Norm(), pNode1, pNode2, and ConstitutiveLawOwner< T, Tder >::Update().

Referenced by AssRes(), and InitialAssRes().

362 {
363  DEBUGCOUT("RodBezier::AssVec()" << std::endl);
364 
365  /* Data */
366  const Mat3x3& R1(pNode1->GetRCurr());
367  const Mat3x3& R2(pNode2->GetRCurr());
368  Vec3 fOTmp(R1*fO);
369  Vec3 fATmp(R1*fA);
370  Vec3 fBTmp(R2*fB);
371  Vec3 fITmp(R2*fI);
372 
373  const Vec3& x1(pNode1->GetXCurr());
374  const Vec3& x2(pNode2->GetXCurr());
375 
376  const Vec3& v1(pNode1->GetVCurr());
377  const Vec3& v2(pNode2->GetVCurr());
378  const Vec3& Omega1(pNode1->GetWCurr());
379  const Vec3& Omega2(pNode2->GetWCurr());
380 
381  dElle = 0.;
382  doublereal dEllePrime = 0.;
383  Vec3 p, pprime;
384  doublereal q, up, dAp1, dAp2, dAp3, dAp4;
385  doublereal s = 1.0/(2.0*iIntSeg);
386 
387  for (unsigned int jj = 0; jj < iIntSeg; jj++) {
388  q = s*(2*jj + 1);
389 
390  PntWght gp = gdi->GetFirst();
391  do {
392  up = s*gp.dGetPnt() + q;
393 
394  dAp1 = Ap1(up);
395  dAp2 = Ap2(up);
396  dAp3 = Ap3(up);
397  dAp4 = Ap4(up);
398 
399  p = (x1 + fOTmp)*dAp1 +
400  (x1 + fATmp)*dAp2 +
401  (x2 + fBTmp)*dAp3 +
402  (x2 + fITmp)*dAp4;
403 
404  dElle = dElle + s*gp.dGetWght()*p.Norm();
405  pprime = (v1 + Omega1.Cross(fOTmp))*dAp1 +
406  (v1 + Omega1.Cross(fATmp))*dAp2 +
407  (v2 + Omega2.Cross(fBTmp))*dAp3 +
408  (v2 + Omega2.Cross(fITmp))*dAp4;
409  dEllePrime = dEllePrime + .5*s*gp.dGetWght()/p.Norm()*p.Dot(pprime);
410  } while (gdi->fGetNext(gp));
411  }
412 
413  /* Check that the distance is not null */
414  if (dElle <= std::numeric_limits<doublereal>::epsilon()) {
415  silent_cerr("RodBezier(" << GetLabel() << "): "
416  "null length of element." << std::endl);
418  }
419 
420  /* Strain */
421  dEpsilon = dElle/dL0 - 1.;
422 
423  /* Strain velocity */
424  dEpsilonPrime = dEllePrime/dL0;
425 
426  /* Amplitude of force from CL */
427  bool ChangeJac(false);
428  try {
430 
432  ChangeJac = true;
433  }
434 
435  doublereal dF = GetF();
436 
437  /* Force vectors */
438  Vec3 F1(l1*dF);
439  Vec3 F2(l2*dF);
440 
441  WorkVec.Add(1, F1);
442  WorkVec.Add(3 + 1, fOTmp.Cross(F1));
443  WorkVec.Add(6 + 1, F2);
444  WorkVec.Add(9 + 1, fITmp.Cross(F2));
445 
446  if (ChangeJac) {
448  }
449 }
const Vec3 fI
Definition: rodbezj.h:56
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
Vec3 l2
Definition: rodbezj.h:60
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
doublereal Norm(void) const
Definition: matvec3.h:263
const Vec3 fB
Definition: rodbezj.h:55
doublereal Dot(const Vec3 &v) const
Definition: matvec3.h:243
flag fGetNext(doublereal &d, integer i=0) const
Definition: gauss.cc:205
PntWght GetFirst(void) const
Definition: gauss.cc:198
doublereal Ap2(doublereal u)
Definition: rodbezj.h:182
GaussDataIterator * gdi
Definition: rodbezj.h:68
unsigned int iIntSeg
Definition: rodbezj.h:66
const Vec3 fA
Definition: rodbezj.h:54
#define DEBUGCOUT(msg)
Definition: myassert.h:232
Vec3 l1
Definition: rodbezj.h:59
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
doublereal Ap4(doublereal u)
Definition: rodbezj.h:184
doublereal dElle
Definition: rodbezj.h:61
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
const StructNode * pNode1
Definition: rodbezj.h:51
doublereal dGetPnt(void) const
Definition: gauss.h:55
doublereal Ap3(doublereal u)
Definition: rodbezj.h:183
const T & GetF(void) const
Definition: constltp.h:293
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
const Vec3 fO
Definition: rodbezj.h:53
double doublereal
Definition: colamd.c:52
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:283
doublereal dEpsilon
Definition: rodbezj.h:62
unsigned int GetLabel(void) const
Definition: withlab.cc:62
const StructNode * pNode2
Definition: rodbezj.h:52
doublereal dL0
Definition: rodbezj.h:57
doublereal dEpsilonPrime
Definition: rodbezj.h:63
doublereal Ap1(doublereal u)
Definition: rodbezj.h:181
Definition: gauss.h:50

Here is the call graph for this function:

bool RodBezier::bInverseDynamics ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 800 of file rodbezj.cc.

801 {
802  return true;
803 }
doublereal RodBezier::dGetPrivData ( unsigned int  i) const
virtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 878 of file rodbezj.cc.

References ASSERT, dElle, dEpsilonPrime, ConstitutiveLawOwner< T, Tder >::dGetPrivData(), dL0, ConstitutiveLawOwner< T, Tder >::GetF(), and ConstitutiveLawOwner< T, Tder >::iGetNumPrivData().

879 {
880  ASSERT(i > 0);
881 
882  switch (i) {
883  case 1:
884  return GetF();
885 
886  case 2:
887  return dElle;
888 
889  case 3:
890  return dL0*dEpsilonPrime;
891  }
892 
893  i -= 3;
895 
897 }
virtual unsigned int iGetNumPrivData(void) const
Definition: constltp.h:352
#define ASSERT(expression)
Definition: colamd.c:977
doublereal dElle
Definition: rodbezj.h:61
virtual doublereal dGetPrivData(unsigned int i) const
Definition: constltp.h:369
const T & GetF(void) const
Definition: constltp.h:293
doublereal dL0
Definition: rodbezj.h:57
doublereal dEpsilonPrime
Definition: rodbezj.h:63

Here is the call graph for this function:

virtual void RodBezier::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
inlinevirtual

Reimplemented from Elem.

Definition at line 169 of file rodbezj.h.

References pNode1, and pNode2.

169  {
170  connectedNodes.resize(2);
171  connectedNodes[0] = pNode1;
172  connectedNodes[1] = pNode2;
173  };
const StructNode * pNode1
Definition: rodbezj.h:51
const StructNode * pNode2
Definition: rodbezj.h:52
virtual Joint::Type RodBezier::GetJointType ( void  ) const
inlinevirtual

Implements Joint.

Definition at line 85 of file rodbezj.h.

References Joint::RODBEZIER.

85  {
86  return Joint::RODBEZIER;
87  };
virtual unsigned int RodBezier::iGetInitialNumDof ( void  ) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 121 of file rodbezj.h.

121  {
122  return 0;
123  }
virtual unsigned int RodBezier::iGetNumDof ( void  ) const
inlinevirtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 95 of file rodbezj.h.

95  {
96  return 0;
97  };
unsigned int RodBezier::iGetNumPrivData ( void  ) const
virtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 846 of file rodbezj.cc.

References ConstitutiveLawOwner< T, Tder >::iGetNumPrivData().

847 {
849 }
virtual unsigned int iGetNumPrivData(void) const
Definition: constltp.h:352

Here is the call graph for this function:

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

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 852 of file rodbezj.cc.

References ASSERT, ConstitutiveLawOwner< T, Tder >::iGetPrivDataIdx(), and STRLENOF.

853 {
854  ASSERT(s != NULL);
855 
856  if (strcmp(s, "F") == 0) {
857  return 1;
858  }
859 
860  if (strcmp(s, "L") == 0) {
861  return 2;
862  }
863 
864  if (strcmp(s, "LPrime") == 0) {
865  return 3;
866  }
867 
868  size_t l = STRLENOF("constitutiveLaw.");
869  if (strncmp(s, "constitutiveLaw.", l) == 0) {
870  return 3 + ConstitutiveLaw1DOwner::iGetPrivDataIdx(&s[l]);
871  }
872 
873  /* error; handle later */
874  return 0;
875 }
virtual unsigned int iGetPrivDataIdx(const char *s) const
Definition: constltp.h:361
#define ASSERT(expression)
Definition: colamd.c:977
#define STRLENOF(s)
Definition: mbdyn.h:166

Here is the call graph for this function:

VariableSubMatrixHandler & RodBezier::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 470 of file rodbezj.cc.

References FullSubMatrixHandler::Add(), Ap1(), Ap2(), Ap3(), Ap4(), Vec3::Cross(), DEBUGCOUT, PntWght::dGetPnt(), dL0, fA, fB, GaussDataIterator::fGetNext(), fI, fO, gdi, ConstitutiveLawOwner< T, Tder >::GetF(), ConstitutiveLawOwner< T, Tder >::GetFDE(), ConstitutiveLawOwner< T, Tder >::GetFDEPrime(), GaussDataIterator::GetFirst(), StructNode::GetRRef(), StructNode::GetWRef(), StructDispNode::GetXCurr(), StructDispNode::iGetFirstPositionIndex(), iIntSeg, InitialWorkSpaceDim(), l1, l2, MatCross, MatCrossCross, Vec3::Norm(), pNode1, pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), FullSubMatrixHandler::Sub(), Vec3::Tens(), and Zero3.

472 {
473  DEBUGCOUT("Entering RodBezier::InitialAssJac()" << std::endl);
474 
475  FullSubMatrixHandler& WM = WorkMat.SetFull();
476 
477  /* Dimensiona e resetta la matrice di lavoro */
478  integer iNumRows = 0;
479  integer iNumCols = 0;
480  InitialWorkSpaceDim(&iNumRows, &iNumCols);
481  WM.ResizeReset(iNumRows, iNumCols);
482 
483  /* Recupera gli indici */
484  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
485  integer iNode1FirstVelIndex = iNode1FirstPosIndex + 6;
486  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
487  integer iNode2FirstVelIndex = iNode2FirstPosIndex + 6;
488 
489  /* Setta gli indici della matrice */
490  for (int iCnt = 1; iCnt <= 6; iCnt++) {
491  WM.PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
492  WM.PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
493  WM.PutColIndex(6 + iCnt, iNode1FirstVelIndex + iCnt);
494 
495  WM.PutRowIndex(6 + iCnt, iNode2FirstPosIndex + iCnt);
496  WM.PutColIndex(12 + iCnt, iNode2FirstPosIndex + iCnt);
497  WM.PutColIndex(18 + iCnt, iNode2FirstVelIndex + iCnt);
498  }
499 
500  const Mat3x3& R1(pNode1->GetRRef());
501  const Mat3x3& R2(pNode2->GetRRef());
502  const Vec3 fOTmp(R1*fO);
503  const Vec3 fATmp(R1*fA);
504  const Vec3 fBTmp(R2*fB);
505  const Vec3 fITmp(R2*fI);
506 
507  const Vec3& x1(pNode1->GetXCurr());
508  const Vec3& x2(pNode2->GetXCurr());
509 
510  //const Vec3& v1(pNode1->GetVCurr());
511  //const Vec3& v2(pNode2->GetVCurr());
512  const Vec3& Omega1(pNode1->GetWRef());
513  const Vec3& Omega2(pNode2->GetWRef());
514 
515  /* Forza e slopes */
516  doublereal dF = GetF();
517  doublereal dFDE = GetFDE();
518  doublereal dFDEPrime = GetFDEPrime();
519 
520  const Vec3 b1 = x1 + R1*fO;
521  const Vec3 b2 = x1 + R1*fA;
522  const Vec3 b3 = x2 + R2*fB;
523  const Vec3 b4 = x2 + R2*fI;
524 
525  Vec3 p;
526  doublereal q, up, pNorm, dKC, dAp1, dAp2, dAp3, dAp4;
527  doublereal s = 1.0/(2.0*iIntSeg);
528 
529  Vec3 kx1(Zero3);
530  Vec3 kg1(Zero3);
531  Vec3 kx2(Zero3);
532  Vec3 kg2(Zero3);
533 
534  Vec3 cg1(Zero3);
535  Vec3 cxp1(Zero3);
536  Vec3 com1(Zero3);
537  Vec3 cg2(Zero3);
538  Vec3 cxp2(Zero3);
539  Vec3 com2(Zero3);
540 
541  Vec3 TmpV;
542 
543  for (unsigned int jj = 0; jj < iIntSeg; jj++) {
544  q = s*(2*jj + 1);
545 
546  PntWght gp = gdi->GetFirst();
547  do {
548  up = s*gp.dGetPnt() + q;
549 
550  dAp1 = Ap1(up);
551  dAp2 = Ap2(up);
552  dAp3 = Ap3(up);
553  dAp4 = Ap4(up);
554 
555  p = b1*dAp1 + b2*dAp2 + b3*dAp3 + b4*dAp4;
556  pNorm = p.Norm();
557  dKC = (s*gp.dGetWght())/(2*dL0*pNorm);
558 
559  kx1 = kx1 + p*dFDE*dKC*(dAp1 + dAp2);
560 
561  TmpV = fOTmp*dAp1 + fATmp*dAp2;
562  kg1 = kg1 - TmpV.Cross(p)*dFDE*dKC;
563 
564  kx2 = kx2 + p*dFDE*dKC*(dAp3 + dAp4);
565 
566  TmpV = fBTmp*dAp3 + fITmp*dAp4;
567  kg2 = kg2 - TmpV.Cross(p)*dFDE*dKC;
568 
569  if (dFDEPrime != 0.) {
570  TmpV = Omega1.Cross(p);
571  cg1 = cg1 - TmpV.Cross(fATmp*dAp2 - fOTmp*dAp1)*dFDEPrime*dKC;
572 
573  cxp1 = cxp1 + p*dFDEPrime*dKC*(dAp1 + dAp2);
574 
575  com1 = com1 - p.Cross(fATmp*dAp2 - fOTmp*dAp1)*dFDEPrime*dKC;
576 
577  TmpV = Omega2.Cross(p);
578  cg2 = cg2 + TmpV.Cross(fITmp*dAp4 - fBTmp*dAp3)*dFDEPrime*dKC;
579 
580  cxp2 = cxp2 + p*dFDEPrime*dKC*(dAp3 + dAp4);
581 
582  com2 = com2 - p.Cross(fITmp*dAp4 - fBTmp*dAp3)*dFDEPrime*dKC;
583 
584  }
585 
586  } while (gdi->fGetNext(gp));
587  }
588 
589  /* Force on node 1 from dx1 */
590  Mat3x3 F1x1 = l1.Tens(kx1);
591  WM.Add(1, 1, F1x1);
592 
593  /* Force on node 1 from dg1 */
594  Vec3 Tmp1 = kg1;
595  if (dFDEPrime != 0.) {
596  Tmp1 += cg1;
597  }
598  Mat3x3 F1g1 = l1.Tens(Tmp1) - (Mat3x3(MatCross, l1) - Mat3x3(MatCross, l1)*l1.Tens())*dF;
599  WM.Add(1, 3 + 1, F1g1);
600 
601  /* Force on node 1 from dxp1 */
602  Mat3x3 F1xp1;
603  if (dFDEPrime != 0.) {
604  F1xp1 = l1.Tens(cxp1);
605  WM.Add(1, 6 + 1, F1xp1);
606  }
607 
608  /* Force on node 1 from dom1 */
609  Mat3x3 F1om1;
610  if (dFDEPrime != 0.) {
611  F1om1 = l1.Tens(com1);
612  WM.Add(1, 9 + 1, F1om1);
613  }
614 
615  /* Force on node 1 from dx2 */
616  Mat3x3 F1x2 = l1.Tens(kx2);
617  WM.Add(1, 12 + 1, F1x2);
618 
619  /* Force on node 1 from dg2 */
620  Vec3 Tmp2 = kg2;
621  if (dFDEPrime != 0.) {
622  Tmp2 += cg2;
623  }
624  Mat3x3 F1g2 = l1.Tens(Tmp2);
625  WM.Add(1, 15 + 1, F1g2);
626 
627  /* Force on node 1 from dxp2 */
628  Mat3x3 F1xp2;
629  if (dFDEPrime != 0.) {
630  F1xp2 = l1.Tens(cxp2);
631  WM.Add(1, 18 + 1, F1xp2);
632  }
633 
634  /* Force on node 1 from dom2 */
635  Mat3x3 F1om2;
636  if (dFDEPrime != 0.) {
637  F1om2 = l1.Tens(com2);
638  WM.Add(1, 21 + 1, F1om2);
639  }
640 
641  /* Moment on node 1 from dx1 */
642  Mat3x3 M1x1 = Mat3x3(MatCross, fOTmp)*F1x1;
643  WM.Sub(3 + 1, 1, M1x1);
644 
645  /* Moment on node 1 from dg1 */
646  Mat3x3 M1g1 = Mat3x3(MatCross, fOTmp)*F1g1 + Mat3x3(MatCrossCross, l1, fOTmp);
647  WM.Sub(3 + 1, 3 + 1, M1g1);
648 
649  /* Moment on node 1 from dxp1 */
650  if (dFDEPrime != 0.) {
651  Mat3x3 M1xp1 = Mat3x3(MatCross, fOTmp)*F1xp1;
652  WM.Sub(3 + 1, 6 + 1, M1xp1);
653  }
654 
655  /* Moment on node 1 from dom1 */
656  if (dFDEPrime != 0.) {
657  Mat3x3 M1om1 = Mat3x3(MatCross, fOTmp)*F1om1;
658  WM.Sub(3 + 1, 9 + 1, M1om1);
659  }
660 
661  /* Moment on node 1 from dx2 */
662  Mat3x3 M1x2 = Mat3x3(MatCross, fOTmp)*F1x2;
663  WM.Sub(3 + 1, 12 + 1, M1x2);
664 
665  /* Moment on node 1 from dg2 */
666  Mat3x3 M1g2 = Mat3x3(MatCross, fOTmp)*F1g2;
667  WM.Sub(3 + 1, 15 + 1, M1g2);
668 
669  /* Moment on node 1 from dxp2 */
670  if (dFDEPrime != 0.) {
671  Mat3x3 M1xp2 = Mat3x3(MatCross, fOTmp)*F1xp2;
672  WM.Sub(3 + 1, 18 + 1, M1xp2);
673  }
674 
675  /* Moment on node 1 from dom2 */
676  if (dFDEPrime != 0.) {
677  Mat3x3 M1om2 = Mat3x3(MatCross, fOTmp)*F1om2;
678  WM.Sub(3 + 1, 21 + 1, M1om2);
679  }
680 
681  /* Force on node 2 from dx1 */
682  Mat3x3 F2x1 = l2.Tens(kx1);
683  WM.Add(6 + 1, 1, F1x1);
684 
685  /* Force on node 2 from dg1 */
686  Tmp1 = kg1;
687  Mat3x3 F2g1 = l2.Tens(Tmp1);
688  WM.Add(6 + 1, 3 + 1, F2g1);
689 
690  /* Force on node 2 from dxp1 */
691  Mat3x3 F2xp1;
692  if (dFDEPrime != 0.) {
693  F2xp1 = l2.Tens(cxp1);
694  WM.Add(6 + 1, 6 + 1, F2xp1);
695  }
696 
697  /* Force on node 2 from dom1 */
698  Mat3x3 F2om1;
699  if (dFDEPrime != 0.) {
700  F2om1 = l2.Tens(com1);
701  WM.Add(6 + 1, 9 + 1, F2om1);
702  }
703 
704  /* Force on node 2 from dx2 */
705  Mat3x3 F2x2 = l2.Tens(kx2);
706  WM.Add(6 + 1, 12 + 1, F2x2);
707 
708  /* Force on node 2 from dg2 */
709 
710  Mat3x3 F2g2 = l2.Tens(Tmp2) - (Mat3x3(MatCross, l2) - Mat3x3(MatCross, l2)*l2.Tens())*dF;
711  WM.Add(6 + 1, 15 + 1, F2g2);
712 
713  /* Force on node 2 from dxp2 */
714  Mat3x3 F2xp2;
715  if (dFDEPrime != 0.) {
716  F2xp2 = l2.Tens(cxp2);
717  WM.Add(6 + 1, 18 + 1, F2xp2);
718  }
719 
720  /* Force on node 2 from dom2 */
721  Mat3x3 F2om2;
722  if (dFDEPrime != 0.) {
723  F2om2 = l2.Tens(com2);
724  WM.Add(6 + 1, 21 + 1, F2om2);
725  }
726 
727  /* Moment on node 2 from dx2 */
728  Mat3x3 M2x1 = Mat3x3(MatCross, fITmp)*F2x1;
729  WM.Sub(9 + 1, 1, M2x1);
730 
731  /* Moment on node 2 from dg1 */
732  Mat3x3 M2g1 = Mat3x3(MatCross, fITmp)*F2g1;
733  WM.Sub(9 + 1, 3 + 1, M1g1);
734 
735  /* Moment on node 2 from dxp1 */
736  if (dFDEPrime != 0.) {
737  Mat3x3 M2xp1 = Mat3x3(MatCross, fITmp)*F2xp1;
738  WM.Sub(9 + 1, 6 + 1, M2xp1);
739  }
740 
741  /* Moment on node 2 from dom1 */
742  if (dFDEPrime != 0.) {
743  Mat3x3 M2om1 = Mat3x3(MatCross, fITmp)*F2om1;
744  WM.Sub(9 + 1, 9 + 1, M2om1);
745  }
746 
747  /* Moment on node 2 from dx2 */
748  Mat3x3 M2x2 = Mat3x3(MatCross, fITmp)*F2x2;
749  WM.Sub(9 + 1, 12 + 1, M2x2);
750 
751  /* Moment on node 2 from dg2 */
752  Mat3x3 M2g2 = Mat3x3(MatCross, fITmp)*F2g2 + Mat3x3(MatCrossCross, l2, fITmp);
753  WM.Sub(9 + 1, 15 + 1, M2g2);
754 
755  /* Moment on node 2 from dxp2 */
756  if (dFDEPrime != 0.) {
757  Mat3x3 M2xp2 = Mat3x3(MatCross, fITmp)*F2xp2;
758  WM.Sub(9 + 1, 18 + 1, M2xp2);
759  }
760 
761  /* Moment on node 2 from dom2 */
762  if (dFDEPrime != 0.) {
763  Mat3x3 M2om2 = Mat3x3(MatCross, fITmp)*F2om2;
764  WM.Sub(9 + 1, 21 + 1, M2om2);
765  }
766 
767  return WorkMat;
768 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
const Vec3 fI
Definition: rodbezj.h:56
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Definition: matvec3.h:98
Vec3 l2
Definition: rodbezj.h:60
const MatCross_Manip MatCross
Definition: matvec3.cc:639
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
doublereal Norm(void) const
Definition: matvec3.h:263
const Vec3 fB
Definition: rodbezj.h:55
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
flag fGetNext(doublereal &d, integer i=0) const
Definition: gauss.cc:205
PntWght GetFirst(void) const
Definition: gauss.cc:198
const Tder & GetFDE(void) const
Definition: constltp.h:298
doublereal Ap2(doublereal u)
Definition: rodbezj.h:182
virtual const Vec3 & GetWRef(void) const
Definition: strnode.h:1024
GaussDataIterator * gdi
Definition: rodbezj.h:68
unsigned int iIntSeg
Definition: rodbezj.h:66
const Vec3 fA
Definition: rodbezj.h:54
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodbezj.h:126
#define DEBUGCOUT(msg)
Definition: myassert.h:232
Vec3 l1
Definition: rodbezj.h:59
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
doublereal Ap4(doublereal u)
Definition: rodbezj.h:184
Mat3x3 Tens(const Vec3 &v) const
Definition: matvec3.cc:53
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const StructNode * pNode1
Definition: rodbezj.h:51
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
doublereal dGetPnt(void) const
Definition: gauss.h:55
doublereal Ap3(doublereal u)
Definition: rodbezj.h:183
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const T & GetF(void) const
Definition: constltp.h:293
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
const Vec3 fO
Definition: rodbezj.h:53
double doublereal
Definition: colamd.c:52
const Tder & GetFDEPrime(void) const
Definition: constltp.h:303
long int integer
Definition: colamd.c:51
const StructNode * pNode2
Definition: rodbezj.h:52
doublereal dL0
Definition: rodbezj.h:57
doublereal Ap1(doublereal u)
Definition: rodbezj.h:181
Definition: gauss.h:50

Here is the call graph for this function:

SubVectorHandler & RodBezier::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 772 of file rodbezj.cc.

References AssVec(), DEBUGCOUT, StructDispNode::iGetFirstPositionIndex(), InitialWorkSpaceDim(), pNode1, pNode2, SubVectorHandler::PutRowIndex(), and VectorHandler::ResizeReset().

774 {
775  DEBUGCOUT("RodBezier::InitialAssRes()" << std::endl);
776 
777  /* Dimensiona e resetta la matrice di lavoro */
778  integer iNumRows = 0;
779  integer iNumCols = 0;
780  InitialWorkSpaceDim(&iNumRows, &iNumCols);
781  WorkVec.ResizeReset(iNumRows);
782 
783  /* Indici */
784  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
785  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
786 
787  /* Setta gli indici */
788  for (int iCnt = 1; iCnt <= 6; iCnt++) {
789  WorkVec.PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
790  WorkVec.PutRowIndex(6 + iCnt, iNode2FirstPosIndex + iCnt);
791  }
792 
793  AssVec(WorkVec);
794 
795  return WorkVec;
796 }
void AssVec(SubVectorHandler &WorkVec)
Definition: rodbezj.cc:361
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodbezj.h:126
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
const StructNode * pNode1
Definition: rodbezj.h:51
long int integer
Definition: colamd.c:51
const StructNode * pNode2
Definition: rodbezj.h:52

Here is the call graph for this function:

virtual void RodBezier::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 126 of file rodbezj.h.

Referenced by InitialAssJac(), and InitialAssRes().

126  {
127  *piNumRows = 12;
128  *piNumCols = 24;
129  };
void RodBezier::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 452 of file rodbezj.cc.

References ASSERT, ToBeOutput::bToBeOutput(), dElle, dEpsilonPrime, dL0, ConstitutiveLawOwner< T, Tder >::GetF(), WithLabel::GetLabel(), OutputHandler::Joints(), l1, l2, Joint::Output(), ConstitutiveLawOwner< T, Tder >::OutputAppend(), and Zero3.

453 {
454  if (bToBeOutput()) {
455  ASSERT(dElle > std::numeric_limits<doublereal>::epsilon());
456  doublereal dF = GetF();
457 
458  std::ostream& out = OH.Joints();
459 
460  Joint::Output(out, "RodBezier", GetLabel(),
461  Vec3(dF, 0., 0.), Zero3, l1*dF, Zero3)
462  << " " << l2*dF << " " << dElle << " " << l1 << " "
463  << " " << l2 << " " << " " << dEpsilonPrime*dL0,
464  ConstitutiveLaw1DOwner::OutputAppend(out) << std::endl;
465  }
466 }
const Vec3 Zero3(0., 0., 0.)
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
Vec3 l2
Definition: rodbezj.h:60
virtual std::ostream & OutputAppend(std::ostream &out) const
Definition: constltp.h:373
Vec3 l1
Definition: rodbezj.h:59
std::ostream & Joints(void) const
Definition: output.h:443
#define ASSERT(expression)
Definition: colamd.c:977
doublereal dElle
Definition: rodbezj.h:61
const T & GetF(void) const
Definition: constltp.h:293
double doublereal
Definition: colamd.c:52
std::ostream & Output(std::ostream &out, const char *sJointName, unsigned int uLabel, const Vec3 &FLocal, const Vec3 &MLocal, const Vec3 &FGlobal, const Vec3 &MGlobal) const
Definition: joint.cc:138
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dL0
Definition: rodbezj.h:57
doublereal dEpsilonPrime
Definition: rodbezj.h:63

Here is the call graph for this function:

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

Implements Elem.

Definition at line 137 of file rodbezj.cc.

References dL0, fA, fO, WithLabel::GetLabel(), iIntOrd, iIntSeg, ConstitutiveLawOwner< T, Tder >::pGetConstLaw(), pNode1, pNode2, Joint::Restart(), and Vec3::Write().

138 {
139  Joint::Restart(out);
140  out << ", rod bezier, "
141  << pNode1->GetLabel() << ", "
142  << "position, reference, node, ";
143  fO.Write(out, ", ") << ", "
144  << "position, reference, node, "; fA.Write(out, ", ") << "," << std::endl
145  << pNode2->GetLabel() << ", "
146  << "position, reference, node, "; fO.Write(out, ", ") << ", "
147  << "position, reference, node, "; fA.Write(out, ", ") << "," << std::endl
148  << dL0 << "," << std::endl
149  << "integration order, " << iIntOrd << ", "
150  << "integration segments, " << iIntSeg << ", ";
151  return pGetConstLaw()->Restart(out) << ';' << std::endl;
152 }
std::ostream & Write(std::ostream &out, const char *sFill=" ") const
Definition: matvec3.cc:738
ConstitutiveLaw< T, Tder > * pGetConstLaw(void) const
Definition: constltp.h:278
unsigned int iIntOrd
Definition: rodbezj.h:65
unsigned int iIntSeg
Definition: rodbezj.h:66
const Vec3 fA
Definition: rodbezj.h:54
virtual std::ostream & Restart(std::ostream &out) const
Definition: joint.h:195
const StructNode * pNode1
Definition: rodbezj.h:51
const Vec3 fO
Definition: rodbezj.h:53
unsigned int GetLabel(void) const
Definition: withlab.cc:62
const StructNode * pNode2
Definition: rodbezj.h:52
doublereal dL0
Definition: rodbezj.h:57

Here is the call graph for this function:

void RodBezier::Update ( const VectorHandler XCurr,
InverseDynamics::Order  iOrder = InverseDynamics::INVERSE_DYNAMICS 
)
virtual

Reimplemented from Joint.

Definition at line 832 of file rodbezj.cc.

References NO_OP.

833 {
834  NO_OP;
835 }
#define NO_OP
Definition: myassert.h:74
virtual void RodBezier::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 100 of file rodbezj.h.

Referenced by AssJac(), and AssRes().

100  {
101  *piNumRows = 12;
102  *piNumCols = 12;
103  };

Member Data Documentation

doublereal RodBezier::dElle
protected

Definition at line 61 of file rodbezj.h.

Referenced by AssVec(), dGetPrivData(), and Output().

doublereal RodBezier::dEpsilon
protected

Definition at line 62 of file rodbezj.h.

Referenced by AfterConvergence(), and AssVec().

doublereal RodBezier::dEpsilonPrime
protected

Definition at line 63 of file rodbezj.h.

Referenced by AfterConvergence(), AssVec(), dGetPrivData(), and Output().

doublereal RodBezier::dL0
protected

Definition at line 57 of file rodbezj.h.

Referenced by AssJac(), AssVec(), dGetPrivData(), InitialAssJac(), Output(), Restart(), and RodBezier().

const Vec3 RodBezier::fA
protected

Definition at line 54 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), Restart(), and RodBezier().

const Vec3 RodBezier::fB
protected

Definition at line 55 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

const Vec3 RodBezier::fI
protected

Definition at line 56 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

const Vec3 RodBezier::fO
protected

Definition at line 53 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), Restart(), and RodBezier().

GaussDataIterator* RodBezier::gdi
protected

Definition at line 68 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and RodBezier().

unsigned int RodBezier::iIntOrd
protected

Definition at line 65 of file rodbezj.h.

Referenced by Restart().

unsigned int RodBezier::iIntSeg
protected

Definition at line 66 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), and Restart().

Vec3 RodBezier::l1
protected

Definition at line 59 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), Output(), and RodBezier().

Vec3 RodBezier::l2
protected

Definition at line 60 of file rodbezj.h.

Referenced by AssJac(), AssVec(), InitialAssJac(), Output(), and RodBezier().

const StructNode* RodBezier::pNode1
protected

Definition at line 51 of file rodbezj.h.

Referenced by AssJac(), AssRes(), AssVec(), GetConnectedNodes(), InitialAssJac(), InitialAssRes(), and Restart().

const StructNode* RodBezier::pNode2
protected

Definition at line 52 of file rodbezj.h.

Referenced by AssJac(), AssRes(), AssVec(), GetConnectedNodes(), InitialAssJac(), InitialAssRes(), and Restart().


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