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

#include <rotor.h>

Inheritance diagram for DynamicInflowRotor:
Collaboration diagram for DynamicInflowRotor:

Public Member Functions

 DynamicInflowRotor (unsigned int uLabel, const DofOwner *pDO)
 
 DynamicInflowRotor (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 ~DynamicInflowRotor (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 543 of file rotor.h.

Constructor & Destructor Documentation

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

Definition at line 1537 of file rotor.cc.

References NO_OP.

1538 : Elem(uLabel, flag(0)),
1539 Rotor(uLabel, pDO),
1540 dVConst(0), dVSine(0), dVCosine(0),
1541 dL11(0.), dL13(0.), dL22(0.), dL31(0.), dL33(0.)
1542 {
1543  NO_OP;
1544 }
long int flag
Definition: mbdyn.h:43
doublereal dVCosine
Definition: rotor.h:547
doublereal dL22
Definition: rotor.h:551
#define NO_OP
Definition: myassert.h:74
doublereal dVConst
Definition: rotor.h:545
Rotor(unsigned int uL, const DofOwner *pDO)
Definition: rotor.cc:59
unsigned int uLabel
Definition: withlab.h:44
doublereal dL11
Definition: rotor.h:549
doublereal dVSine
Definition: rotor.h:546
doublereal dL13
Definition: rotor.h:550
doublereal dL33
Definition: rotor.h:553
doublereal dL31
Definition: rotor.h:552
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
DynamicInflowRotor::DynamicInflowRotor ( 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 1546 of file rotor.cc.

References Init().

1564 : Elem(uLabel, flag(0)),
1565 Rotor(uLabel, pDO),
1566 dVConst(0), dVSine(0), dVCosine(0),
1567 dL11(0.), dL13(0.), dL22(0.), dL31(0.), dL33(0.)
1568 {
1569  Init(pCraft, rrot, pRotor, pGround, ppres, dOR, dR,
1570  iMaxIt, dTol, dE, dCH, dCFF,
1571  dVConstTmp, dVSineTmp, dVCosineTmp, fOut);
1572 }
long int flag
Definition: mbdyn.h:43
doublereal dVCosine
Definition: rotor.h:547
doublereal dL22
Definition: rotor.h:551
doublereal dVConst
Definition: rotor.h:545
Rotor(unsigned int uL, const DofOwner *pDO)
Definition: rotor.cc:59
unsigned int uLabel
Definition: withlab.h:44
doublereal dL11
Definition: rotor.h:549
doublereal dVSine
Definition: rotor.h:546
doublereal dL13
Definition: rotor.h:550
doublereal dL33
Definition: rotor.h:553
doublereal dL31
Definition: rotor.h:552
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
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:1575

Here is the call graph for this function:

DynamicInflowRotor::~DynamicInflowRotor ( void  )
virtual

Definition at line 1640 of file rotor.cc.

References SAFEDELETE, and SAFEDELETEARR.

1641 {
1642 #ifdef USE_MPI
1643  SAFEDELETEARR(pBlockLenght);
1644  SAFEDELETEARR(pDispl);
1645  SAFEDELETE(pIndVelDataType);
1646 #endif /* USE_MPI */
1647 }
#define SAFEDELETEARR(pnt)
Definition: mynewmem.h:713
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710

Member Function Documentation

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

Reimplemented from InducedVelocity.

Definition at line 2003 of file rotor.cc.

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

2005 {
2006  /*
2007  * Gli serve la trazione ed il momento rispetto al rotore,
2008  * che si calcola da se'
2009  */
2010 #ifdef USE_MPI
2011  if (ReqV != MPI::REQUEST_NULL) {
2012  while (!ReqV.Test()) {
2013  MYSLEEP(mysleeptime);
2014  }
2015  }
2016 #endif /* USE_MPI */
2017 
2018 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2019  pthread_mutex_lock(&forces_mutex);
2020  Wait();
2021 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2022 
2023  Res.AddForces(F, M, X);
2024  if (bToBeOutput()) {
2025  InducedVelocity::AddForce(pEl, pNode, F, M, X);
2026  }
2027 
2028 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2029  pthread_mutex_unlock(&forces_mutex);
2030 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2031 }
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 & DynamicInflowRotor::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 1755 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().

1759 {
1760  DEBUGCOUT("Entering DynamicInflowRotor::AssJac()" << std::endl);
1761 
1762  WorkMat.SetNullMatrix();
1763 
1764 #ifdef USE_MPI
1765  if (is_parallel && IndVelComm.Get_rank() == 0)
1766 #endif /* USE_MPI */
1767  {
1768  SparseSubMatrixHandler& WM = WorkMat.SetSparse();
1769  integer iFirstIndex = iGetFirstIndex();
1770 
1771  WM.ResizeReset(5, 0);
1772 
1773  WM.PutItem(1, iFirstIndex + 1, iFirstIndex + 1, dM11 + dCoef*dL11);
1774  WM.PutItem(2, iFirstIndex + 3, iFirstIndex + 1, dCoef*dL31);
1775  WM.PutItem(3, iFirstIndex + 2, iFirstIndex + 2, dM22 + dCoef*dL22);
1776  WM.PutItem(4, iFirstIndex + 1, iFirstIndex + 3, dCoef*dL13);
1777  WM.PutItem(5, iFirstIndex + 3, iFirstIndex + 3, dM33 + dCoef*dL33);
1778  }
1779 
1780  return WorkMat;
1781 }
static const doublereal dM22
Definition: rotor.cc:1532
doublereal dL22
Definition: rotor.h:551
void ResizeReset(integer iNewRow, integer iNewCol)
Definition: submat.cc:1084
static const doublereal dM33
Definition: rotor.cc:1533
void PutItem(integer iSubIt, integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:997
void SetNullMatrix(void)
Definition: submat.h:1159
#define DEBUGCOUT(msg)
Definition: myassert.h:232
doublereal dL11
Definition: rotor.h:549
doublereal dL13
Definition: rotor.h:550
doublereal dL33
Definition: rotor.h:553
SparseSubMatrixHandler & SetSparse(void)
Definition: submat.h:1178
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
doublereal dL31
Definition: rotor.h:552
long int integer
Definition: colamd.c:51
static const doublereal dM11
Definition: rotor.cc:1529

Here is the call graph for this function:

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

Implements Elem.

Definition at line 1785 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.

1789 {
1790  DEBUGCOUT("Entering DynamicInflowRotor::AssRes()" << std::endl);
1791 
1792 #ifdef USE_MPI
1793  ExchangeLoads(flag(1));
1794 
1795  if (!is_parallel || IndVelComm.Get_rank() == 0)
1796 #endif /* USE_MPI */
1797  {
1798  /* Calcola parametri vari */
1799  Rotor::InitParam();
1800 
1801  WorkVec.Resize(3);
1802 
1803  integer iFirstIndex = iGetFirstIndex();
1804 
1805  WorkVec.PutRowIndex(1, iFirstIndex + 1);
1806  WorkVec.PutRowIndex(2, iFirstIndex + 2);
1807  WorkVec.PutRowIndex(3, iFirstIndex + 3);
1808 
1809  dVConst = XCurr(iFirstIndex + 1);
1810  dVSine = XCurr(iFirstIndex + 2);
1811  dVCosine = XCurr(iFirstIndex + 3);
1812 
1813  doublereal dVConstPrime = XPrimeCurr(iFirstIndex + 1);
1814  doublereal dVSinePrime = XPrimeCurr(iFirstIndex + 2);
1815  doublereal dVCosinePrime = XPrimeCurr(iFirstIndex + 3);
1816 
1817  doublereal dCT = 0.;
1818  doublereal dCl = 0.;
1819  doublereal dCm = 0.;
1820 
1821  /*
1822  * Attenzione: moltiplico tutte le equazioni per dOmega
1823  * (ovvero, i coefficienti CT, CL e CM sono divisi
1824  * per dOmega anziche' dOmega^2)
1825  */
1826 
1827  dL11 = 0.;
1828  dL13 = 0.;
1829  dL22 = 0.;
1830  dL31 = 0.;
1831  dL33 = 0.;
1832 
1834  if (dDim > std::numeric_limits<doublereal>::epsilon()) {
1835  /*
1836  * From Claudio Monteggia:
1837  *
1838  * Ct
1839  * Um = -------------------------------------
1840  * sqrt( lambda^2 / KH^4 + mu^2 / KF^2)
1841  */
1842  doublereal dLambdaTmp
1845 
1846  doublereal dVT
1847  = sqrt(dLambdaTmp*dLambdaTmp + dMuTmp*dMuTmp);
1848  doublereal dVm = 0.;
1849  if (dVT > dVTipTreshold*dVTipRef) {
1850  dVm = (dMuTmp*dMuTmp + dLambdaTmp*(dLambdaTmp + dVConst))/dVT;
1851  }
1852 
1853  /*
1854  * dUMean is just for output;
1855  */
1857 
1858  /* Trazione nel sistema rotore */
1859  doublereal dT = RRot3*Res.Force();
1860 
1861  /* Momento nel sistema rotore-vento */
1862  doublereal dCosP = cos(dPsi0);
1863  doublereal dSinP = sin(dPsi0);
1864  Mat3x3 RTmp( dCosP, -dSinP, 0.,
1865  dSinP, dCosP, 0.,
1866  0., 0., 1.);
1867 
1868  Vec3 M(RTmp*(RRotTranspose*Res.Moment()));
1869 
1870  /* Thrust, roll and pitch coefficients */
1871  dCT = dT/dDim;
1872  dDim *= dRadius;
1873  dCl = - M(1)/dDim;
1874  dCm = - M(2)/dDim;
1875 
1876  if (dVT > std::numeric_limits<doublereal>::epsilon()
1877  && dVm > std::numeric_limits<doublereal>::epsilon())
1878  {
1879 
1880  /* Matrix coefficients */
1881  /* FIXME: divide by 0? */
1882  doublereal dl11 = .5/dVT;
1883  /* FIXME: divide by 0? */
1884  doublereal d = 15./64.*M_PI*tan(dChi/2.);
1885  /* FIXME: divide by 0? */
1886  doublereal dl13 = d/dVm;
1887  /* FIXME: divide by 0? */
1888  doublereal dl31 = d/dVT;
1889 
1890  doublereal dCosChi2 = cos(dChi/2.);
1891  d = 2.*dCosChi2*dCosChi2;
1892  /* FIXME: divide by 0? */
1893  doublereal dl22 = -4./(d*dVm);
1894  /* FIXME: divide by 0? */
1895  doublereal dl33 = -4.*(d - 1)/(d*dVm);
1896 
1897  d = dl11*dl33 - dl31*dl13;
1898  /* FIXME: divide by 0? */
1899  dL11 = dOmega*dl33/d;
1900  dL31 = -dOmega*dl31/d;
1901  dL13 = -dOmega*dl13/d;
1902  dL33 = dOmega*dl11/d;
1903  dL22 = dOmega/dl22;
1904  }
1905  }
1906 
1907 #ifdef DEBUG
1908  /* Prova: */
1909  static int i = -1;
1910  int iv[] = { 0, 1, 0, -1, 0 };
1911  if (++i == 4) {
1912  i = 0;
1913  }
1914  Vec3 XTmp(pRotor->GetXCurr()+pCraft->GetRCurr()*Vec3(dRadius*iv[i],dRadius*iv[i+1],0.));
1915  doublereal dPsiTmp, dXTmp;
1916  GetPos(XTmp, dXTmp, dPsiTmp);
1917  Vec3 IndV = GetInducedVelocity(GetElemType(), GetLabel(), 0, XTmp);
1918  std::cout
1919  << "X rotore: " << pRotor->GetXCurr() << std::endl
1920  << "V rotore: " << VCraft << std::endl
1921  << "X punto: " << XTmp << std::endl
1922  << "Omega: " << dOmega << std::endl
1923  << "Velocita': " << dVelocity << std::endl
1924  << "Psi0: " << dPsi0 << " ("
1925  << dPsi0*180./M_PI << " deg)" << std::endl
1926  << "Psi punto: " << dPsiTmp << " ("
1927  << dPsiTmp*180./M_PI << " deg)" << std::endl
1928  << "Raggio: " << dRadius << std::endl
1929  << "r punto: " << dXTmp << std::endl
1930  << "mu: " << dMu << std::endl
1931  << "lambda: " << dLambda << std::endl
1932  << "cos(ad): " << dCosAlphad << std::endl
1933  << "sin(ad): " << dSinAlphad << std::endl
1934  << "UMean: " << dUMean << std::endl
1935  << "iv punto: " << IndV << std::endl;
1936 #endif /* DEBUG */
1937 
1938  WorkVec.PutCoef(1, dCT - dM11*dVConstPrime
1939  - dL11*dVConst - dL13*dVCosine);
1940  WorkVec.PutCoef(2, dCl - dM22*dVSinePrime
1941  - dL22*dVSine);
1942  WorkVec.PutCoef(3, dCm - dM33*dVCosinePrime
1943  - dL31*dVConst - dL33*dVCosine);
1944 
1945 #ifdef USE_MPI
1946  } else {
1947  WorkVec.Resize(0);
1948 #endif /* USE_MPI */
1949  }
1950 
1951 #ifdef USE_MPI
1952  ExchangeVelocity();
1953 #endif /* USE_MPI */
1954 
1955  /* Ora la trazione non serve piu' */
1956  ResetForce();
1957 
1958 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
1959  Done();
1960 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
1961 
1962  return WorkVec;
1963 }
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
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 dVCosine
Definition: rotor.h:547
doublereal dL22
Definition: rotor.h:551
virtual Elem::Type GetElemType(void) const =0
doublereal dSinAlphad
Definition: rotor.h:80
virtual const Vec3 & Moment(void) const
Definition: resforces.cc:109
doublereal dVConst
Definition: rotor.h:545
virtual Vec3 GetInducedVelocity(Elem::Type type, unsigned uLabel, unsigned uPnt, const Vec3 &X) const
Definition: rotor.cc:2037
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 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 dL11
Definition: rotor.h:549
doublereal dVSine
Definition: rotor.h:546
doublereal dVTipRef
Definition: rotor.h:52
Mat3x3 RRotTranspose
Definition: rotor.h:75
doublereal dL13
Definition: rotor.h:550
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 dL33
Definition: rotor.h:553
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
doublereal dL31
Definition: rotor.h:552
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 DynamicInflowRotor::GetInducedVelocity ( Elem::Type  type,
unsigned  uLabel,
unsigned  uPnt,
const Vec3 X 
) const
virtual

Implements InducedVelocity.

Definition at line 2037 of file rotor.cc.

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

Referenced by AssRes().

2039 {
2040 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
2041  Wait();
2042 #endif /* USE_MULTITHREAD && MBDYN_X_MT_ASSRES */
2043 
2044  doublereal dr, dp;
2045  GetPos(X, dr, dp);
2046 
2047  return RRot3*((dVConst + dr*(dVCosine*cos(dp) + dVSine*sin(dp)))*dRadius*dOmega);
2048 };
GradientExpression< UnaryExpr< FuncSin, Expr > > sin(const GradientExpression< Expr > &u)
Definition: gradient.h:2977
Vec3 RRot3
Definition: rotor.h:77
doublereal dVCosine
Definition: rotor.h:547
doublereal dVConst
Definition: rotor.h:545
doublereal dOmega
Definition: rotor.h:87
virtual void GetPos(const Vec3 &X, doublereal &dr, doublereal &dp) const
Definition: rotor.cc:304
doublereal dVSine
Definition: rotor.h:546
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 DynamicInflowRotor::GetInducedVelocityType ( void  ) const
inlinevirtual

Implements InducedVelocity.

Definition at line 635 of file rotor.h.

References InducedVelocity::DYNAMICINFLOW.

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

Reimplemented from Elem.

Definition at line 595 of file rotor.h.

595  {
596  return 3;
597  };
void DynamicInflowRotor::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 1575 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 DynamicInflowRotor().

1591 {
1592  ASSERT(dOR > 0.);
1593  ASSERT(dR > 0.);
1594 
1595  Rotor::Init(pCraft, rrot, pRotor, pGround, ppres, dR, iMaxIt, dTol, dE, fOut);
1596 
1597  dVConst = dVConstTmp;
1598  dVSine = dVSineTmp;
1599  dVCosine = dVCosineTmp;
1600 
1601  dOmegaRef = dOR;
1603  dArea = M_PI*dRadius*dRadius;
1604 
1605  dHoverCorrection = dCH;
1606  dForwardFlightCorrection = dCFF;
1607 
1608  /* Significa che valuta la velocita' indotta media al passo corrente */
1609  dWeight = 0.;
1610 
1611 #ifdef USE_MPI
1612  if (is_parallel) {
1613  SAFENEWARR(pBlockLenght, int, 20);
1614  SAFENEWARR(pDispl, MPI::Aint, 20);
1615  for (int i = 0; i < 20; i++) {
1616  pBlockLenght[i] = 1;
1617  }
1618  for (int i = 0; i < 3; i++) {
1619  pDispl[i] = MPI::Get_address(RRot3.pGetVec()+i);
1620  }
1621  pDispl[3] = MPI::Get_address(&dVConst);
1622  pDispl[4] = MPI::Get_address(&dVSine);
1623  pDispl[5] = MPI::Get_address(&dVCosine);
1624  pDispl[6] = MPI::Get_address(&dOmega);
1625  pDispl[7] = MPI::Get_address(&dPsi0);
1626  for (int i = 8; i <= 10; i++) {
1627  pDispl[i] = MPI::Get_address(Res.Pole().pGetVec()+i-8);
1628  }
1629  for (int i = 11; i < 20; i++) {
1630  pDispl[i] = MPI::Get_address(RRotTranspose.pGetMat()+i-11);
1631  }
1632  SAFENEWWITHCONSTRUCTOR(pIndVelDataType, MPI::Datatype,
1633  MPI::Datatype(MPI::DOUBLE.Create_hindexed(20, pBlockLenght, pDispl)));
1634  pIndVelDataType->Commit();
1635  }
1636 #endif /* USE_MPI */
1637 }
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 dVCosine
Definition: rotor.h:547
const Vec3 & Pole(void) const
Definition: resforces.cc:145
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 dVConst
Definition: rotor.h:545
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 dVSine
Definition: rotor.h:546
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 DynamicInflowRotor::Output ( OutputHandler OH) const
virtual

Reimplemented from Rotor.

Definition at line 1651 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.

1652 {
1653  /*
1654  * FIXME: posso usare dei temporanei per il calcolo della trazione
1655  * totale per l'output, cosi' evito il giro dei cast
1656  */
1657  if (bToBeOutput()) {
1658 #ifdef USE_MPI
1659  if (is_parallel && IndVelComm.Get_size() > 1) {
1660  if (IndVelComm.Get_rank() == 0) {
1661  Vec3 TmpF(pTmpVecR), TmpM(pTmpVecR+3);
1662 
1663  OH.Rotors()
1664  << std::setw(8) << GetLabel() /* 1 */
1665  << " " << RRotTranspose*TmpF /* 2-4 */
1666  << " " << RRotTranspose*TmpM /* 5-7 */
1667  << " " << dUMean /* 8 */
1668  << " " << dVelocity /* 9 */
1669  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
1670  << " " << dMu /* 11 */
1671  << " " << dLambda /* 12 */
1672  << " " << dChi /* 13 */
1673  << " " << dPsi0 /* 14 */
1674  << " " << bUMeanRefConverged /* 15 */
1675  << " " << iCurrIter /* 16 */
1676  << " " << dVConst /* 17 */
1677  << " " << dVSine /* 18 */
1678  << " " << dVCosine /* 19 */
1679  << std::endl;
1680 
1681  for (int i = 0; ppRes && ppRes[i]; i++) {
1682  Vec3 TmpF(pTmpVecR+6+6*i);
1683  Vec3 TmpM(pTmpVecR+9+6*i);
1684 
1685  OH.Rotors()
1686  << std::setw(8) << GetLabel()
1687  << ":" << ppRes[i]->GetLabel()
1688  << " " << TmpF
1689  << " " << TmpM
1690  << std::endl;
1691  }
1692  }
1693  } else {
1694  OH.Rotors()
1695  << std::setw(8) << GetLabel() /* 1 */
1696  << " " << RRotTranspose*Res.Force() /* 2-4 */
1697  << " " << RRotTranspose*Res.Moment() /* 5-7 */
1698  << " " << dUMean /* 8 */
1699  << " " << dVelocity /* 9 */
1700  << " " << atan2(dSinAlphad, dCosAlphad) /* 10 */
1701  << " " << dMu /* 11 */
1702  << " " << dLambda /* 12 */
1703  << " " << dChi /* 13 */
1704  << " " << dPsi0 /* 14 */
1705  << " " << bUMeanRefConverged /* 15 */
1706  << " " << iCurrIter /* 16 */
1707  << " " << dVConst /* 17 */
1708  << " " << dVSine /* 18 */
1709  << " " << dVCosine /* 19 */
1710  << std::endl;
1711 
1712  for (int i = 0; ppRes && ppRes[i]; i++) {
1713  OH.Rotors()
1714  << std::setw(8) << GetLabel()
1715  << ":" << ppRes[i]->GetLabel()
1716  << " " << ppRes[i]->pRes->Force()
1717  << " " << ppRes[i]->pRes->Moment()
1718  << std::endl;
1719  }
1720  }
1721 
1722 #else /* !USE_MPI */
1723  OH.Rotors()
1724  << std::setw(8) << GetLabel() /* 1 */
1725  << " " << RRotTranspose*Res.Force() /* 2-4 */
1726  << " " << RRotTranspose*Res.Moment() /* 5-7 */
1727  << " " << dUMean /* 8 */
1728  << " " << dVelocity /* 9 */
1729  << " " << atan2(dSinAlphad,dCosAlphad) /* 10 */
1730  << " " << dMu /* 11 */
1731  << " " << dLambda /* 12 */
1732  << " " << dChi /* 13 */
1733  << " " << dPsi0 /* 14 */
1734  << " " << bUMeanRefConverged /* 15 */
1735  << " " << iCurrIter /* 16 */
1736  << " " << dVConst /* 17 */
1737  << " " << dVSine /* 18 */
1738  << " " << dVCosine /* 19 */
1739  << std::endl;
1740 
1741  for (int i = 0; ppRes && ppRes[i]; i++) {
1742  OH.Rotors()
1743  << std::setw(8) << GetLabel()
1744  << ":" << ppRes[i]->GetLabel()
1745  << " " << ppRes[i]->pRes->Force()
1746  << " " << ppRes[i]->pRes->Moment()
1747  << std::endl;
1748  }
1749 #endif /* !USE_MPI */
1750  }
1751 }
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 dVCosine
Definition: rotor.h:547
doublereal dSinAlphad
Definition: rotor.h:80
virtual const Vec3 & Moment(void) const
Definition: resforces.cc:109
doublereal dVConst
Definition: rotor.h:545
bool bUMeanRefConverged
Definition: rotor.h:63
doublereal dPsi0
Definition: rotor.h:79
doublereal dMu
Definition: rotor.h:82
doublereal dVSine
Definition: rotor.h:546
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 & DynamicInflowRotor::Restart ( std::ostream &  out) const
virtual

Reimplemented from Rotor.

Definition at line 1993 of file rotor.cc.

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

1994 {
1995  return Rotor::Restart(out) << "dynamic inflow, " << dRadius
1996  << ", correction, " << dHoverCorrection
1997  << ", " << dForwardFlightCorrection << ';' << std::endl;
1998 }
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 DynamicInflowRotor::SetInitialValue ( VectorHandler X)
virtual

Reimplemented from Rotor.

Definition at line 1967 of file rotor.cc.

References NO_OP.

1968 {
1969  NO_OP;
1970 }
#define NO_OP
Definition: myassert.h:74
void DynamicInflowRotor::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 1975 of file rotor.cc.

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

1978 {
1979  integer iFirstIndex = iGetFirstIndex();
1980 
1981  for (int iCnt = 1; iCnt <= 3; iCnt++) {
1982  XP.PutCoef(iFirstIndex + iCnt, 0.);
1983  }
1984 
1985  X.PutCoef(iFirstIndex + 1, dVConst);
1986  X.PutCoef(iFirstIndex + 2, dVSine);
1987  X.PutCoef(iFirstIndex + 3, dVCosine);
1988 }
doublereal dVCosine
Definition: rotor.h:547
doublereal dVConst
Definition: rotor.h:545
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
doublereal dVSine
Definition: rotor.h:546
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 DynamicInflowRotor::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 604 of file rotor.h.

604  {
605  *piNumRows = 3;
606  *piNumCols = 3;
607  };

Member Data Documentation

doublereal DynamicInflowRotor::dL11
protected

Definition at line 549 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal DynamicInflowRotor::dL13
protected

Definition at line 550 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal DynamicInflowRotor::dL22
protected

Definition at line 551 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal DynamicInflowRotor::dL31
protected

Definition at line 552 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal DynamicInflowRotor::dL33
protected

Definition at line 553 of file rotor.h.

Referenced by AssJac(), and AssRes().

doublereal DynamicInflowRotor::dVConst
protected

Definition at line 545 of file rotor.h.

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

doublereal DynamicInflowRotor::dVCosine
protected

Definition at line 547 of file rotor.h.

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

doublereal DynamicInflowRotor::dVSine
protected

Definition at line 546 of file rotor.h.

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


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