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

#include <rotor.h>

Inheritance diagram for PetersHeRotor:
Collaboration diagram for PetersHeRotor:

Public Member Functions

 PetersHeRotor (unsigned int uLabel, const DofOwner *pDO)
 
 PetersHeRotor (unsigned int uLabel, const DofOwner *pDO, const StructNode *pCraft, const Mat3x3 &rrot, const StructNode *pRotor, const StructNode *pGround, ResForceSet **ppres, const doublereal &dOR, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, const doublereal &dCH, const doublereal &dCFF, const doublereal &dVConstTmp, const doublereal &dVSineTmp, const doublereal &dVCosineTmp, flag fOut)
 
virtual ~PetersHeRotor (void)
 
virtual unsigned int iGetNumDof (void) const
 
virtual void Output (OutputHandler &OH) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void SetInitialValue (VectorHandler &X)
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
InducedVelocity::Type GetInducedVelocityType (void) const
 
virtual void AddForce (const Elem *pEl, const StructNode *pNode, const Vec3 &F, const Vec3 &M, const Vec3 &X)
 
virtual Vec3 GetInducedVelocity (Elem::Type type, unsigned uLabel, unsigned uPnt, const Vec3 &X) 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 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 Rotor
 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 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 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 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)
 

Protected Member Functions

virtual void Init (const StructNode *pCraft, const Mat3x3 &rrot, const StructNode *pRotor, const StructNode *pGround, ResForceSet **ppres, const doublereal &dOR, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, const doublereal &dCH, const doublereal &dCFF, const doublereal &dVConstTmp, const doublereal &dVSineTmp, const doublereal &dVCosineTmp, flag fOut)
 
- Protected Member Functions inherited from Rotor
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

doublereal dVConst
 
doublereal dVSine
 
doublereal dVCosine
 
doublereal dL11
 
doublereal dL13
 
doublereal dL22
 
doublereal dL31
 
doublereal dL33
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from Rotor
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 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 668 of file rotor.h.

Constructor & Destructor Documentation

PetersHeRotor::PetersHeRotor ( unsigned int  uLabel,
const DofOwner pDO 
)

Definition at line 2055 of file rotor.cc.

References NO_OP.

2056 : Elem(uLabel, flag(0)),
2057 Rotor(uLabel, pDO),
2058 dVConst(0), dVSine(0), dVCosine(0),
2059 dL11(0.), dL13(0.), dL22(0.), dL31(0.), dL33(0.)
2060 {
2061  NO_OP;
2062 }
long int flag
Definition: mbdyn.h:43
doublereal dL33
Definition: rotor.h:678
doublereal dVSine
Definition: rotor.h:671
doublereal dL31
Definition: rotor.h:677
doublereal dVConst
Definition: rotor.h:670
doublereal dL22
Definition: rotor.h:676
#define NO_OP
Definition: myassert.h:74
Rotor(unsigned int uL, const DofOwner *pDO)
Definition: rotor.cc:59
doublereal dL11
Definition: rotor.h:674
unsigned int uLabel
Definition: withlab.h:44
doublereal dVCosine
Definition: rotor.h:672
doublereal dL13
Definition: rotor.h:675
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
PetersHeRotor::PetersHeRotor ( unsigned int  uLabel,
const DofOwner pDO,
const StructNode pCraft,
const Mat3x3 rrot,
const StructNode pRotor,
const StructNode pGround,
ResForceSet **  ppres,
const doublereal dOR,
const doublereal dR,
unsigned int  iMaxIt,
const doublereal dTol,
const doublereal dE,
const doublereal dCH,
const doublereal dCFF,
const doublereal dVConstTmp,
const doublereal dVSineTmp,
const doublereal dVCosineTmp,
flag  fOut 
)

Definition at line 2064 of file rotor.cc.

References Init().

