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

#include <rotor.h>

Inheritance diagram for Rotor:
Collaboration diagram for Rotor:

Public Member Functions

 Rotor (unsigned int uL, const DofOwner *pDO)
 
 Rotor (unsigned int uL, const DofOwner *pDO, const StructNode *pC, const Mat3x3 &rrot, const StructNode *pR, const StructNode *pG, ResForceSet **ppres, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, flag fOut)
 
virtual ~Rotor (void)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void Output (OutputHandler &OH) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void SetInitialValue (VectorHandler &)
 
virtual const Vec3GetXCurr (void) const
 
virtual doublereal dGetOmega (void) const
 
virtual doublereal dGetRadius (void) const
 
virtual doublereal dGetMu (void) const
 
virtual const Vec3GetForces (void) const
 
virtual const Vec3GetMoments (void) const
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) 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 void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)=0
 
virtual bool bInverseDynamics (void) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
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 Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
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 InducedVelocityElem
 InducedVelocityElem (unsigned int uL, const DofOwner *pDO, const StructNode *pCraft, ResForceSet **ppres, flag fOut)
 
virtual ~InducedVelocityElem (void)
 
virtual Elem::Type GetElemType (void) const
 
virtual AerodynamicElem::Type GetAerodynamicElemType (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
- Public Member Functions inherited from AerodynamicElem
 AerodynamicElem (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~AerodynamicElem (void)
 
virtual bool NeedsAirProperties (void) const
 
virtual const InducedVelocitypGetInducedVelocity (void) 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 AirPropOwner
 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
 
- Public Member Functions inherited from InducedVelocity
 InducedVelocity (unsigned int uL, const StructNode *pCraft, ResForceSet **ppres, flag fOut)
 
virtual ~InducedVelocity (void)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual bool bSectionalForces (void) const
 
virtual unsigned int iGetNumDof (void) const
 
virtual InducedVelocity::Type GetInducedVelocityType (void) const =0
 
virtual void AddForce (const Elem *pEl, const StructNode *pNode, const Vec3 &F, const Vec3 &M, const Vec3 &X)
 
virtual void AddSectionalForce (Elem::Type type, const Elem *pEl, unsigned uPnt, const Vec3 &F, const Vec3 &M, doublereal dW, const Vec3 &X, const Mat3x3 &R, const Vec3 &V, const Vec3 &W)
 
virtual void ResetForce (void)
 
virtual Vec3 GetInducedVelocity (Elem::Type type, unsigned uLabel, unsigned uPnt, const Vec3 &X) const =0
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void SetValue (DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
 

Protected Member Functions

virtual doublereal dGetPsi (const Vec3 &X) const
 
virtual doublereal dGetPos (const Vec3 &X) const
 
virtual void GetPos (const Vec3 &X, doublereal &dr, doublereal &dp) const
 
virtual void InitParam (bool bComputeMeanInducedVelocity=true)
 
virtual void Init (const StructNode *pC, const Mat3x3 &rrot, const StructNode *pR, const StructNode *pG, ResForceSet **ppres, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, flag fOut)
 

Protected Attributes

const StructNodepRotor
 
const StructNodepGround
 
doublereal dOmegaRef
 
doublereal dRadius
 
doublereal dVTipRef
 
doublereal dArea
 
doublereal dUMean
 
doublereal dUMeanRef
 
doublereal dUMeanPrev
 
unsigned int iMaxIter
 
unsigned int iCurrIter
 
doublereal dTolerance
 
doublereal dEta
 
bool bUMeanRefConverged
 
DriveOwner Weight
 
doublereal dWeight
 
doublereal dHoverCorrection
 
doublereal dForwardFlightCorrection
 
Mat3x3 RRotTranspose
 
Mat3x3 RRot
 
Vec3 RRot3
 
Vec3 VCraft
 
doublereal dPsi0
 
doublereal dSinAlphad
 
doublereal dCosAlphad
 
doublereal dMu
 
doublereal dLambda
 
doublereal dChi
 
doublereal dVelocity
 
doublereal dOmega
 
int iNumSteps
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from AirPropOwner
const AirPropertiespAirProperties
 
- Protected Attributes inherited from InducedVelocity
const StructNodepCraft
 
ExternResForces Res
 
ResForceSet ** ppRes
 

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 AerodynamicElem
enum  Type {
  UNKNOWN = -1, INDUCEDVELOCITY = 0, AEROMODAL, AERODYNAMICBODY,
  AERODYNAMICBEAM, AERODYNAMICEXTERNAL, AERODYNAMICEXTERNALMODAL, AERODYNAMICLOADABLE,
  AIRCRAFTINSTRUMENTS, GENERICFORCE, LASTAEROTYPE
}
 
- Public Types inherited from InducedVelocity
enum  Type {
  UNKNOWN = -1, USER_DEFINED = 0x01000000U, ROTOR = 0x10000000U, NO = (0U | ROTOR),
  UNIFORM = (1U | ROTOR), GLAUERT = (2U | ROTOR), MANGLER = (3U | ROTOR), DYNAMICINFLOW = (4U | ROTOR),
  PETERS_HE = (5U | ROTOR), CYCLOCOPTER = (11U | ROTOR), LASTROTORTYPE
}
 

Detailed Description

Definition at line 43 of file rotor.h.

Constructor & Destructor Documentation

Rotor::Rotor ( unsigned int  uL,
const DofOwner pDO 
)

Definition at line 59 of file rotor.cc.

References NO_OP.

60 : Elem(uL, flag(0)),
61 InducedVelocityElem(uL, pDO, 0, 0, flag(0)),
62 pRotor(0), pGround(0),
63 dOmegaRef(0.), dRadius(0), dVTipRef(0.), dArea(0.),
64 dUMean(0.), dUMeanRef(0.), dUMeanPrev(0.),
65 iMaxIter(0),
66 iCurrIter(0),
67 dTolerance(0),
68 dEta(0),
69 bUMeanRefConverged(false),
70 Weight(), dWeight(0.),
73 VCraft(::Zero3),
74 dPsi0(0.), dSinAlphad(1.), dCosAlphad(0.),
75 dMu(0.), dLambda(1.), dChi(0.),
76 dVelocity(0.), dOmega(0.),
77 iNumSteps(0)
78 {
79  NO_OP;
80 }
doublereal dHoverCorrection
Definition: rotor.h:70
const Vec3 Zero3(0., 0., 0.)
doublereal dArea
Definition: rotor.h:53
doublereal dForwardFlightCorrection
Definition: rotor.h:72
doublereal dVelocity
Definition: rotor.h:86
long int flag
Definition: mbdyn.h:43
doublereal dCosAlphad
Definition: rotor.h:81
int iNumSteps
Definition: rotor.h:92
Vec3 RRot3
Definition: rotor.h:77
unsigned int iMaxIter
Definition: rotor.h:59
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
Mat3x3 RRot
Definition: rotor.h:76
#define NO_OP
Definition: myassert.h:74
doublereal dSinAlphad
Definition: rotor.h:80
DriveOwner Weight
Definition: rotor.h:65
const Mat3x3 Zero3x3(0., 0., 0., 0., 0., 0., 0., 0., 0.)
doublereal dUMeanPrev
Definition: rotor.h:56
bool bUMeanRefConverged
Definition: rotor.h:63
doublereal dOmega
Definition: rotor.h:87
InducedVelocityElem(unsigned int uL, const DofOwner *pDO, const StructNode *pCraft, ResForceSet **ppres, flag fOut)
Definition: indvel.cc:311
doublereal dPsi0
Definition: rotor.h:79
Vec3 VCraft
Definition: rotor.h:78
doublereal dUMeanRef
Definition: rotor.h:55
doublereal dMu
Definition: rotor.h:82
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
doublereal dEta
Definition: rotor.h:62
doublereal dOmegaRef
Definition: rotor.h:49
unsigned int iCurrIter
Definition: rotor.h:60
doublereal dWeight
Definition: rotor.h:68
doublereal dLambda
Definition: rotor.h:83
doublereal dRadius
Definition: rotor.h:51
const StructNode * pRotor
Definition: rotor.h:46
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
const StructNode * pGround
Definition: rotor.h:47
doublereal dUMean
Definition: rotor.h:54
doublereal dTolerance
Definition: rotor.h:61
doublereal dChi
Definition: rotor.h:84
Rotor::Rotor ( unsigned int  uL,
const DofOwner pDO,
const StructNode pC,
const Mat3x3 rrot,
const StructNode pR,
const StructNode pG,
ResForceSet **  ppres,
const doublereal dR,
unsigned int  iMaxIt,
const doublereal dTol,
const doublereal dE,
flag  fOut 
)

Definition at line 82 of file rotor.cc.

References Init().

89 : Elem(uL, fOut),
90 InducedVelocityElem(uL, pDO, 0, 0, flag(0)),
91 pRotor(0), pGround(0),
92 dOmegaRef(0.), dRadius(0), dVTipRef(0.), dArea(0.),
93 dUMean(0.), dUMeanRef(0.), dUMeanPrev(0.),
94 iMaxIter(0),
95 iCurrIter(0),
96 dTolerance(0),
97 dEta(0),
98 bUMeanRefConverged(false),
99 Weight(), dWeight(0.),
102 VCraft(::Zero3),
103 dPsi0(0.), dSinAlphad(1.), dCosAlphad(0.),
104 dMu(0.), dLambda(1.), dChi(0.),
105 dVelocity(0.), dOmega(0.),
106 iNumSteps(0)
107 {
108  Init(pC, rrot, pR, pG, ppres, dR, iMaxIt, dTol, dE, fOut);
109 }
doublereal dHoverCorrection
Definition: rotor.h:70
const Vec3 Zero3(0., 0., 0.)
doublereal dArea
Definition: rotor.h:53
doublereal dForwardFlightCorrection
Definition: rotor.h:72
doublereal dVelocity
Definition: rotor.h:86
long int flag
Definition: mbdyn.h:43
doublereal dCosAlphad
Definition: rotor.h:81
int iNumSteps
Definition: rotor.h:92
Vec3 RRot3
Definition: rotor.h:77
unsigned int iMaxIter
Definition: rotor.h:59
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
Mat3x3 RRot
Definition: rotor.h:76
virtual void Init(const StructNode *pC, const Mat3x3 &rrot, const StructNode *pR, const StructNode *pG, ResForceSet **ppres, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, flag fOut)
Definition: rotor.cc:112
doublereal dSinAlphad
Definition: rotor.h:80
DriveOwner Weight
Definition: rotor.h:65
const Mat3x3 Zero3x3(0., 0., 0., 0., 0., 0., 0., 0., 0.)
doublereal dUMeanPrev
Definition: rotor.h:56
bool bUMeanRefConverged
Definition: rotor.h:63
doublereal dOmega
Definition: rotor.h:87
InducedVelocityElem(unsigned int uL, const DofOwner *pDO, const StructNode *pCraft, ResForceSet **ppres, flag fOut)
Definition: indvel.cc:311
doublereal dPsi0
Definition: rotor.h:79
Vec3 VCraft
Definition: rotor.h:78
doublereal dUMeanRef
Definition: rotor.h:55
doublereal dMu
Definition: rotor.h:82
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
doublereal dEta
Definition: rotor.h:62
doublereal dOmegaRef
Definition: rotor.h:49
unsigned int iCurrIter
Definition: rotor.h:60
doublereal dWeight
Definition: rotor.h:68
doublereal dLambda
Definition: rotor.h:83
doublereal dRadius
Definition: rotor.h:51
const StructNode * pRotor
Definition: rotor.h:46
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
const StructNode * pGround
Definition: rotor.h:47
doublereal dUMean
Definition: rotor.h:54
doublereal dTolerance
Definition: rotor.h:61
doublereal dChi
Definition: rotor.h:84

Here is the call graph for this function:

Rotor::~Rotor ( void  )
virtual

Definition at line 146 of file rotor.cc.

References NO_OP.

147 {
148  NO_OP;
149 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Reimplemented from InducedVelocity.

Definition at line 152 of file rotor.cc.

References InducedVelocity::AfterConvergence(), DriveOwner::dGet(), dUMean, dUMeanPrev, dWeight, WithLabel::GetLabel(), iNumSteps, DriveOwner::pGetDriveCaller(), and Weight.

154 {
155  /* non mi ricordo a cosa serve! */
156  iNumSteps++;
157 
158  /* updates the umean at the previous step */
159  dUMeanPrev = dUMean;
160 
161  /*
162  * FIXME: should go in AfterPredict ...
163  * this way there's a one step delay in the weight value
164  */
165  if (Weight.pGetDriveCaller() != 0) {
166  dWeight = Weight.dGet();
167  if (dWeight < 0.) {
168  silent_cout("Rotor(" << GetLabel() << "): "
169  "delay < 0.0; using 0.0" << std::endl);
170  dWeight = 0.;
171 
172  } else if (dWeight > 1.) {
173  silent_cout("Rotor(" << GetLabel() << "): "
174  "delay > 1.0; using 1.0" << std::endl);
175  dWeight = 1.;
176  }
177  }
178 
180 }
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: indvel.cc:170
int iNumSteps
Definition: rotor.h:92
DriveOwner Weight
Definition: rotor.h:65
doublereal dUMeanPrev
Definition: rotor.h:56
DriveCaller * pGetDriveCaller(void) const
Definition: drive.cc:658
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
doublereal dWeight
Definition: rotor.h:68
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dUMean
Definition: rotor.h:54

Here is the call graph for this function:

virtual doublereal Rotor::dGetMu ( void  ) const
inlinevirtual

Definition at line 165 of file rotor.h.

References dMu.

Referenced by RotorTrim::GetData().

165  {
166 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
167  Wait();
168 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
169  return dMu;
170  };
doublereal dMu
Definition: rotor.h:82
virtual doublereal Rotor::dGetOmega ( void  ) const
inlinevirtual

Definition at line 151 of file rotor.h.

References dOmega.

Referenced by AerodynamicBody::AssJac(), AerodynamicBeam::AssJac(), AerodynamicBeam2::AssJac(), AerodynamicBody::AssVec(), AerodynamicBeam::AssVec(), AerodynamicBeam2::AssVec(), and RotorTrim::GetData().

151  {
152 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
153  Wait();
154 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
155  return dOmega;
156  };
doublereal dOmega
Definition: rotor.h:87
doublereal Rotor::dGetPos ( const Vec3 X) const
protectedvirtual

Definition at line 296 of file rotor.cc.

References GetPos().

Referenced by UniformRotor::AssRes(), and ManglerRotor::AssRes().

297 {
298  doublereal dr, dp;
299  GetPos(X, dr, dp);
300  return dr;
301 }
virtual void GetPos(const Vec3 &X, doublereal &dr, doublereal &dp) const
Definition: rotor.cc:304
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

doublereal Rotor::dGetPsi ( const Vec3 X) const
protectedvirtual

Definition at line 286 of file rotor.cc.

References GetPos().

Referenced by UniformRotor::AssRes(), and ManglerRotor::AssRes().

287 {
288  doublereal dr, dp;
289  GetPos(X, dr, dp);
290  return dp;
291 }
virtual void GetPos(const Vec3 &X, doublereal &dr, doublereal &dp) const
Definition: rotor.cc:304
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

virtual doublereal Rotor::dGetRadius ( void  ) const
inlinevirtual

Definition at line 158 of file rotor.h.

References dRadius.

Referenced by ReadGenel(), and RotorTrim::RotorTrim().

158  {
159 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
160  Wait();
161 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
162  return dRadius;
163  };
doublereal dRadius
Definition: rotor.h:51
virtual void Rotor::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
inlinevirtual

Reimplemented from Elem.

Definition at line 190 of file rotor.h.

References InducedVelocity::pCraft, pGround, and pRotor.

Referenced by RotorTrim::GetConnectedNodes().

190  {
191  if (pGround != 0) {
192  connectedNodes.resize(3);
193  connectedNodes[2] = pGround;
194  } else {
195  connectedNodes.resize(2);
196  }
197 
198  connectedNodes[0] = pCraft;
199  connectedNodes[1] = pRotor;
200  };
const StructNode * pRotor
Definition: rotor.h:46
const StructNode * pGround
Definition: rotor.h:47
const StructNode * pCraft
Definition: indvel.h:111
virtual const Vec3& Rotor::GetForces ( void  ) const
inlinevirtual

Reimplemented from InducedVelocity.

Definition at line 172 of file rotor.h.

References ResForces::Force(), and InducedVelocity::Res.

172  {
173 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
174  Wait();
175 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
176  return Res.Force();
177  };
ExternResForces Res
Definition: indvel.h:114
virtual const Vec3 & Force(void) const
Definition: resforces.cc:103

Here is the call graph for this function:

virtual const Vec3& Rotor::GetMoments ( void  ) const
inlinevirtual

Reimplemented from InducedVelocity.

Definition at line 179 of file rotor.h.

References ResForces::Moment(), and InducedVelocity::Res.

179  {
180 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
181  Wait();
182 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
183  return Res.Moment();
184  };
ExternResForces Res
Definition: indvel.h:114
virtual const Vec3 & Moment(void) const
Definition: resforces.cc:109

Here is the call graph for this function:

void Rotor::GetPos ( const Vec3 X,
doublereal dr,
doublereal dp 
) const
protectedvirtual

Definition at line 304 of file rotor.cc.

References ASSERT, grad::atan2(), dPsi0, dRadius, ExternResForces::Pole(), InducedVelocity::Res, RRotTranspose, and grad::sqrt().

Referenced by DynamicInflowRotor::AssRes(), PetersHeRotor::AssRes(), dGetPos(), dGetPsi(), GlauertRotor::GetInducedVelocity(), ManglerRotor::GetInducedVelocity(), DynamicInflowRotor::GetInducedVelocity(), and PetersHeRotor::GetInducedVelocity().

305 {
306  Vec3 XRel(RRotTranspose*(X - Res.Pole()));
307 
308  doublereal d1 = XRel(1);
309  doublereal d2 = XRel(2);
310 
311  doublereal d = sqrt(d1*d1 + d2*d2);
312 
313  ASSERT(dRadius > std::numeric_limits<doublereal>::epsilon());
314  dr = d/dRadius;
315 
316  dp = atan2(d2, d1) - dPsi0;
317 }
ExternResForces Res
Definition: indvel.h:114
Definition: matvec3.h:98
const Vec3 & Pole(void) const
Definition: resforces.cc:145
doublereal dPsi0
Definition: rotor.h:79
#define ASSERT(expression)
Definition: colamd.c:977
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
Mat3x3 RRotTranspose
Definition: rotor.h:75
doublereal dRadius
Definition: rotor.h:51
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2962
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

virtual const Vec3& Rotor::GetXCurr ( void  ) const
inlinevirtual

Reimplemented from InducedVelocity.

Definition at line 146 of file rotor.h.

References StructDispNode::GetXCurr(), and pRotor.

Referenced by DynamicInflowRotor::AssRes(), PetersHeRotor::AssRes(), RotorTrim::GetData(), and InitParam().

146  {
147  return pRotor->GetXCurr();
148  };
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const StructNode * pRotor
Definition: rotor.h:46

Here is the call graph for this function:

void Rotor::Init ( const StructNode pC,
const Mat3x3 rrot,
const StructNode pR,
const StructNode pG,
ResForceSet **  ppres,
const doublereal dR,
unsigned int  iMaxIt,
const doublereal dTol,
const doublereal dE,
flag  fOut 
)
protectedvirtual

Definition at line 112 of file rotor.cc.

References dEta, dRadius, dTolerance, WithLabel::GetLabel(), StructNode::GetRCurr(), Mat3x3::GetVec(), iMaxIter, InducedVelocity::pCraft, pGround, InducedVelocity::ppRes, pRotor, RRot, and ToBeOutput::SetOutputFlag().

Referenced by NoRotor::Init(), UniformRotor::Init(), GlauertRotor::Init(), ManglerRotor::Init(), DynamicInflowRotor::Init(), PetersHeRotor::Init(), and Rotor().

118 {
121 
122  pRotor = pR;
123  pGround = pG;
124  dRadius = dR;
125  iMaxIter = iMaxIt;
126  dTolerance = dTol;
127  dEta = dE;
128  RRot = rrot;
129 
130  SetOutputFlag(fOut);
131 
132  Vec3 R3C(pCraft->GetRCurr()*RRot.GetVec(3));
133  Vec3 R3R(pRotor->GetRCurr().GetVec(3));
134  if (R3C.Dot(R3R) < 1. - std::numeric_limits<doublereal>::epsilon()) {
135  silent_cerr("Rotor(" << GetLabel() << "): "
136  "warning, possible misalignment "
137  "of rotor node StructNode(" << pRotor->GetLabel() << ") "
138  "axis Rr(3) = {" << R3R << "} "
139  "and craft node StructNode(" << pCraft->GetLabel() << ") "
140  "axis Rc*Rh(3) = {" << R3C << "} "
141  << "for Rotor(" << GetLabel() << ")"
142  << std::endl);
143  }
144 }
Definition: matvec3.h:98
ResForceSet ** ppRes
Definition: indvel.h:116
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
unsigned int iMaxIter
Definition: rotor.h:59
Mat3x3 RRot
Definition: rotor.h:76
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
doublereal dEta
Definition: rotor.h:62
doublereal dRadius
Definition: rotor.h:51
const StructNode * pRotor
Definition: rotor.h:46
virtual void SetOutputFlag(flag f=flag(1))
Definition: output.cc:896
const StructNode * pGround
Definition: rotor.h:47
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dTolerance
Definition: rotor.h:61
const StructNode * pCraft
Definition: indvel.h:111

Here is the call graph for this function:

void Rotor::InitParam ( bool  bComputeMeanInducedVelocity = true)
protectedvirtual

Definition at line 323 of file rotor.cc.

References ASSERT, grad::atan2(), bUMeanRefConverged, copysign(), dArea, dChi, dCosAlphad, dEta, dForwardFlightCorrection, AirPropOwner::dGetAirDensity(), dHoverCorrection, dLambda, dMu, dOmega, dPsi0, dRadius, dSinAlphad, dTolerance, dUMean, dUMeanPrev, dUMeanRef, dVelocity, dVTipRef, dVTipTreshold, dWeight, AirPropOwner::fGetAirVelocity(), ResForces::Force(), WithLabel::GetLabel(), StructNode::GetRCurr(), StructDispNode::GetVCurr(), Mat3x3::GetVec(), StructNode::GetWCurr(), GetXCurr(), StructDispNode::GetXCurr(), iCurrIter, iMaxIter, MBDYN_EXCEPT_ARGS, grad::Norm(), InducedVelocity::pCraft, pGround, pRotor, ExternResForces::PutPole(), InducedVelocity::Res, RRot, RRot3, RRotTranspose, grad::sqrt(), Mat3x3::Transpose(), VCraft, and Zero3.

Referenced by NoRotor::AssRes(), UniformRotor::AssRes(), GlauertRotor::AssRes(), ManglerRotor::AssRes(), DynamicInflowRotor::AssRes(), and PetersHeRotor::AssRes().

324 {
325  ASSERT(pCraft != 0);
326  ASSERT(pRotor != 0);
327 
328  /* Trasposta della matrice di rotazione del rotore */
332 
333  /* Posizione del rotore */
335 
336  /* Velocita' angolare del rotore */
337  dOmega = (pRotor->GetWCurr() - pCraft->GetWCurr()).Norm();
338 
339  /* Velocita' di traslazione del velivolo */
340  VCraft = -pRotor->GetVCurr();
341  Vec3 VTmp(Zero3);
342  if (fGetAirVelocity(VTmp, pRotor->GetXCurr())) {
343  VCraft += VTmp;
344  }
345 
346  /* Velocita' nel sistema del velivolo (del disco?) decomposta */
347  VTmp = RRotTranspose*VCraft;
348  doublereal dV1 = VTmp(1);
349  doublereal dV2 = VTmp(2);
350  doublereal dV3 = VTmp(3);
351  doublereal dVV = dV1*dV1 + dV2*dV2;
352  doublereal dV = sqrt(dVV);
353 
354  /* Angolo di azimuth 0 del rotore */
355  dPsi0 = atan2(dV2, dV1);
356 
357  /* Angolo di influsso */
358  dVelocity = sqrt(dV3*dV3 + dVV);
360  dSinAlphad = -dV3/dVelocity;
361  dCosAlphad = dV/dVelocity;
362 
363  } else {
364  dSinAlphad = 1.;
365  dCosAlphad = 0.;
366  }
367 
368  if (!bComputeMeanInducedVelocity) {
369  return;
370  }
371 
372  // bail out when density is negligible
374  if (dRho <= std::numeric_limits<doublereal>::epsilon()) {
375  return;
376  }
377 
378  // Thrust in rotor reference frame
379  doublereal dT = RRot3*Res.Force();
380 
381  /* Parametri di influsso (usano il valore di dUMean al passo precedente) */
382  doublereal dVTip = 0.;
383  dMu = 0.;
384  dLambda = 0.;
385  dVTip = dOmega*dRadius;
386 
387  if (dVTip > dVTipTreshold*dVTipRef) {
388  dMu = (dVelocity*dCosAlphad)/dVTip;
389  }
390 
391  /* NOTE: dUMeanRef starts at the value it had previously */
392  if (std::abs(dUMeanRef) < std::numeric_limits<doublereal>::epsilon()
393  && std::abs(dT) > std::numeric_limits<doublereal>::epsilon())
394  {
395  // first guess: start with the value in hover
396  dUMeanRef = copysign(std::sqrt(std::abs(dT)/(2*dRho*dArea)), dT);
397  }
398 
399  /* Ground effect */
400  doublereal dGE = 1.;
401  if (pGround) {
403  doublereal z = p/(dRadius/4.);
404 
405  if (z < .25) {
406  if (z <= 0.) {
407  silent_cerr("warning, illegal negative "
408  "normalized altitude "
409  "z=" << z << std::endl);
410  }
411 
412  z = .25;
413  }
414 
415  /*
416  * According to I.C. Cheeseman & N.E. Bennett,
417  * "The Effect of Ground on a Helicopter Rotor
418  * in Forward Flight", NASA TR-3021, 1955:
419  *
420  * U = Uref * ( 1 - ( R / ( 4 * z ) )^2 )
421  *
422  * We need to make R / ( 4 * z ) <= 1, so
423  * we must enforce z >= R / 4.
424  */
425  dGE -= 1./(z*z);
426  }
427 
428  bUMeanRefConverged = false;
429  if (dVTip > dVTipTreshold*dVTipRef) {
430  doublereal dCt = dT/(dRho*dArea*dVTip*dVTip);
431  doublereal dLambda0 = dVelocity*dSinAlphad/dVTip;
432  doublereal dLambdaInd = dUMeanRef/dVTip;
433 
434  bool bRetrying = false;
435 retry:;
436 
437  for (iCurrIter = 0; iCurrIter < iMaxIter; iCurrIter++) {
438  dLambda = dLambda0 + dLambdaInd;
439 
440  doublereal dRef0 = dMu*dMu + dLambda*dLambda;
441  doublereal dRef1 = 2.*sqrt(dRef0);
442  doublereal dRef2 = dRef1*dRef0;
443  doublereal dF = 0.;
444  if (dRef1 > std::numeric_limits<doublereal>::epsilon()) {
445  dF = dLambdaInd - dCt/dRef1;
446  doublereal dFPrime = 1. + (dCt/dRef2)*dLambda;
447  doublereal dDelta = dF/dFPrime;
448  dLambdaInd -= dEta*dDelta;
449  }
450 
451 #if 0
452  std::cerr
453  << " iter=" << iCurrIter
454  << " lambda=" << dLambda
455  << " dRef1=" << dRef1
456  << " dF=" << dF
457  << " Uref=" << dUMeanRef
458  << std::endl;
459 #endif
460 
461  if (std::abs(dF) <= dTolerance) {
462  bUMeanRefConverged = true;
463  break;
464  }
465  }
466 
467  // NOTE: the induced velocity must have the same sign
468  // of the thrust coefficient
469  if (dLambdaInd*dCt < 0.) {
470  if (!bRetrying) {
471  bRetrying = true;
472 
473  // first guess: revert the sign of induced velocity
474  dLambdaInd = -dLambdaInd;
475  goto retry;
476  }
477 
478  silent_cerr("Rotor(" << GetLabel() << "): "
479  "induced velocity and thrust signs differ "
480  "(lambda_u=" << dLambdaInd << ", Ct=" << dCt << ")"
481  << std::endl);
482  }
483 
484  dLambda = dLambda0 + dLambdaInd;
485 
486  // this is updated to serve as starting point for next iteration
487  dUMeanRef = dLambdaInd*dVTip;
488 
489  /* if no convergence, simply accept the current value
490  * very forgiving choice, though */
491 #if 0
492  if (iCurrIter == iMaxIter) {
493  silent_cerr("unable to compute mean induced velocity "
494  "for Rotor(" << GetLabel() << ")" << std::endl);
496  }
497 #endif
498  }
499 
500  //if (dMu == 0. && dLambda == 0.) {
501  if (std::abs(dMu) < std::numeric_limits<doublereal>::epsilon() ) {
502  dChi = 0.;
503 
504  } else {
505  dChi = atan2(dMu, dLambda);
506  }
507 
508  /*
509  * From Claudio Monteggia:
510  *
511  * Ct
512  * Um = -------------------------------------
513  * sqrt( lambda^2 / KH^4 + mu^2 / KF^2)
514  */
515  if (dVTip > dVTipTreshold*dVTipRef) {
517  doublereal dLambdaTmp = dLambda/(dHoverCorrection*dHoverCorrection);
518  doublereal dRef = 2*sqrt(dMuTmp*dMuTmp + dLambdaTmp*dLambdaTmp);
519  doublereal dCt = dT/(dRho*dArea*dVTip*dVTip);
520  if (dRef > std::abs(dCt)) {
521  // NOTE: an inflow velocity larger than VTip
522  // makes little sense
523  dUMean = (1. - dWeight)*dGE*dVTip*dCt/dRef + dWeight*dUMeanPrev;
524 
525  } else {
526  dUMean = dUMeanPrev;
527  }
528 
529  } else {
530  dUMean = dUMeanPrev;
531  }
532 }
ExternResForces Res
Definition: indvel.h:114
virtual doublereal dGetAirDensity(const Vec3 &X) const
Definition: aerodyn.cc:736
doublereal dHoverCorrection
Definition: rotor.h:70
const Vec3 Zero3(0., 0., 0.)
doublereal dArea
Definition: rotor.h:53
doublereal dForwardFlightCorrection
Definition: rotor.h:72
doublereal dVelocity
Definition: rotor.h:86
doublereal dCosAlphad
Definition: rotor.h:81
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 RRot3
Definition: rotor.h:77
virtual const Vec3 & Force(void) const
Definition: resforces.cc:103
unsigned int iMaxIter
Definition: rotor.h:59
Mat3x3 RRot
Definition: rotor.h:76
doublereal dSinAlphad
Definition: rotor.h:80
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
doublereal dUMeanPrev
Definition: rotor.h:56
bool bUMeanRefConverged
Definition: rotor.h:63
virtual const Vec3 & GetXCurr(void) const
Definition: rotor.h:146
static const doublereal dVTipTreshold
Definition: rotor.cc:55
doublereal dOmega
Definition: rotor.h:87
doublereal dPsi0
Definition: rotor.h:79
doublereal copysign(doublereal x, doublereal y)
Definition: gradient.h:97
Vec3 VCraft
Definition: rotor.h:78
doublereal dUMeanRef
Definition: rotor.h:55
doublereal dMu
Definition: rotor.h:82
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
void PutPole(const Vec3 &x)
Definition: resforces.cc:139
#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
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
VectorExpression< VectorExpr, N_rows >::ScalarType Norm(const VectorExpression< VectorExpr, N_rows > &u)
Definition: matvec.h:3163
Mat3x3 Transpose(void) const
Definition: matvec3.h:816
doublereal dEta
Definition: rotor.h:62
unsigned int iCurrIter
Definition: rotor.h:60
doublereal dWeight
Definition: rotor.h:68
doublereal dLambda
Definition: rotor.h:83
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
doublereal dRadius
Definition: rotor.h:51
virtual flag fGetAirVelocity(Vec3 &Velocity, const Vec3 &X) const
Definition: aerodyn.cc:725
const StructNode * pRotor
Definition: rotor.h:46
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2962
double doublereal
Definition: colamd.c:52
const StructNode * pGround
Definition: rotor.h:47
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dUMean
Definition: rotor.h:54
doublereal dTolerance
Definition: rotor.h:61
doublereal dChi
Definition: rotor.h:84
const StructNode * pCraft
Definition: indvel.h:111

Here is the call graph for this function:

void Rotor::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Reimplemented in PetersHeRotor, and DynamicInflowRotor.

Definition at line 183 of file rotor.cc.

References grad::atan2(), ToBeOutput::bToBeOutput(), bUMeanRefConverged, dChi, dCosAlphad, dLambda, dMu, dPsi0, dSinAlphad, dUMean, dVelocity, ResForces::Force(), WithLabel::GetLabel(), iCurrIter, ResForces::Moment(), InducedVelocity::ppRes, InducedVelocity::Res, OutputHandler::Rotors(), and RRotTranspose.

184 {
185  if (bToBeOutput()) {
186 #ifdef USE_MPI
187  if (is_parallel && IndVelComm.Get_size() > 1) {
188  if (IndVelComm.Get_rank() == 0) {
189  Vec3 TmpF(pTmpVecR);
190  Vec3 TmpM(pTmpVecR+3);
191 
192  OH.Rotors()
193  << std::setw(8) << GetLabel() /* 1 */
194  << " " << RRotTranspose*TmpF /* 2-4 */
195  << " " << RRotTranspose*TmpM /* 5-7 */
196  << " " << dUMean /* 8 */
197  << " " << dVelocity /* 9 */
198  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
199  << " " << dMu /* 11 */
200  << " " << dLambda /* 12 */
201  << " " << dChi /* 13 */
202  << " " << dPsi0 /* 14 */
203  << " " << bUMeanRefConverged /* 15 */
204  << " " << iCurrIter /* 16 */
205  << std::endl;
206 
207  for (int i = 0; ppRes && ppRes[i]; i++) {
208  Vec3 TmpF(pTmpVecR+6+6*i);
209  Vec3 TmpM(pTmpVecR+9+6*i);
210 
211  OH.Rotors()
212  << std::setw(8) << GetLabel()
213  << ":" << ppRes[i]->GetLabel()
214  << " " << TmpF
215  << " " << TmpM
216  << std::endl;
217  }
218  }
219  } else {
220  OH.Rotors()
221  << std::setw(8) << GetLabel() /* 1 */
222  << " " << RRotTranspose*Res.Force() /* 2-4 */
223  << " " << RRotTranspose*Res.Moment() /* 5-7 */
224  << " " << dUMean /* 8 */
225  << " " << dVelocity /* 9 */
226  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
227  << " " << dMu /* 11 */
228  << " " << dLambda /* 12 */
229  << " " << dChi /* 13 */
230  << " " << dPsi0 /* 14 */
231  << " " << bUMeanRefConverged /* 15 */
232  << " " << iCurrIter /* 16 */
233  << std::endl;
234 
235  for (int i = 0; ppRes && ppRes[i]; i++) {
236  OH.Rotors()
237  << std::setw(8) << GetLabel()
238  << ":" << ppRes[i]->GetLabel()
239  << " " << ppRes[i]->pRes->Force()
240  << " " << ppRes[i]->pRes->Moment()
241  << std::endl;
242  }
243  }
244 
245 #else /* !USE_MPI */
246  OH.Rotors()
247  << std::setw(8) << GetLabel() /* 1 */
248  << " " << RRotTranspose*Res.Force() /* 2-4 */
249  << " " << RRotTranspose*Res.Moment() /* 5-7 */
250  << " " << dUMean /* 8 */
251  << " " << dVelocity /* 9 */
252  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
253  << " " << dMu /* 11 */
254  << " " << dLambda /* 12 */
255  << " " << dChi /* 13 */
256  << " " << dPsi0 /* 14 */
257  << " " << bUMeanRefConverged /* 15 */
258  << " " << iCurrIter /* 16 */
259  << std::endl;
260 
261  /* FIXME: check for parallel stuff ... */
262  for (int i = 0; ppRes && ppRes[i]; i++) {
263  OH.Rotors()
264  << std::setw(8) << GetLabel()
265  << ":" << ppRes[i]->GetLabel()
266  << " " << ppRes[i]->pRes->Force()
267  << " " << ppRes[i]->pRes->Moment()
268  << std::endl;
269  }
270 #endif /* !USE_MPI */
271  }
272 }
ExternResForces Res
Definition: indvel.h:114
doublereal dVelocity
Definition: rotor.h:86
virtual bool bToBeOutput(void) const
Definition: output.cc:890
doublereal dCosAlphad
Definition: rotor.h:81
Definition: matvec3.h:98
ResForceSet ** ppRes
Definition: indvel.h:116
virtual const Vec3 & Force(void) const
Definition: resforces.cc:103
doublereal dSinAlphad
Definition: rotor.h:80
virtual const Vec3 & Moment(void) const
Definition: resforces.cc:109
bool bUMeanRefConverged
Definition: rotor.h:63
doublereal dPsi0
Definition: rotor.h:79
doublereal dMu
Definition: rotor.h:82
Mat3x3 RRotTranspose
Definition: rotor.h:75
std::ostream & Rotors(void) const
Definition: output.h:464
unsigned int iCurrIter
Definition: rotor.h:60
doublereal dLambda
Definition: rotor.h:83
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2962
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dUMean
Definition: rotor.h:54
doublereal dChi
Definition: rotor.h:84

Here is the call graph for this function:

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

Implements Elem.

Reimplemented in PetersHeRotor, DynamicInflowRotor, ManglerRotor, GlauertRotor, UniformRotor, and NoRotor.

Definition at line 535 of file rotor.cc.

References WithLabel::GetLabel(), InducedVelocity::pCraft, and pRotor.

Referenced by NoRotor::Restart(), UniformRotor::Restart(), GlauertRotor::Restart(), ManglerRotor::Restart(), DynamicInflowRotor::Restart(), and PetersHeRotor::Restart().

536 {
537  return out << " rotor: " << GetLabel() << ", "
538  << pCraft->GetLabel() << ", " << pRotor->GetLabel()
539  << ", induced velocity: ";
540 }
const StructNode * pRotor
Definition: rotor.h:46
unsigned int GetLabel(void) const
Definition: withlab.cc:62
const StructNode * pCraft
Definition: indvel.h:111

Here is the call graph for this function:

virtual void Rotor::SetInitialValue ( VectorHandler )
inlinevirtual

Reimplemented from InducedVelocity.

Reimplemented in PetersHeRotor, and DynamicInflowRotor.

Definition at line 142 of file rotor.h.

References NO_OP.

142  {
143  NO_OP;
144  };
#define NO_OP
Definition: myassert.h:74

Member Data Documentation

bool Rotor::bUMeanRefConverged
protected

Definition at line 63 of file rotor.h.

Referenced by InitParam(), Output(), DynamicInflowRotor::Output(), and PetersHeRotor::Output().

doublereal Rotor::dEta
protected

Definition at line 62 of file rotor.h.

Referenced by Init(), and InitParam().

doublereal Rotor::dOmegaRef
protected
doublereal Rotor::dTolerance
protected

Definition at line 61 of file rotor.h.

Referenced by Init(), and InitParam().

doublereal Rotor::dUMeanRef
protected

Definition at line 55 of file rotor.h.

Referenced by InitParam().

doublereal Rotor::dWeight
protected

Definition at line 68 of file rotor.h.

Referenced by AfterConvergence(), DynamicInflowRotor::Init(), PetersHeRotor::Init(), and InitParam().

unsigned int Rotor::iCurrIter
protected

Definition at line 60 of file rotor.h.

Referenced by InitParam(), Output(), DynamicInflowRotor::Output(), and PetersHeRotor::Output().

unsigned int Rotor::iMaxIter
protected

Definition at line 59 of file rotor.h.

Referenced by Init(), and InitParam().

int Rotor::iNumSteps
mutableprotected

Definition at line 92 of file rotor.h.

Referenced by AfterConvergence().

const StructNode* Rotor::pGround
protected

Definition at line 47 of file rotor.h.

Referenced by GetConnectedNodes(), Init(), and InitParam().

Mat3x3 Rotor::RRot
protected

Definition at line 76 of file rotor.h.

Referenced by Init(), and InitParam().

Vec3 Rotor::VCraft
protected

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