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

#include <rodj.h>

Inheritance diagram for Rod:
Collaboration diagram for Rod:

Public Member Functions

 Rod (unsigned int uL, const DofOwner *pDO, const ConstitutiveLaw1D *pCL, const StructDispNode *pN1, const StructDispNode *pN2, doublereal dLength, flag fOut, bool bHasOffsets=0)
 
virtual ~Rod (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 void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual 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)
 
virtual 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
 
virtual 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
 
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 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 Member Functions

virtual doublereal dCalcEpsilon (void)
 
void AssMat (FullSubMatrixHandler &WorkMat, doublereal dCoef=1.)
 
void AssVec (SubVectorHandler &WorkVec)
 
- 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
 

Protected Attributes

const StructDispNodepNode1
 
const StructDispNodepNode2
 
doublereal dL0
 
Vec3 v
 
doublereal dElle
 
doublereal dEpsilon
 
doublereal dEpsilonPrime
 
- 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
 

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
}
 

Detailed Description

Definition at line 45 of file rodj.h.

Constructor & Destructor Documentation

Rod::Rod ( unsigned int  uL,
const DofOwner pDO,
const ConstitutiveLaw1D pCL,
const StructDispNode pN1,
const StructDispNode pN2,
doublereal  dLength,
flag  fOut,
bool  bHasOffsets = 0 
)

Definition at line 46 of file rodj.cc.

References ASSERT, dElle, Vec3::Dot(), WithLabel::GetLabel(), StructDispNode::GetNodeType(), StructDispNode::GetXCurr(), MBDYN_EXCEPT_ARGS, pNode1, pNode2, grad::sqrt(), Node::STRUCTURAL, and v.

50 : Elem(uL, fOut),
51 Joint(uL, pDO, fOut),
53 pNode1(pN1),
54 pNode2(pN2),
55 dL0(dLength),
56 v(Zero3),
57 dElle(0.),
58 dEpsilon(0.),
59 dEpsilonPrime(0.)
60 #ifdef USE_NETCDF
61 ,
62 Var_v(0),
63 Var_dElle(0),
64 Var_dEllePrime(0)
65 #endif // USE_NETCDF
66 {
67  /* Verifica di consistenza dei dati iniziali */
68  ASSERT(pNode1 != 0);
70  ASSERT(pNode2 != 0);
72 
73  if (!bHasOffsets) {
74  v = pNode2->GetXCurr() - pNode1->GetXCurr();
75 
76  doublereal dDot = v.Dot();
77  if (dDot <= std::numeric_limits<doublereal>::epsilon()) {
78  silent_cerr("Rod(" << GetLabel() << "): "
79  "initial length must be non-null" << std::endl);
81  }
82 
83  dElle = std::sqrt(dDot);
84  }
85 
86  ASSERT(dLength > std::numeric_limits<doublereal>::epsilon());
87 }
const Vec3 Zero3(0., 0., 0.)
doublereal dEpsilonPrime
Definition: rodj.h:56
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual Node::Type GetNodeType(void) const
Definition: strnode.cc:145
doublereal Dot(const Vec3 &v) const
Definition: matvec3.h:243
doublereal dElle
Definition: rodj.h:53
Joint(unsigned int uL, const DofOwner *pD, flag fOut)
Definition: joint.cc:83
doublereal dL0
Definition: rodj.h:50
const StructDispNode * pNode2
Definition: rodj.h:49
ConstitutiveLawOwner< doublereal, doublereal > ConstitutiveLaw1DOwner
Definition: constltp.h:378
doublereal dEpsilon
Definition: rodj.h:55
Vec3 v
Definition: rodj.h:52
#define ASSERT(expression)
Definition: colamd.c:977
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const StructDispNode * pNode1
Definition: rodj.h:48
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
double doublereal
Definition: colamd.c:52
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

Rod::~Rod ( void  )
virtual

Definition at line 90 of file rodj.cc.

References NO_OP.

91 {
92  NO_OP;
93 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Reimplemented from SimulationEntity.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 104 of file rodj.cc.

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

Referenced by AfterConvergence().

105 {
107 }
doublereal dEpsilon
Definition: rodj.h:55
void AfterConvergence(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:288

Here is the call graph for this function:

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

Reimplemented from SimulationEntity.

Definition at line 459 of file rodj.cc.

References AfterConvergence().

461 {
462  AfterConvergence(X, XP);
463 }
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: rodj.cc:104

Here is the call graph for this function:

VariableSubMatrixHandler & Rod::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 199 of file rodj.cc.

References AssMat(), DEBUGCOUT, StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), pNode1, pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), and WorkSpaceDim().