2082 : Elem(uLabel, flag(0)),
2083 Rotor(uLabel, pDO),
2084 dVConst(0), dVSine(0), dVCosine(0),
2085 dL11(0.), dL13(0.), dL22(0.), dL31(0.), dL33(0.)
2086 {
2087  Init(pCraft, rrot, pRotor, pGround, ppres, dOR, dR,
2088  iMaxIt, dTol, dE, dCH, dCFF,
2089  dVConstTmp, dVSineTmp, dVCosineTmp, fOut);
2090 }
long int flag
Definition: mbdyn.h:43
doublereal dL33
Definition: rotor.h:678
doublereal dVSine
Definition: rotor.h:671
doublereal dL31
Definition: rotor.h:677
doublereal dVConst
Definition: rotor.h:670
doublereal dL22
Definition: rotor.h:676
virtual void Init(const StructNode *pCraft, const Mat3x3 &rrot, const StructNode *pRotor, const StructNode *pGround, ResForceSet **ppres, const doublereal &dOR, const doublereal &dR, unsigned int iMaxIt, const doublereal &dTol, const doublereal &dE, const doublereal &dCH, const doublereal &dCFF, const doublereal &dVConstTmp, const doublereal &dVSineTmp, const doublereal &dVCosineTmp, flag fOut)
Definition: rotor.cc:2093
Rotor(unsigned int uL, const DofOwner *pDO)
Definition: rotor.cc:59
doublereal dL11
Definition: rotor.h:674
unsigned int uLabel
Definition: withlab.h:44
doublereal dVCosine
Definition: rotor.h:672
doublereal dL13
Definition: rotor.h:675
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41

Here is the call graph for this function:

PetersHeRotor::~PetersHeRotor ( void  )
virtual

Definition at line 2158 of file rotor.cc.

References SAFEDELETE, and SAFEDELETEARR.

2159 {
2160 #ifdef USE_MPI
2161  SAFEDELETEARR(pBlockLenght);
2162  SAFEDELETEARR(pDispl);
2163  SAFEDELETE(pIndVelDataType);
2164 #endif /* USE_MPI */
2165 }
#define SAFEDELETEARR(pnt)
Definition: mynewmem.h:713
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710

Member Function Documentation

void PetersHeRotor::AddForce ( const Elem pEl,
const StructNode pNode,
const Vec3 F,
const Vec3 M,
const Vec3 X 
)
virtual

Reimplemented from InducedVelocity.

Definition at line 2521 of file rotor.cc.

References InducedVelocity::AddForce(), ResForces::AddForces(), ToBeOutput::bToBeOutput(), MYSLEEP, and InducedVelocity::Res.

2523 {
2524  /*
2525  * Gli serve la trazione ed il momento rispetto al rotore,
2526  * che si calcola da se'
2527  */
2528 #ifdef USE_MPI
2529  if (ReqV != MPI::REQUEST_NULL) {
2530  while (!ReqV.Test()) {
2531  MYSLEEP(mysleeptime);
2532  }
2533  }
2534 #endif /* USE_MPI */
2535 
2536 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2537  pthread_mutex_lock(&forces_mutex);
2538  Wait();
2539 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2540 
2541  Res.AddForces(F, M, X);
2542  if (bToBeOutput()) {
2543  InducedVelocity::AddForce(pEl, pNode, F, M, X);
2544  }
2545 
2546 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2547  pthread_mutex_unlock(&forces_mutex);
2548 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2549 }
ExternResForces Res
Definition: indvel.h:114
virtual bool bToBeOutput(void) const
Definition: output.cc:890
#define MYSLEEP(t)
Definition: mysleep.h:49
virtual void AddForce(const Elem *pEl, const StructNode *pNode, const Vec3 &F, const Vec3 &M, const Vec3 &X)
Definition: indvel.cc:252
void AddForces(const Vec3 &f, const Vec3 &c, const Vec3 &x)
Definition: resforces.cc:77

Here is the call graph for this function:

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

Implements Elem.

Definition at line 2273 of file rotor.cc.

References DEBUGCOUT, dL11, dL13, dL22, dL31, dL33, dM11, dM22, dM33, DofOwnerOwner::iGetFirstIndex(), SparseSubMatrixHandler::PutItem(), SparseSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetNullMatrix(), and VariableSubMatrixHandler::SetSparse().

