|
| Wheel2 (unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP) |
|
virtual | ~Wheel2 (void) |
|
virtual void | Output (OutputHandler &OH) const |
|
virtual void | WorkSpaceDim (integer *piNumRows, integer *piNumCols) const |
|
VariableSubMatrixHandler & | AssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr) |
|
SubVectorHandler & | AssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr) |
|
unsigned int | iGetNumPrivData (void) const |
|
int | iGetNumConnectedNodes (void) const |
|
void | GetConnectedNodes (std::vector< const Node * > &connectedNodes) const |
|
void | SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph) |
|
std::ostream & | Restart (std::ostream &out) const |
|
virtual unsigned int | iGetInitialNumDof (void) const |
|
virtual void | InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const |
|
VariableSubMatrixHandler & | InitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr) |
|
SubVectorHandler & | InitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr) |
|
| Elem (unsigned int uL, flag fOut) |
|
virtual | ~Elem (void) |
|
virtual unsigned int | iGetNumDof (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) const |
|
virtual void | AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr) |
|
virtual bool | bInverseDynamics (void) const |
|
void | SetInverseDynamicsFlags (unsigned uIDF) |
|
unsigned | GetInverseDynamicsFlags (void) const |
|
bool | bIsErgonomy (void) const |
|
bool | bIsRightHandSide (void) const |
|
virtual VariableSubMatrixHandler & | AssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr) |
|
virtual SubVectorHandler & | AssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS) |
|
virtual int | GetNumConnectedNodes (void) const |
|
| 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 |
|
| SimulationEntity (void) |
|
virtual | ~SimulationEntity (void) |
|
virtual bool | bIsValidIndex (unsigned int i) const |
|
virtual DofOrder::Order | GetEqType (unsigned int i) const |
|
virtual Hint * | ParseHint (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 | Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder) |
|
virtual void | AfterConvergence (const VectorHandler &X, const VectorHandler &XP) |
|
virtual void | AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP) |
|
virtual unsigned int | iGetPrivDataIdx (const char *s) const |
|
virtual doublereal | dGetPrivData (unsigned int i) const |
|
virtual std::ostream & | OutputAppend (std::ostream &out) const |
|
virtual void | ReadInitialState (MBDynParser &HP) |
|
| 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)) |
|
| UserDefinedElem (unsigned uLabel, const DofOwner *pDO) |
|
virtual | ~UserDefinedElem (void) |
|
bool | NeedsAirProperties (void) const |
|
void | NeedsAirProperties (bool yesno) |
|
virtual Elem::Type | GetElemType (void) const |
|
virtual AerodynamicElem::Type | GetAerodynamicElemType (void) const |
|
| InitialAssemblyElem (unsigned int uL, flag fOut) |
|
virtual | ~InitialAssemblyElem (void) |
|
| SubjectToInitialAssembly (void) |
|
virtual | ~SubjectToInitialAssembly (void) |
|
| AerodynamicElem (unsigned int uL, const DofOwner *pDO, flag fOut) |
|
virtual | ~AerodynamicElem (void) |
|
virtual const InducedVelocity * | pGetInducedVelocity (void) const |
|
| ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut) |
|
virtual | ~ElemWithDofs (void) |
|
| DofOwnerOwner (const DofOwner *pDO) |
|
virtual | ~DofOwnerOwner () |
|
virtual const DofOwner * | pGetDofOwner (void) const |
|
virtual integer | iGetFirstIndex (void) const |
|
virtual void | SetInitialValue (VectorHandler &X) |
|
| AirPropOwner (void) |
|
virtual | ~AirPropOwner (void) |
|
virtual void | PutAirProperties (const AirProperties *pAP) |
|
virtual flag | fGetAirVelocity (Vec3 &Velocity, const Vec3 &X) const |
|
virtual doublereal | dGetAirDensity (const Vec3 &X) const |
|
virtual doublereal | dGetAirPressure (const Vec3 &X) const |
|
virtual doublereal | dGetAirTemperature (const Vec3 &X) const |
|
virtual doublereal | dGetSoundSpeed (const Vec3 &X) const |
|
virtual bool | GetAirProps (const Vec3 &X, doublereal &rho, doublereal &c, doublereal &p, doublereal &T) const |
|
| 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 |
|
| GravityOwner (void) |
|
virtual | ~GravityOwner (void) |
|
void | PutGravity (const Gravity *pG) |
|
virtual bool | bGetGravity (const Vec3 &X, Vec3 &Acc) const |
|
Definition at line 44 of file module-wheel2.cc.
Definition at line 130 of file module-wheel2.cc.
References bSlip, dAlphaThreshold, dGamma, dHystVRef, dInternalRadius, Vec3::Dot(), dP0, dRadius, dRefArea, dRNP, dV0, dVolCoef, dvThreshold, DataManager::fReadOutput(), MBDynParser::GetDriveCaller(), WithLabel::GetLabel(), IncludeParser::GetLineData(), DataManager::GetLogFile(), MBDynParser::GetPosRel(), HighParser::GetReal(), MBDynParser::GetVecRel(), GroundDirection, GroundPosition, HighParser::IsArg(), HighParser::IsKeyWord(), Elem::LOADABLE, M_PI, MBDYN_EXCEPT_ARGS, pGround, pMuX0, pMuY0, pMuY1, pWheel, DataManager::ReadNode(), ToBeOutput::SetOutputFlag(), grad::sqrt(), Node::STRUCTURAL, and WheelAxle.
140 "Author: Stefania Gualdi <gualdi@aero.polimi.it> \n"
141 " Pierangelo Masarati <masarati@aero.polimi.it> \n"
142 "Organization: Dipartimento di Ingegneria Aerospaziale \n"
143 " Politecnico di Milano \n"
144 " http://www.aero.polimi.it \n"
146 " All rights reserved \n"
148 "Connects 2 structural nodes: \n"
153 " - The Axle and the Wheel structural nodes must be connected \n"
154 " by a joint that allows relative rotations only about \n"
155 " one axis (the axle) \n"
156 " - The center of the wheel is assumed coincident with \n"
157 " the position of the wheel structural node \n"
158 " - The Ground structural node supports a plane defined \n"
159 " a point and a direction orthogonal to the plane (future \n"
160 " versions might use an arbitrary, deformable surface) \n"
161 " - The forces are applied at the \"contact point\", that \n"
162 " is defined according to geometrical properties \n"
163 " of the system and according to the relative position \n"
164 " and orientation of the Wheel and Ground structural nodes \n"
167 " <wheel structural node label> , \n"
168 " <wheel axle direction> , \n"
169 " <ground structural node label> , \n"
170 " <reference point position of the ground plane> , \n"
171 " <direction orthogonal to the ground plane> , \n"
172 " <wheel radius> , \n"
173 " <torus radius> , \n"
174 " <volume coefficient (black magic?)> , \n"
175 " <tire pressure> , \n"
176 " <tire polytropic exponent> , \n"
177 " <reference velocity for tire hysteresis> \n"
179 " <longitudinal friction coefficient drive> \n"
180 " <lateral friction coefficient drive for s.r.=0> \n"
181 " <lateral friction coefficient drive for s.r.=1> \n"
182 " [ , threshold , <slip ratio velocity threshold> , \n"
183 " <slip angle velocity threshold> ] ] \n"
186 " 1) element label \n"
187 " 2-4) tire force in global reference frame \n"
188 " 5-7) tire couple in global reference frame \n"
189 " 8) effective radius \n"
190 " 9) tire radial deformation \n"
191 " 10) tire radial deformation velocity \n"
194 " 13) longitudinal friction coefficient \n"
195 " 14) lateral friction coefficient \n"
196 " 15) axis relative tangential velocity \n"
197 " 16) point of contact relative tangential velocity \n"
225 if (d <= std::numeric_limits<doublereal>::epsilon()) {
226 silent_cerr(
"Wheel2(" <<
uLabel <<
"): "
270 silent_cerr(
"Wheel2(" <<
uLabel <<
"): "
278 silent_cerr(
"Wheel2(" <<
uLabel <<
"): "
289 out <<
"wheel2: " <<
uLabel
293 <<
" " << GroundDirection
flag fReadOutput(MBDynParser &HP, const T &t) const
const DriveCaller * pMuX0
const DriveCaller * pMuY1
#define MBDYN_EXCEPT_ARGS
doublereal Dot(const Vec3 &v) const
const StructNode * pGround
const StructNode * pWheel
const DriveCaller * pMuY0
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual bool IsKeyWord(const char *sKeyWord)
doublereal dAlphaThreshold
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Vec3 GetVecRel(const ReferenceFrame &rf)
std::ostream & GetLogFile(void) const
UserDefinedElem(unsigned uLabel, const DofOwner *pDO)
DriveCaller * GetDriveCaller(bool bDeferred=false)
doublereal dInternalRadius
virtual void SetOutputFlag(flag f=flag(1))
Elem(unsigned int uL, flag fOut)
virtual HighParser::ErrOut GetLineData(void) const
unsigned int GetLabel(void) const
Node * ReadNode(MBDynParser &HP, Node::Type type) const
virtual doublereal GetReal(const doublereal &dDefval=0.0)
Implements Elem.
Definition at line 345 of file module-wheel2.cc.
References VectorHandler::Add(), grad::atan2(), bSlip, copysign(), Vec3::Cross(), grad::Cross(), dAlpha, dAlphaThreshold, dDeltaL, dGamma, DriveCaller::dGet(), dHystVRef, dInstRadius, dInternalRadius, dMuX, dMuY, Vec3::Dot(), dP0, dRadius, dRefArea, dRNP, dSr, dV0, dVa, dVc, dVn, dvThreshold, F, WithLabel::GetLabel(), StructNode::GetRCurr(), StructDispNode::GetVCurr(), StructNode::GetWCurr(), StructDispNode::GetXCurr(), GroundDirection, GroundPosition, StructDispNode::iGetFirstMomentumIndex(), M, MBDYN_EXCEPT_ARGS, grad::Norm(), pGround, pMuX0, pMuY0, pMuY1, grad::pow(), SubVectorHandler::PutRowIndex(), pWheel, VectorHandler::Resize(), VectorHandler::ResizeReset(), grad::sqrt(), VectorHandler::Sub(), grad::tanh(), WheelAxle, WorkSpaceDim(), and Zero3.
396 for (
int iCnt = 1; iCnt <= 6; iCnt++) {
397 WorkVec.
PutRowIndex(iCnt, iGroundFirstMomIndex + iCnt);
398 WorkVec.
PutRowIndex(6 + iCnt, iWheelFirstMomIndex + iCnt);
405 dVa = (va - n*(n*va)).Norm();
438 if (d < std::numeric_limits<doublereal>::epsilon()) {
439 silent_cerr(
"Wheel2(" <<
GetLabel() <<
"): "
440 "wheel axle is (neraly) orthogonal "
441 "to the ground" << std::endl);
479 dMuX = dMuX0*sgn*(1. - std::abs(
dAlpha)/M_PI_2);
489 dMuY = dMuY0 + (dMuY1 - dMuY0)*
dSr;
GradientExpression< UnaryExpr< FuncTanh, Expr > > tanh(const GradientExpression< Expr > &u)
const Vec3 Zero3(0., 0., 0.)
Vec3 Cross(const Vec3 &v) const
const DriveCaller * pMuX0
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
const DriveCaller * pMuY1
#define MBDYN_EXCEPT_ARGS
virtual void ResizeReset(integer)
virtual const Mat3x3 & GetRCurr(void) const
doublereal Dot(const Vec3 &v) const
const StructNode * pGround
virtual void Sub(integer iRow, const Vec3 &v)
const StructNode * pWheel
const DriveCaller * pMuY0
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
doublereal copysign(doublereal x, doublereal y)
doublereal dAlphaThreshold
virtual integer iGetFirstMomentumIndex(void) const =0
virtual const Vec3 & GetWCurr(void) const
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
virtual const Vec3 & GetXCurr(void) const
virtual void Add(integer iRow, const Vec3 &v)
virtual doublereal dGet(const doublereal &dVar) const =0
VectorExpression< VectorExpr, N_rows >::ScalarType Norm(const VectorExpression< VectorExpr, N_rows > &u)
virtual const Vec3 & GetVCurr(void) const
doublereal dInternalRadius
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
unsigned int GetLabel(void) const
virtual void Resize(integer iNewSize)=0