Referenced by AssJac().

203 {
204  DEBUGCOUT("Entering Rod::AssJac()" << std::endl);
205 
206  FullSubMatrixHandler& WM = WorkMat.SetFull();
207 
208  /* Dimensiona e resetta la matrice di lavoro */
209  integer iNumRows = 0;
210  integer iNumCols = 0;
211  WorkSpaceDim(&iNumRows, &iNumCols);
212  WM.ResizeReset(iNumRows, iNumCols);
213 
214  /* Recupera gli indici */
215  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
216  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
217  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
218  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
219 
220  /* Setta gli indici della matrice */
221  for (int iCnt = 1; iCnt <= 3; iCnt++) {
222  WM.PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
223  WM.PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
224  WM.PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
225  WM.PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
226  }
227 
228  /* Genera la matrice */
229  AssMat(WM, dCoef);
230 
231  return WorkMat;
232 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
void AssMat(FullSubMatrixHandler &WorkMat, doublereal dCoef=1.)
Definition: rodj.cc:121
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodj.h:103
const StructDispNode * pNode2
Definition: rodj.h:49
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const StructDispNode * pNode1
Definition: rodj.h:48
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 426 of file rodj.cc.

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

428 {
429  ASSERT(bIsErgonomy());
430 
431  return AssJac(WorkMat, 1., XCurr, XCurr);
432 }
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: rodj.cc:199

Here is the call graph for this function:

void Rod::AssMat ( FullSubMatrixHandler WorkMat,
doublereal  dCoef = 1. 
)
protected

Definition at line 121 of file rodj.cc.

References FullSubMatrixHandler::Add(), dElle, dL0, Vec3::Dot(), ConstitutiveLawOwner< T, Tder >::GetF(), ConstitutiveLawOwner< T, Tder >::GetFDE(), WithLabel::GetLabel(), MatCrossCross, MBDYN_EXCEPT_ARGS, pNode1, pNode2, grad::sqrt(), FullSubMatrixHandler::Sub(), Vec3::Tens(), and v.

Referenced by AssJac(), AssMats(), and InitialAssJac().

122 {
123  /* v = x2-x1 */
124  /* v = pNode2->GetXCurr()-pNode1->GetXCurr(); */
125  doublereal dCross = v.Dot();
126 
127  /* Verifica che la distanza non sia nulla */
128  if (dCross <= std::numeric_limits<doublereal>::epsilon()) {
129  silent_cerr("Rod(" << GetLabel() << "): "
130  "null distance between nodes " << pNode1->GetLabel()
131  << " and " << pNode2->GetLabel() << std::endl);
133  }
134 
135  /* Lunghezza corrente */
136  dElle = std::sqrt(dCross);
137 
138  /* Forza e slope */
139  doublereal dF = GetF();
140  doublereal dFDE = GetFDE();
141 
142  Mat3x3 K(Mat3x3(MatCrossCross, v, v*((-dF*dCoef)/(dElle*dCross)))
143  +v.Tens(v*((dFDE*dCoef)/(dL0*dCross))));
144 
145  /* Termini diagonali */
146  WorkMat.Add(1, 1, K);
147  WorkMat.Add(4, 4, K);
148 
149  /* termini extradiagonali */
150  WorkMat.Sub(1, 4, K);
151  WorkMat.Sub(4, 1, K);
152 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
doublereal Dot(const Vec3 &v) const
Definition: matvec3.h:243
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
doublereal dElle
Definition: rodj.h:53
const Tder & GetFDE(void) const
Definition: constltp.h:298
doublereal dL0
Definition: rodj.h:50
const StructDispNode * pNode2
Definition: rodj.h:49
Vec3 v
Definition: rodj.h:52
Mat3x3 Tens(const Vec3 &v) const
Definition: matvec3.cc:53
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
const T & GetF(void) const
Definition: constltp.h:293
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
const StructDispNode * pNode1
Definition: rodj.h:48
double doublereal
Definition: colamd.c:52
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

void Rod::AssMats ( VariableSubMatrixHandler WorkMatA,
VariableSubMatrixHandler WorkMatB,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Reimplemented from Elem.

Definition at line 235 of file rodj.cc.

References AssMat(), DEBUGCOUT, StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), pNode1, pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), VariableSubMatrixHandler::SetNullMatrix(), and WorkSpaceDim().

239 {
240  DEBUGCOUT("Entering Rod::AssMats()" << std::endl);
241 
242  WorkMatB.SetNullMatrix();
243  FullSubMatrixHandler& WMA = WorkMatA.SetFull();
244 
245  /* Dimensiona e resetta la matrice di lavoro */
246  integer iNumRows = 0;
247  integer iNumCols = 0;
248  WorkSpaceDim(&iNumRows, &iNumCols);
249  WMA.ResizeReset(iNumRows, iNumCols);
250 
251  /* Recupera gli indici */
252  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
253  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
254  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
255  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
256 
257  /* Setta gli indici della matrice */
258  for (int iCnt = 1; iCnt <= 3; iCnt++) {
259  WMA.PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
260  WMA.PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
261  WMA.PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
262  WMA.PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
263  }
264 
265  /* Genera la matrice */
266  AssMat(WMA, 1.);
267 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
void AssMat(FullSubMatrixHandler &WorkMat, doublereal dCoef=1.)
Definition: rodj.cc:121
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodj.h:103
const StructDispNode * pNode2
Definition: rodj.h:49
void SetNullMatrix(void)
Definition: submat.h:1159
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const StructDispNode * pNode1
Definition: rodj.h:48
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements Elem.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 270 of file rodj.cc.

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

Referenced by AssRes().

274 {
275  DEBUGCOUT("Entering Rod::AssRes()" << std::endl);
276 
277  /* Dimensiona e resetta la matrice di lavoro */
278  integer iNumRows = 0;
279  integer iNumCols = 0;
280  WorkSpaceDim(&iNumRows, &iNumCols);
281  WorkVec.ResizeReset(iNumRows);
282 
283  /* Indici */
284  integer iNode1FirstMomIndex = pNode1->iGetFirstMomentumIndex();
285  integer iNode2FirstMomIndex = pNode2->iGetFirstMomentumIndex();
286 
287  /* Setta gli indici */
288  for (int iCnt = 1; iCnt <= 3; iCnt++) {
289  WorkVec.PutRowIndex(iCnt, iNode1FirstMomIndex + iCnt);
290  WorkVec.PutRowIndex(3 + iCnt, iNode2FirstMomIndex + iCnt);
291  }
292 
293  /* Costruisce il vettore */
294  AssVec(WorkVec);
295 
296  return WorkVec;
297 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
void AssVec(SubVectorHandler &WorkVec)
Definition: rodj.cc:155
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodj.h:103
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
const StructDispNode * pNode2
Definition: rodj.h:49
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstMomentumIndex(void) const =0
const StructDispNode * pNode1
Definition: rodj.h:48
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

SubVectorHandler & Rod::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 436 of file rodj.cc.

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

441 {
442  DEBUGCOUT("Entering Rod::AssRes()" << std::endl);
443 
445  || (iOrder == InverseDynamics::POSITION && bIsErgonomy()));
446 
447  return AssRes(WorkVec, 1., XCurr, XPrimeCurr);
448 }
bool bIsErgonomy(void) const
Definition: elem.cc:83
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: rodj.cc:270
#define DEBUGCOUT(msg)
Definition: myassert.h:232
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

void Rod::AssVec ( SubVectorHandler WorkVec)
protected

Definition at line 155 of file rodj.cc.

References VectorHandler::Add(), dCalcEpsilon(), dElle, dEpsilon, dEpsilonPrime, dL0, Vec3::Dot(), ConstitutiveLawOwner< T, Tder >::GetF(), WithLabel::GetLabel(), StructDispNode::GetVCurr(), StructDispNode::GetXCurr(), MBDYN_EXCEPT_ARGS, pNode1, pNode2, grad::sqrt(), VectorHandler::Sub(), ConstitutiveLawOwner< T, Tder >::Update(), and v.

Referenced by AssRes(), and InitialAssRes().

156 {
157  /* v = x2-x1 */
158  v = pNode2->GetXCurr() - pNode1->GetXCurr();
159  doublereal dCross = v.Dot();
160 
161  /* Verifica che la distanza non sia nulla */
162  if (dCross <= std::numeric_limits<doublereal>::epsilon()) {
163  silent_cerr("Rod(" << GetLabel() << "): "
164  "null distance between nodes " << pNode1->GetLabel()
165  << " and " << pNode2->GetLabel() << std::endl);
167  }
168 
169  /* Deformazione */
170  dElle = sqrt(dCross);
172 
173  Vec3 vPrime(pNode2->GetVCurr() - pNode1->GetVCurr());
174  dEpsilonPrime = v.Dot(vPrime)/(dElle*dL0);
175 
176  /* Ampiezza della forza */
177  bool ChangeJac(false);
178  try {
180 
182  ChangeJac = true;
183  }
184 
185  doublereal dF = GetF();
186 
187  /* Vettore forza */
188  Vec3 F = v*(dF/dElle);
189 
190  WorkVec.Add(1, F);
191  WorkVec.Sub(4, F);
192 
193  if (ChangeJac) {
195  }
196 }
virtual doublereal dCalcEpsilon(void)
Definition: rodj.cc:97
doublereal dEpsilonPrime
Definition: rodj.h:56
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
doublereal Dot(const Vec3 &v) const
Definition: matvec3.h:243
doublereal dElle
Definition: rodj.h:53
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
doublereal dL0
Definition: rodj.h:50
const StructDispNode * pNode2
Definition: rodj.h:49
doublereal dEpsilon
Definition: rodj.h:55
Vec3 v
Definition: rodj.h:52
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
const T & GetF(void) const
Definition: constltp.h:293
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
const StructDispNode * pNode1
Definition: rodj.h:48
double doublereal
Definition: colamd.c:52
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:283
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

bool Rod::bInverseDynamics ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 418 of file rodj.cc.

419 {
420  return true;
421 }
doublereal Rod::dCalcEpsilon ( void  )
protectedvirtual

Definition at line 97 of file rodj.cc.

References dElle, and dL0.

Referenced by ViscoElasticRod::AssRes(), AssVec(), RodWithOffset::AssVec(), and ViscoElasticRod::InitialAssRes().

98 {
99  return dElle/dL0 - 1.;
100 }
doublereal dElle
Definition: rodj.h:53
doublereal dL0
Definition: rodj.h:50
doublereal Rod::dGetPrivData ( unsigned int  i) const
virtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 499 of file rodj.cc.

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

500 {
501  ASSERT(i > 0);
502 
503  switch (i) {
504  case 1:
505  return GetF();
506 
507  case 2:
508  return dElle;
509 
510  case 3:
511  return dL0*dEpsilonPrime;
512  }
513 
514  i -= 3;
516 
518 }
doublereal dEpsilonPrime
Definition: rodj.h:56
doublereal dElle
Definition: rodj.h:53
virtual unsigned int iGetNumPrivData(void) const
Definition: constltp.h:352
doublereal dL0
Definition: rodj.h:50
#define ASSERT(expression)
Definition: colamd.c:977
virtual doublereal dGetPrivData(unsigned int i) const
Definition: constltp.h:369
const T & GetF(void) const
Definition: constltp.h:293

Here is the call graph for this function:

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

Reimplemented from Elem.

Definition at line 189 of file rodj.h.

References pNode1, and pNode2.

189  {
190  connectedNodes.resize(2);
191  connectedNodes[0] = pNode1;
192  connectedNodes[1] = pNode2;
193  };
const StructDispNode * pNode2
Definition: rodj.h:49
const StructDispNode * pNode1
Definition: rodj.h:48
virtual Joint::Type Rod::GetJointType ( void  ) const
inlinevirtual

Implements Joint.

Definition at line 88 of file rodj.h.

References Joint::ROD.

88  {
89  return Joint::ROD;
90  };
virtual unsigned int Rod::iGetInitialNumDof ( void  ) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 140 of file rodj.h.

140  {
141  return 0;
142  };
virtual unsigned int Rod::iGetNumDof ( void  ) const
inlinevirtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 98 of file rodj.h.

98  {
99  return 0;
100  };
unsigned int Rod::iGetNumPrivData ( void  ) const
virtual

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 467 of file rodj.cc.

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

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

Here is the call graph for this function:

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

Reimplemented from ConstitutiveLawOwner< T, Tder >.

Definition at line 473 of file rodj.cc.

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

474 {
475  ASSERT(s != NULL);
476 
477  if (strcmp(s, "F") == 0) {
478  return 1;
479  }
480 
481  if (strcmp(s, "L") == 0) {
482  return 2;
483  }
484 
485  if (strcmp(s, "LPrime") == 0) {
486  return 3;
487  }
488 
489  size_t l = STRLENOF("constitutiveLaw.");
490  if (strncmp(s, "constitutiveLaw.", l) == 0) {
491  return 3 + ConstitutiveLaw1DOwner::iGetPrivDataIdx(&s[l]);
492  }
493 
494  /* error; handle later */
495  return 0;
496 }
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 & Rod::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 357 of file rodj.cc.

References AssMat(), DEBUGCOUT, StructDispNode::iGetFirstPositionIndex(), InitialWorkSpaceDim(), pNode1, pNode2, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), and VariableSubMatrixHandler::SetFull().

359 {
360  DEBUGCOUT("Entering Rod::InitialAssJac()" << std::endl);
361 
362  FullSubMatrixHandler& WM = WorkMat.SetFull();
363 
364  /* Dimensiona e resetta la matrice di lavoro */
365  integer iNumRows = 0;
366  integer iNumCols = 0;
367  InitialWorkSpaceDim(&iNumRows, &iNumCols);
368  WM.ResizeReset(iNumRows, iNumCols);
369 
370  /* Recupera gli indici */
371  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
372  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
373 
374  /* Setta gli indici della matrice */
375  for (int iCnt = 1; iCnt <= 3; iCnt++) {
376  WM.PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
377  WM.PutColIndex(iCnt, iNode1FirstPosIndex + iCnt);
378  WM.PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
379  WM.PutColIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
380  }
381 
382  /* Genera la matrice */
383  AssMat(WM);
384 
385  return WorkMat;
386 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
void AssMat(FullSubMatrixHandler &WorkMat, doublereal dCoef=1.)
Definition: rodj.cc:121
const StructDispNode * pNode2
Definition: rodj.h:49
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodj.h:144
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
const StructDispNode * pNode1
Definition: rodj.h:48
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 389 of file rodj.cc.

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

391 {
392  DEBUGCOUT("Entering Rod::InitialAssRes()" << std::endl);
393 
394  /* Dimensiona e resetta la matrice di lavoro */
395  integer iNumRows = 0;
396  integer iNumCols = 0;
397  InitialWorkSpaceDim(&iNumRows, &iNumCols);
398  WorkVec.ResizeReset(iNumRows);
399 
400  /* Indici */
401  integer iNode1FirstPosIndex = pNode1->iGetFirstPositionIndex();
402  integer iNode2FirstPosIndex = pNode2->iGetFirstPositionIndex();
403 
404  /* Setta gli indici */
405  for (int iCnt = 1; iCnt <= 3; iCnt++) {
406  WorkVec.PutRowIndex(iCnt, iNode1FirstPosIndex + iCnt);
407  WorkVec.PutRowIndex(3 + iCnt, iNode2FirstPosIndex + iCnt);
408  }
409 
410  /* Costruisce il vettore */
411  AssVec(WorkVec);
412 
413  return WorkVec;
414 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
void AssVec(SubVectorHandler &WorkVec)
Definition: rodj.cc:155
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
const StructDispNode * pNode2
Definition: rodj.h:49
#define DEBUGCOUT(msg)
Definition: myassert.h:232
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void InitialWorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: rodj.h:144
const StructDispNode * pNode1
Definition: rodj.h:48
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Reimplemented in RodWithOffset, and ViscoElasticRod.

Definition at line 144 of file rodj.h.

Referenced by InitialAssJac(), and InitialAssRes().

144  {
145  *piNumRows = 6;
146  *piNumCols = 6;
147  };
void Rod::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 320 of file rodj.cc.

References ASSERT, ToBeOutput::bToBeOutput(), dElle, dEpsilonPrime, dL0, OutputHandler::GetCurrentStep(), ConstitutiveLawOwner< T, Tder >::GetF(), WithLabel::GetLabel(), OutputHandler::JOINTS, OutputHandler::Joints(), Joint::Output(), ConstitutiveLawOwner< T, Tder >::OutputAppend(), Vec3::pGetVec(), OutputHandler::UseNetCDF(), v, and Zero3.

321 {
322  if (bToBeOutput()) {
323  ASSERT(dElle > std::numeric_limits<doublereal>::epsilon());
324 
325 
326  Vec3 vTmp(v/dElle);
327  doublereal d = GetF();
328  doublereal dEllePrime = dEpsilonPrime*dL0;
329 
330 #ifdef USE_NETCDF
332 
333  Vec3 F = Vec3(d, 0., 0.);
334  Vec3 M = Zero3;
335  Vec3 FTmp = vTmp*d;
336 
337  Var_F_local->put_rec(F.pGetVec(), OH.GetCurrentStep());
338  Var_M_local->put_rec(M.pGetVec(), OH.GetCurrentStep());
339  Var_F_global->put_rec(FTmp.pGetVec(), OH.GetCurrentStep());
340  Var_M_global->put_rec(M.pGetVec(), OH.GetCurrentStep());
341  Var_dElle->put_rec(&dElle, OH.GetCurrentStep());
342  Var_dEllePrime->put_rec(&dEllePrime, OH.GetCurrentStep());
343  Var_v->put_rec(vTmp.pGetVec(), OH.GetCurrentStep());
344  }
345 #endif // USE_NETCDF
346 
347  std::ostream& out = OH.Joints();
348 
349  Joint::Output(out, "Rod", GetLabel(),
350  Vec3(d, 0., 0.), Zero3, vTmp*d, Zero3)
351  << " " << dElle << " " << vTmp << " " << dEpsilonPrime*dL0,
352  ConstitutiveLaw1DOwner::OutputAppend(out) << std::endl;
353  }
354 }
const Vec3 Zero3(0., 0., 0.)
doublereal dEpsilonPrime
Definition: rodj.h:56
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
doublereal dElle
Definition: rodj.h:53
doublereal dL0
Definition: rodj.h:50
virtual std::ostream & OutputAppend(std::ostream &out) const
Definition: constltp.h:373
long GetCurrentStep(void) const
Definition: output.h:116
Vec3 v
Definition: rodj.h:52
std::ostream & Joints(void) const
Definition: output.h:443
#define ASSERT(expression)
Definition: colamd.c:977
const T & GetF(void) const
Definition: constltp.h:293
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
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

Here is the call graph for this function:

void Rod::OutputPrepare ( OutputHandler OH)
virtual

Reimplemented from ToBeOutput.

Definition at line 300 of file rodj.cc.

References ToBeOutput::bToBeOutput(), OutputHandler::JOINTS, Joint::OutputPrepare_int(), and OutputHandler::UseNetCDF().

301 {
302  if (bToBeOutput()) {
303 #ifdef USE_NETCDF
305  std::string name;
306  OutputPrepare_int("rod", OH, name);
307 
308  Var_dElle = OH.CreateVar<doublereal>(name + "l", "m",
309  "length of the element");
310  Var_dEllePrime = OH.CreateVar<doublereal>(name + "lP", "m/2",
311  "lengthening velocity of the element");
312  Var_v = OH.CreateVar<Vec3>(name + "v", "m",
313  "direction unit vector");
314  }
315 #endif // USE_NETCDF
316  }
317 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
Definition: matvec3.h:98
bool UseNetCDF(int out) const
Definition: output.cc:491
virtual void OutputPrepare_int(const std::string &type, OutputHandler &OH, std::string &name)
Definition: joint.cc:107
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

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

Implements Elem.

Reimplemented in RodWithOffset.

Definition at line 111 of file rodj.cc.

References dL0, WithLabel::GetLabel(), ConstitutiveLawOwner< T, Tder >::pGetConstLaw(), pNode1, pNode2, and Joint::Restart().

112 {
113  Joint::Restart(out) << ", rod, "
114  << pNode1->GetLabel() << ", "
115  << pNode2->GetLabel() << ", "
116  << dL0 << ", ";
117  return pGetConstLaw()->Restart(out) << ';' << std::endl;
118 }
ConstitutiveLaw< T, Tder > * pGetConstLaw(void) const
Definition: constltp.h:278
doublereal dL0
Definition: rodj.h:50
const StructDispNode * pNode2
Definition: rodj.h:49
virtual std::ostream & Restart(std::ostream &out) const
Definition: joint.h:195
const StructDispNode * pNode1
Definition: rodj.h:48
unsigned int GetLabel(void) const
Definition: withlab.cc:62

Here is the call graph for this function:

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

Reimplemented from Joint.

Definition at line 452 of file rodj.cc.

References NO_OP.

453 {
454  NO_OP;
455 }
#define NO_OP
Definition: myassert.h:74
virtual void Rod::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Reimplemented in RodWithOffset.

Definition at line 103 of file rodj.h.

Referenced by AssJac(), AssMats(), and AssRes().

103  {
104  *piNumRows = 6;
105  *piNumCols = 6;
106  };

Member Data Documentation


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