2277 {
2278  DEBUGCOUT("Entering PetersHeRotor::AssJac()" << std::endl);
2279 
2280  WorkMat.SetNullMatrix();
2281 
2282 #ifdef USE_MPI
2283  if (is_parallel && IndVelComm.Get_rank() == 0)
2284 #endif /* USE_MPI */
2285  {
2286  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
2287  integer iFirstIndex = iGetFirstIndex();
2288 
2289  WM.ResizeReset(5, 0);
2290 
2291  WM.PutItem(1, iFirstIndex + 1, iFirstIndex + 1, dM11 + dCoef*dL11);
2292  WM.PutItem(2, iFirstIndex + 3, iFirstIndex + 1, dCoef*dL31);
2293  WM.PutItem(3, iFirstIndex + 2, iFirstIndex + 2, dM22 + dCoef*dL22);
2294  WM.PutItem(4, iFirstIndex + 1, iFirstIndex + 3, dCoef*dL13);
2295  WM.PutItem(5, iFirstIndex + 3, iFirstIndex + 3, dM33 + dCoef*dL33);
2296  }
2297 
2298  return WorkMat;
2299 }
doublereal dL33
Definition: rotor.h:678
static const doublereal dM22
Definition: rotor.cc:1532
doublereal dL31
Definition: rotor.h:677
void ResizeReset(integer iNewRow, integer iNewCol)
Definition: submat.cc:1084
doublereal dL22
Definition: rotor.h:676
static const doublereal dM33
Definition: rotor.cc:1533
void PutItem(integer iSubIt, integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:997
doublereal dL11
Definition: rotor.h:674
void SetNullMatrix(void)
Definition: submat.h:1159
#define DEBUGCOUT(msg)
Definition: myassert.h:232
doublereal dL13
Definition: rotor.h:675
SparseSubMatrixHandler & SetSparse(void)
Definition: submat.h:1178
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
static const doublereal dM11
Definition: rotor.cc:1529

Here is the call graph for this function:

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

Implements Elem.

Definition at line 2303 of file rotor.cc.

References grad::cos(), Rotor::dArea, Rotor::dChi, Rotor::dCosAlphad, DEBUGCOUT, Rotor::dForwardFlightCorrection, AirPropOwner::dGetAirDensity(), Rotor::dHoverCorrection, dL11, dL13, dL22, dL31, dL33, Rotor::dLambda, dM11, dM22, dM33, Rotor::dMu, Rotor::dOmega, Rotor::dPsi0, Rotor::dRadius, Rotor::dSinAlphad, Rotor::dUMean, dVConst, dVCosine, Rotor::dVelocity, dVSine, Rotor::dVTipRef, dVTipTreshold, ResForces::Force(), Elem::GetElemType(), GetInducedVelocity(), WithLabel::GetLabel(), Rotor::GetPos(), StructNode::GetRCurr(), Rotor::GetXCurr(), StructDispNode::GetXCurr(), DofOwnerOwner::iGetFirstIndex(), Rotor::InitParam(), M_PI, ResForces::Moment(), InducedVelocity::pCraft, Rotor::pRotor, VectorHandler::PutCoef(), SubVectorHandler::PutRowIndex(), InducedVelocity::Res, InducedVelocity::ResetForce(), VectorHandler::Resize(), Rotor::RRot3, Rotor::RRotTranspose, grad::sin(), grad::sqrt(), grad::tan(), and Rotor::VCraft.

2307 {
2308  DEBUGCOUT("Entering PetersHeRotor::AssRes()" << std::endl);
2309 
2310 #ifdef USE_MPI
2311  ExchangeLoads(flag(1));
2312 
2313  if (!is_parallel || IndVelComm.Get_rank() == 0)
2314 #endif /* USE_MPI */
2315  {
2316  /* Calcola parametri vari */
2317  Rotor::InitParam();
2318 
2319  WorkVec.Resize(3);
2320 
2321  integer iFirstIndex = iGetFirstIndex();
2322 
2323  WorkVec.PutRowIndex(1, iFirstIndex + 1);
2324  WorkVec.PutRowIndex(2, iFirstIndex + 2);
2325  WorkVec.PutRowIndex(3, iFirstIndex + 3);
2326 
2327  dVConst = XCurr(iFirstIndex + 1);
2328  dVSine = XCurr(iFirstIndex + 2);
2329  dVCosine = XCurr(iFirstIndex + 3);
2330 
2331  doublereal dVConstPrime = XPrimeCurr(iFirstIndex + 1);
2332  doublereal dVSinePrime = XPrimeCurr(iFirstIndex + 2);
2333  doublereal dVCosinePrime = XPrimeCurr(iFirstIndex + 3);
2334 
2335  doublereal dCT = 0.;
2336  doublereal dCl = 0.;
2337  doublereal dCm = 0.;
2338 
2339  /*
2340  * Attenzione: moltiplico tutte le equazioni per dOmega
2341  * (ovvero, i coefficienti CT, CL e CM sono divisi
2342  * per dOmega anziche' dOmega^2)
2343  */
2344 
2345  dL11 = 0.;
2346  dL13 = 0.;
2347  dL22 = 0.;
2348  dL31 = 0.;
2349  dL33 = 0.;
2350 
2352  if (dDim > std::numeric_limits<doublereal>::epsilon()) {
2353  /*
2354  * From Claudio Monteggia:
2355  *
2356  * Ct
2357  * Um = -------------------------------------
2358  * sqrt( lambda^2 / KH^4 + mu^2 / KF^2)
2359  */
2360  doublereal dLambdaTmp
2363 
2364  doublereal dVT
2365  = sqrt(dLambdaTmp*dLambdaTmp + dMuTmp*dMuTmp);
2366  doublereal dVm = 0.;
2367  if (dVT > dVTipTreshold*dVTipRef) {
2368  dVm = (dMuTmp*dMuTmp + dLambdaTmp*(dLambdaTmp + dVConst))/dVT;
2369  }
2370 
2371  /*
2372  * dUMean is just for output;
2373  */
2375 
2376  /* Trazione nel sistema rotore */
2377  doublereal dT = RRot3*Res.Force();
2378 
2379  /* Momento nel sistema rotore-vento */
2380  doublereal dCosP = cos(dPsi0);
2381  doublereal dSinP = sin(dPsi0);
2382  Mat3x3 RTmp( dCosP, -dSinP, 0.,
2383  dSinP, dCosP, 0.,
2384  0., 0., 1.);
2385 
2386  Vec3 M(RTmp*(RRotTranspose*Res.Moment()));
2387 
2388  /* Thrust, roll and pitch coefficients */
2389  dCT = dT/dDim;
2390  dDim *= dRadius;
2391  dCl = - M(1)/dDim;
2392  dCm = - M(2)/dDim;
2393 
2394  if (dVT > std::numeric_limits<doublereal>::epsilon()
2395  && dVm > std::numeric_limits<doublereal>::epsilon())
2396  {
2397 
2398  /* Matrix coefficients */
2399  /* FIXME: divide by 0? */
2400  doublereal dl11 = .5/dVT;
2401  /* FIXME: divide by 0? */
2402  doublereal d = 15./64.*M_PI*tan(dChi/2.);
2403  /* FIXME: divide by 0? */
2404  doublereal dl13 = d/dVm;
2405  /* FIXME: divide by 0? */
2406  doublereal dl31 = d/dVT;
2407 
2408  doublereal dCosChi2 = cos(dChi/2.);
2409  d = 2.*dCosChi2*dCosChi2;
2410  /* FIXME: divide by 0? */
2411  doublereal dl22 = -4./(d*dVm);
2412  /* FIXME: divide by 0? */
2413  doublereal dl33 = -4.*(d - 1)/(d*dVm);
2414 
2415  d = dl11*dl33 - dl31*dl13;
2416  /* FIXME: divide by 0? */
2417  dL11 = dOmega*dl33/d;
2418  dL31 = -dOmega*dl31/d;
2419  dL13 = -dOmega*dl13/d;
2420  dL33 = dOmega*dl11/d;
2421  dL22 = dOmega/dl22;
2422  }
2423  }
2424 
2425 #ifdef DEBUG
2426  /* Prova: */
2427  static int i = -1;
2428  int iv[] = { 0, 1, 0, -1, 0 };
2429  if (++i == 4) {
2430  i = 0;
2431  }
2432  Vec3 XTmp(pRotor->GetXCurr()+pCraft->GetRCurr()*Vec3(dRadius*iv[i],dRadius*iv[i+1],0.));
2433  doublereal dPsiTmp, dXTmp;
2434  GetPos(XTmp, dXTmp, dPsiTmp);
2435  Vec3 IndV = GetInducedVelocity(GetElemType(), GetLabel(), 0, XTmp);
2436  std::cout
2437  << "X rotore: " << pRotor->GetXCurr() << std::endl
2438  << "V rotore: " << VCraft << std::endl
2439  << "X punto: " << XTmp << std::endl
2440  << "Omega: " << dOmega << std::endl
2441  << "Velocita': " << dVelocity << std::endl
2442  << "Psi0: " << dPsi0 << " ("
2443  << dPsi0*180./M_PI << " deg)" << std::endl
2444  << "Psi punto: " << dPsiTmp << " ("
2445  << dPsiTmp*180./M_PI << " deg)" << std::endl
2446  << "Raggio: " << dRadius << std::endl
2447  << "r punto: " << dXTmp << std::endl
2448  << "mu: " << dMu << std::endl
2449  << "lambda: " << dLambda << std::endl
2450  << "cos(ad): " << dCosAlphad << std::endl
2451  << "sin(ad): " << dSinAlphad << std::endl
2452  << "UMean: " << dUMean << std::endl
2453  << "iv punto: " << IndV << std::endl;
2454 #endif /* DEBUG */
2455 
2456  WorkVec.PutCoef(1, dCT - dM11*dVConstPrime
2457  - dL11*dVConst - dL13*dVCosine);
2458  WorkVec.PutCoef(2, dCl - dM22*dVSinePrime
2459  - dL22*dVSine);
2460  WorkVec.PutCoef(3, dCm - dM33*dVCosinePrime
2461  - dL31*dVConst - dL33*dVCosine);
2462 
2463 #ifdef USE_MPI
2464  } else {
2465  WorkVec.Resize(0);
2466 #endif /* USE_MPI */
2467  }
2468 
2469 #ifdef USE_MPI
2470  ExchangeVelocity();
2471 #endif /* USE_MPI */
2472 
2473  /* Ora la trazione non serve piu' */
2474  ResetForce();
2475 
2476 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2477  Done();
2478 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
2479 
2480  return WorkVec;
2481 }
ExternResForces Res
Definition: indvel.h:114
virtual doublereal dGetAirDensity(const Vec3 &X) const
Definition: aerodyn.cc:736
doublereal dHoverCorrection
Definition: rotor.h:70
#define M_PI
Definition: gradienttest.cc:67
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 dL33
Definition: rotor.h:678
virtual void ResetForce(void)
Definition: indvel.cc:276
doublereal dCosAlphad
Definition: rotor.h:81
Definition: matvec3.h:98
static const doublereal dM22
Definition: rotor.cc:1532
GradientExpression< UnaryExpr< FuncSin, Expr > > sin(const GradientExpression< Expr > &u)
Definition: gradient.h:2977
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
doublereal dVSine
Definition: rotor.h:671
doublereal dL31
Definition: rotor.h:677
doublereal dVConst
Definition: rotor.h:670
doublereal dL22
Definition: rotor.h:676
virtual Elem::Type GetElemType(void) const =0
doublereal dSinAlphad
Definition: rotor.h:80
virtual const Vec3 & Moment(void) const
Definition: resforces.cc:109
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
static const doublereal dM33
Definition: rotor.cc:1533
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 dL11
Definition: rotor.h:674
virtual Vec3 GetInducedVelocity(Elem::Type type, unsigned uLabel, unsigned uPnt, const Vec3 &X) const
Definition: rotor.cc:2555
doublereal dPsi0
Definition: rotor.h:79
Vec3 VCraft
Definition: rotor.h:78
#define DEBUGCOUT(msg)
Definition: myassert.h:232
doublereal dMu
Definition: rotor.h:82
virtual void GetPos(const Vec3 &X, doublereal &dr, doublereal &dp) const
Definition: rotor.cc:304
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
doublereal dVCosine
Definition: rotor.h:672
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
virtual void InitParam(bool bComputeMeanInducedVelocity=true)
Definition: rotor.cc:323
doublereal dLambda
Definition: rotor.h:83
doublereal dRadius
Definition: rotor.h:51
GradientExpression< UnaryExpr< FuncCos, Expr > > cos(const GradientExpression< Expr > &u)
Definition: gradient.h:2978
const StructNode * pRotor
Definition: rotor.h:46
doublereal dL13
Definition: rotor.h:675
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
static const doublereal dM11
Definition: rotor.cc:1529
GradientExpression< UnaryExpr< FuncTan, Expr > > tan(const GradientExpression< Expr > &u)
Definition: gradient.h:2979
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal dUMean
Definition: rotor.h:54
doublereal dChi
Definition: rotor.h:84
virtual void Resize(integer iNewSize)=0
const StructNode * pCraft
Definition: indvel.h:111

Here is the call graph for this function:

Vec3 PetersHeRotor::GetInducedVelocity ( Elem::Type  type,
unsigned  uLabel,
unsigned  uPnt,
const Vec3 X 
) const
virtual

Implements InducedVelocity.

Definition at line 2555 of file rotor.cc.

References grad::cos(), Rotor::dOmega, Rotor::dRadius, dVConst, dVCosine, dVSine, Rotor::GetPos(), Rotor::RRot3, and grad::sin().

Referenced by AssRes().

2557 {
2558 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2559  Wait();
2560 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2561 
2562  doublereal dr, dp;
2563  GetPos(X, dr, dp);
2564 
2565  return RRot3*((dVConst + dr*(dVCosine*cos(dp) + dVSine*sin(dp)))*dRadius*dOmega);
2566 };
GradientExpression< UnaryExpr< FuncSin, Expr > > sin(const GradientExpression< Expr > &u)
Definition: gradient.h:2977
Vec3 RRot3
Definition: rotor.h:77
doublereal dVSine
Definition: rotor.h:671
doublereal dVConst
Definition: rotor.h:670
doublereal dOmega
Definition: rotor.h:87
virtual void GetPos(const Vec3 &X, doublereal &dr, doublereal &dp) const
Definition: rotor.cc:304
doublereal dVCosine
Definition: rotor.h:672
doublereal dRadius
Definition: rotor.h:51
GradientExpression< UnaryExpr< FuncCos, Expr > > cos(const GradientExpression< Expr > &u)
Definition: gradient.h:2978
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

InducedVelocity::Type PetersHeRotor::GetInducedVelocityType ( void  ) const
inlinevirtual

Implements InducedVelocity.

Definition at line 760 of file rotor.h.

References InducedVelocity::DYNAMICINFLOW.

virtual unsigned int PetersHeRotor::iGetNumDof ( void  ) const
inlinevirtual

Reimplemented from Elem.

Definition at line 720 of file rotor.h.

720  {
721  return 3;
722  };
void PetersHeRotor::Init ( const StructNode pCraft,
const Mat3x3 rrot,
const StructNode pRotor,
const StructNode pGround,
ResForceSet **  ppres,
const doublereal dOR,
const doublereal dR,
unsigned int  iMaxIt,
const doublereal dTol,
const doublereal dE,
const doublereal dCH,
const doublereal dCFF,
const doublereal dVConstTmp,
const doublereal dVSineTmp,
const doublereal dVCosineTmp,
flag  fOut 
)
protectedvirtual

Definition at line 2093 of file rotor.cc.

References ASSERT, Rotor::dArea, Rotor::dForwardFlightCorrection, Rotor::dHoverCorrection, Rotor::dOmega, Rotor::dOmegaRef, Rotor::dPsi0, Rotor::dRadius, dVConst, dVCosine, dVSine, Rotor::dVTipRef, Rotor::dWeight, Rotor::Init(), M_PI, Mat3x3::pGetMat(), Vec3::pGetVec(), ExternResForces::Pole(), InducedVelocity::Res, Rotor::RRot3, Rotor::RRotTranspose, SAFENEWARR, and SAFENEWWITHCONSTRUCTOR.

Referenced by PetersHeRotor().

2109 {
2110  ASSERT(dOR > 0.);
2111  ASSERT(dR > 0.);
2112 
2113  Rotor::Init(pCraft, rrot, pRotor, pGround, ppres, dR, iMaxIt, dTol, dE, fOut);
2114 
2115  dVConst = dVConstTmp;
2116  dVSine = dVSineTmp;
2117  dVCosine = dVCosineTmp;
2118 
2119  dOmegaRef = dOR;
2121  dArea = M_PI*dRadius*dRadius;
2122 
2123  dHoverCorrection = dCH;
2124  dForwardFlightCorrection = dCFF;
2125 
2126  /* Significa che valuta la velocita' indotta media al passo corrente */
2127  dWeight = 0.;
2128 
2129 #ifdef USE_MPI
2130  if (is_parallel) {
2131  SAFENEWARR(pBlockLenght, int, 20);
2132  SAFENEWARR(pDispl, MPI::Aint, 20);
2133  for (int i = 0; i < 20; i++) {
2134  pBlockLenght[i] = 1;
2135  }
2136  for (int i = 0; i < 3; i++) {
2137  pDispl[i] = MPI::Get_address(RRot3.pGetVec()+i);
2138  }
2139  pDispl[3] = MPI::Get_address(&dVConst);
2140  pDispl[4] = MPI::Get_address(&dVSine);
2141  pDispl[5] = MPI::Get_address(&dVCosine);
2142  pDispl[6] = MPI::Get_address(&dOmega);
2143  pDispl[7] = MPI::Get_address(&dPsi0);
2144  for (int i = 8; i <= 10; i++) {
2145  pDispl[i] = MPI::Get_address(Res.Pole().pGetVec()+i-8);
2146  }
2147  for (int i = 11; i < 20; i++) {
2148  pDispl[i] = MPI::Get_address(RRotTranspose.pGetMat()+i-11);
2149  }
2150  SAFENEWWITHCONSTRUCTOR(pIndVelDataType, MPI::Datatype,
2151  MPI::Datatype(MPI::DOUBLE.Create_hindexed(20, pBlockLenght, pDispl)));
2152  pIndVelDataType->Commit();
2153  }
2154 #endif /* USE_MPI */
2155 }
ExternResForces Res
Definition: indvel.h:114
doublereal dHoverCorrection
Definition: rotor.h:70
#define M_PI
Definition: gradienttest.cc:67
doublereal dArea
Definition: rotor.h:53
doublereal dForwardFlightCorrection
Definition: rotor.h:72
Vec3 RRot3
Definition: rotor.h:77
doublereal dVSine
Definition: rotor.h:671
const Vec3 & Pole(void) const
Definition: resforces.cc:145
doublereal dVConst
Definition: rotor.h:670
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 dOmega
Definition: rotor.h:87
doublereal dPsi0
Definition: rotor.h:79
#define ASSERT(expression)
Definition: colamd.c:977
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
doublereal dVCosine
Definition: rotor.h:672
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
const doublereal * pGetMat(void) const
Definition: matvec3.h:743
doublereal dOmegaRef
Definition: rotor.h:49
const doublereal * pGetVec(void) const
Definition: matvec3.h:192
doublereal dWeight
Definition: rotor.h:68
doublereal dRadius
Definition: rotor.h:51
#define SAFENEWARR(pnt, item, sz)
Definition: mynewmem.h:701

Here is the call graph for this function:

void PetersHeRotor::Output ( OutputHandler OH) const
virtual

Reimplemented from Rotor.

Definition at line 2169 of file rotor.cc.

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

2170 {
2171  /*
2172  * FIXME: posso usare dei temporanei per il calcolo della trazione
2173  * totale per l'output, cosi' evito il giro dei cast
2174  */
2175  if (bToBeOutput()) {
2176 #ifdef USE_MPI
2177  if (is_parallel && IndVelComm.Get_size() > 1) {
2178  if (IndVelComm.Get_rank() == 0) {
2179  Vec3 TmpF(pTmpVecR), TmpM(pTmpVecR+3);
2180 
2181  OH.Rotors()
2182  << std::setw(8) << GetLabel() /* 1 */
2183  << " " << RRotTranspose*TmpF /* 2-4 */
2184  << " " << RRotTranspose*TmpM /* 5-7 */
2185  << " " << dUMean /* 8 */
2186  << " " << dVelocity /* 9 */
2187  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
2188  << " " << dMu /* 11 */
2189  << " " << dLambda /* 12 */
2190  << " " << dChi /* 13 */
2191  << " " << dPsi0 /* 14 */
2192  << " " << bUMeanRefConverged /* 15 */
2193  << " " << iCurrIter /* 16 */
2194  << " " << dVConst /* 17 */
2195  << " " << dVSine /* 18 */
2196  << " " << dVCosine /* 19 */
2197  << std::endl;
2198 
2199  for (int i = 0; ppRes && ppRes[i]; i++) {
2200  Vec3 TmpF(pTmpVecR+6+6*i);
2201  Vec3 TmpM(pTmpVecR+9+6*i);
2202 
2203  OH.Rotors()
2204  << std::setw(8) << GetLabel()
2205  << ":" << ppRes[i]->GetLabel()
2206  << " " << TmpF
2207  << " " << TmpM
2208  << std::endl;
2209  }
2210  }
2211  } else {
2212  OH.Rotors()
2213  << std::setw(8) << GetLabel() /* 1 */
2214  << " " << RRotTranspose*Res.Force() /* 2-4 */
2215  << " " << RRotTranspose*Res.Moment() /* 5-7 */
2216  << " " << dUMean /* 8 */
2217  << " " << dVelocity /* 9 */
2218  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
2219  << " " << dMu /* 11 */
2220  << " " << dLambda /* 12 */
2221  << " " << dChi /* 13 */
2222  << " " << dPsi0 /* 14 */
2223  << " " << bUMeanRefConverged /* 15 */
2224  << " " << iCurrIter /* 16 */
2225  << " " << dVConst /* 17 */
2226  << " " << dVSine /* 18 */
2227  << " " << dVCosine /* 19 */
2228  << std::endl;
2229 
2230  for (int i = 0; ppRes && ppRes[i]; i++) {
2231  OH.Rotors()
2232  << std::setw(8) << GetLabel()
2233  << ":" << ppRes[i]->GetLabel()
2234  << " " << ppRes[i]->pRes->Force()
2235  << " " << ppRes[i]->pRes->Moment()
2236  << std::endl;
2237  }
2238  }
2239 
2240 #else /* !USE_MPI */
2241  OH.Rotors()
2242  << std::setw(8) << GetLabel() /* 1 */
2243  << " " << RRotTranspose*Res.Force() /* 2-4 */
2244  << " " << RRotTranspose*Res.Moment() /* 5-7 */
2245  << " " << dUMean /* 8 */
2246  << " " << dVelocity /* 9 */
2247  << " " << atan2(dSinAlphad,dCosAlphad) /* 10 */
2248  << " " << dMu /* 11 */
2249  << " " << dLambda /* 12 */
2250  << " " << dChi /* 13 */
2251  << " " << dPsi0 /* 14 */
2252  << " " << bUMeanRefConverged /* 15 */
2253  << " " << iCurrIter /* 16 */
2254  << " " << dVConst /* 17 */
2255  << " " << dVSine /* 18 */
2256  << " " << dVCosine /* 19 */
2257  << std::endl;
2258 
2259  for (int i = 0; ppRes && ppRes[i]; i++) {
2260  OH.Rotors()
2261  << std::setw(8) << GetLabel()
2262  << ":" << ppRes[i]->GetLabel()
2263  << " " << ppRes[i]->pRes->Force()
2264  << " " << ppRes[i]->pRes->Moment()
2265  << std::endl;
2266  }
2267 #endif /* !USE_MPI */
2268  }
2269 }
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 dVSine
Definition: rotor.h:671
doublereal dVConst
Definition: rotor.h:670
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
doublereal dVCosine
Definition: rotor.h:672
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 & PetersHeRotor::Restart ( std::ostream &  out) const
virtual

Reimplemented from Rotor.

Definition at line 2511 of file rotor.cc.

References Rotor::dForwardFlightCorrection, Rotor::dHoverCorrection, Rotor::dRadius, and Rotor::Restart().

2512 {
2513  return Rotor::Restart(out) << "dynamic inflow, " << dRadius
2514  << ", correction, " << dHoverCorrection
2515  << ", " << dForwardFlightCorrection << ';' << std::endl;
2516 }
doublereal dHoverCorrection
Definition: rotor.h:70
virtual std::ostream & Restart(std::ostream &out) const
Definition: rotor.cc:535
doublereal dForwardFlightCorrection
Definition: rotor.h:72
doublereal dRadius
Definition: rotor.h:51

Here is the call graph for this function:

void PetersHeRotor::SetInitialValue ( VectorHandler X)
virtual

Reimplemented from Rotor.

Definition at line 2485 of file rotor.cc.

References NO_OP.

2486 {
2487  NO_OP;
2488 }
#define NO_OP
Definition: myassert.h:74
void PetersHeRotor::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 2493 of file rotor.cc.

References dVConst, dVCosine, dVSine, DofOwnerOwner::iGetFirstIndex(), and VectorHandler::PutCoef().

2496 {
2497  integer iFirstIndex = iGetFirstIndex();
2498 
2499  for (int iCnt = 1; iCnt <= 3; iCnt++) {
2500  XP.PutCoef(iFirstIndex + iCnt, 0.);
2501  }
2502 
2503  X.PutCoef(iFirstIndex + 1, dVConst);
2504  X.PutCoef(iFirstIndex + 2, dVSine);
2505  X.PutCoef(iFirstIndex + 3, dVCosine);
2506 }
doublereal dVSine
Definition: rotor.h:671
doublereal dVConst
Definition: rotor.h:670
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
doublereal dVCosine
Definition: rotor.h:672
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

virtual void PetersHeRotor::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 729 of file rotor.h.

729  {
730  *piNumRows = 3;
731  *piNumCols = 3;
732  };

Member Data Documentation

doublereal PetersHeRotor::dL11
protected

Definition at line 674 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal PetersHeRotor::dL13
protected

Definition at line 675 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal PetersHeRotor::dL22
protected

Definition at line 676 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal PetersHeRotor::dL31
protected

Definition at line 677 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal PetersHeRotor::dL33
protected

Definition at line 678 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal PetersHeRotor::dVConst
protected

Definition at line 670 of file rotor.h.

Referenced by AssRes(), GetInducedVelocity(), Init(), Output(), and SetValue().

doublereal PetersHeRotor::dVCosine
protected

Definition at line 672 of file rotor.h.

Referenced by AssRes(), GetInducedVelocity(), Init(), Output(), and SetValue().

doublereal PetersHeRotor::dVSine
protected

Definition at line 671 of file rotor.h.

Referenced by AssRes(), GetInducedVelocity(), Init(), Output(), and SetValue().


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