MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
AeroDynModule Class Reference
Inheritance diagram for AeroDynModule:
Collaboration diagram for AeroDynModule:

Classes

struct  AeroNode
 

Public Member Functions

const StructNodepGetNacelleNode (void) const
 
const StructNodepGetHubNode (void) const
 
void SetRotorSpeed (doublereal Omega)
 
doublereal dGetHubTowerXYDistance (void) const
 
F_INTEGER iGetNumBlades (void) const
 
F_INTEGER iGetCurrBlade (void) const
 
const Mat3x3GetCurrBladeR (void) const
 
F_INTEGER iGetNumBladeElems (void) const
 
F_INTEGER iGetCurrBladeElem (void) const
 
const StructNodepGetCurrBladeNode (void) const
 
doublereal dGetCurrBladeNodeBuiltinTwist (void) const
 
void SetCurrBladeNodePITNOW (doublereal PITNOW)
 
doublereal dGetCurrBladeNodePITNOW (void) const
 
const Mat3x3GetCurrBladeNodeRa (void) const
 
 AeroDynModule (unsigned uLabel, const DofOwner *pDO, DataManager *pDM, MBDynParser &HP)
 
 ~AeroDynModule (void)
 
unsigned int iGetNumDof (void) const
 
DofOrder::Order GetDofType (unsigned int i) const
 
void Output (OutputHandler &OH) const
 
std::ostream & Restart (std::ostream &out) const
 
void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
unsigned int iGetInitialNumDof (void) const
 
void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *h=0)
 
unsigned int iGetNumPrivData (void) const
 
int GetNumConnectedNodes (void) const
 
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 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)
 
- 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 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 unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- 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 UserDefinedElem
 UserDefinedElem (unsigned uLabel, const DofOwner *pDO)
 
virtual ~UserDefinedElem (void)
 
bool NeedsAirProperties (void) const
 
void NeedsAirProperties (bool yesno)
 
virtual Elem::Type GetElemType (void) const
 
virtual AerodynamicElem::Type GetAerodynamicElemType (void) const
 
- Public Member Functions inherited from InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 
- Public Member Functions inherited from AerodynamicElem
 AerodynamicElem (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~AerodynamicElem (void)
 
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
 
virtual void SetInitialValue (VectorHandler &X)
 
- 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 ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) const
 

Private Attributes

StructNodepNacelle
 
StructNodepHub
 
integer nblades
 
integer nelems
 
doublereal Hub_Tower_xy_distance
 
std::vector< AeroNodenodes
 
std::vector< Mat3x3bladeR
 
std::string ofname
 
std::ofstream out
 
Vec3 TF
 
Vec3 TM
 
Vec3 TF_h
 
Vec3 TM_h
 
doublereal Thrust
 
doublereal Torque
 
doublereal Rotor_speed
 
F_LOGICAL FirstLoop
 
F_INTEGER elem
 
F_INTEGER c_elem
 
F_INTEGER c_blade
 
F_REAL rlocal
 
F_REAL r_hub
 
F_REAL r_rotor
 
bool bFirst
 
DriveOwner Time
 
doublereal dOldTime
 
doublereal dCurTime
 
F_REAL dDT
 
DriveOwner FSF
 

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
}
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from UserDefinedElem
bool needsAirProperties
 
- Protected Attributes inherited from AirPropOwner
const AirPropertiespAirProperties
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Detailed Description

Definition at line 72 of file module-aerodyn.cc.

Constructor & Destructor Documentation

AeroDynModule::AeroDynModule ( unsigned  uLabel,
const DofOwner pDO,
DataManager pDM,
MBDynParser HP 
)

Definition at line 227 of file module-aerodyn.cc.

References bladeR, c_elem, dCurTime, DriveOwner::dGet(), elem, Eye3, FirstLoop, FSF, MBDynParser::GetDriveCaller(), IncludeParser::GetFileName(), HighParser::GetInt(), WithLabel::GetLabel(), IncludeParser::GetLineData(), MBDynParser::GetPosRel(), StructNode::GetRCurr(), HighParser::GetReal(), MBDynParser::GetRotRel(), HighParser::GetStringWithDelims(), StructDispNode::GetXCurr(), Hub_Tower_xy_distance, HighParser::IsKeyWord(), mbdyn_ad_inputgate(), MBDYN_EXCEPT_ARGS, mbdyn_get_hl_const(), mbdyn_get_tl_const(), mbdyn_init(), mbdyn_sim_time(), mbdyn_true(), module_aerodyn, Mat3x3::MulTV(), nblades, nelems, nodes, Vec3::Norm(), ofname, out, DataManager::pGetDrvHdl(), pHub, pNacelle, r_hub, r_rotor, DataManager::ReadNode(), rlocal, DriveOwner::Set(), Node::STRUCTURAL, Time, RotManip::VecRot(), and Zero3.

232 : Elem(uLabel, 0),
233 UserDefinedElem(uLabel, pDO),
234 bFirst(true)
235 {
236  if (HP.IsKeyWord("help")) {
237  /* NOTE: add help message */
238  silent_cout(
239  "Module: AeroDyn" << std::endl
240  << std::endl
241  << "Author: Fanzhong Meng, Pierangelo Masarati" << std::endl
242  << std::endl
243  << "This is the MBDyn interface to AeroDyn, the aerodynamic routines" << std::endl
244  << "developed by NREL <http://www.nrel.gov/> to model the aerodynamic" << std::endl
245  << "forces acting on wind turbines" << std::endl
246  << std::endl
247  << "usage:" << std::endl
248  << "#Nacelle node; requirements:" << std::endl
249  << "#\t\t- axis 3 is the shaft axis, pointing downstream the wind" << std::endl
250  << "\t<nacelle node label> ," << std::endl
251  << "\t<hub node label> ," << std::endl
252  << "\t<pylon top-hub xy distance> ," << std::endl
253  << "\t<hub radius> ," << std::endl
254  << "\t<rotor radius> ," << std::endl
255  << "\t<number of blades> ," << std::endl
256  << "\t<number of elements per blade> ," << std::endl
257  << "\t# for each blade..." << std::endl
258  << "\t#\t- axis 1 in the blade spanwise direction, towards blade tip" << std::endl
259  << "\t#\t- axis 2 in coord direction, towards leading edge" << std::endl
260  << "\t#\t- axis 3 in thickness direction, towards low pressure side" << std::endl
261  << "\t\t<i-th blade root orientation matrix> ," << std::endl
262  << "\t\t# for each blade element..." << std::endl
263  << "\t\t\t<i-th blade j-th node label>" << std::endl
264  << "\t\t\t[ , orientation , <i-th blade j-th node orientation> ]" << std::endl
265  << "\t[ , force scale factor , (DriveCaller)<factor> ]" << std::endl
266  << "\t[ , output file name , \"<file name>\" ]" << std::endl
267  << "\t[ , AeroDyn input file name , \"<file name>\" ]" << std::endl
268  << "\t[ , element file name , \"<file name>\" ]" << std::endl
269  );
270  }
271 
272  if (::module_aerodyn != 0) {
273  silent_cerr("AeroDynModule::AeroDynModule(" << uLabel << "): "
274  "AeroDyn already in use" << std::endl);
276  }
277 
278  /* read nacelle node */
279  pNacelle = dynamic_cast<StructNode *>(pDM->ReadNode(HP, Node::STRUCTURAL));
280  if (pNacelle == 0) {
281  silent_cerr("AeroDynModule(" << GetLabel() << "): "
282  "nacelle node not defined "
283  "at line " << HP.GetLineData() << std::endl);
285  }
286 
287  /* read hub node */
288  pHub = dynamic_cast<StructNode *>(pDM->ReadNode(HP, Node::STRUCTURAL));
289  if (pHub == 0) {
290  silent_cerr("AeroDynModule(" << GetLabel() << "): "
291  "hub node not defined "
292  "at line " << HP.GetLineData() << std::endl);
294  }
295 
297 
298  r_hub = HP.GetReal();
299 
300  r_rotor = HP.GetReal();
301 
302  /*
303  * Initialize AeroDyn package
304  *
305  * FIXME: does it return an error code?
306  */
307  char Version[26 + 1];
308  snprintf(Version, sizeof(Version), "(%s)", VERSION);
309  for (unsigned i = strlen(Version); i < sizeof(Version); i++) {
310  Version[i] = ' ';
311  }
312  Version[sizeof(Version) - 1] = '\0';
313 
314  // number of blades
315  F_INTEGER NBlades = HP.GetInt();
316  if (NBlades <= 0) {
317  silent_cerr("AeroDynModule(" << GetLabel() << "): "
318  "invalid number of blades " << NBlades
319  << " at line " << HP.GetLineData()
320  << std::endl);
322  }
323 
324  // number of elements per blade
325  F_INTEGER NElems = HP.GetInt();
326  if (NElems <= 0) {
327  silent_cerr("AeroDynModule(" << GetLabel() << "): "
328  "invalid number of elements per blade " << NElems
329  << " at line " << HP.GetLineData()
330  << std::endl);
332  }
333 
334  nblades = NBlades;
335  nelems = NElems;
336 
337  // get blade root orientation(without pitch angle).
338 
339  nodes.resize(NBlades*NElems);
340  bladeR.resize(NBlades);
341  ReferenceFrame rf(pHub);
342  for (elem = 0; elem < NBlades*NElems; elem++) {
343  if ((elem % NElems) == 0) {
344  /*
345  * Get the orientation matrix of blade root with respect to hub reference frame
346  */
347  bladeR[elem/NElems] = HP.GetRotRel(rf);
348 #if 0
349  std::cerr << "Root[" << elem/NElems << "] Rotation Matrix:" << bladeR[elem/NElems] << std::endl;
350  std::cerr << "Hub Rotation Matrix:" << pHub->GetRCurr() << std::endl;
351  std::cerr << "Nacelle Rotation Matrix:" << pNacelle->GetRCurr() << std::endl<< std::endl;
352 #endif
353  }
354 
355  nodes[elem].pNode = dynamic_cast<StructNode *>(pDM->ReadNode(HP, Node::STRUCTURAL));
356 
357  // (optional) aerodynamics offset with respect to the node,
358  // constant in the reference frame of the node
359  if (HP.IsKeyWord("position")) {
360  nodes[elem].f = HP.GetPosRel(ReferenceFrame(nodes[elem].pNode));
361 
362  } else {
363  nodes[elem].f = Zero3;
364  }
365 
366  // (optional) relative orientation between the aerodynamics
367  // and the node
368  if (HP.IsKeyWord("orientation")) {
369  nodes[elem].Ra = HP.GetRotRel(ReferenceFrame(nodes[elem].pNode));
370  // built-in twist: the component about blade axis 1
371  // (x) of the relative orientation between
372  // the aerodynamics and the node
373  Vec3 Twist(RotManip::VecRot(nodes[elem].Ra));
374  nodes[elem].dBuiltInTwist = -Twist(1);
375 
376  } else {
377  nodes[elem].Ra = Eye3;
378  nodes[elem].dBuiltInTwist = 0.;
379  }
380  }
381 
382  if (HP.IsKeyWord("force" "scale" "factor")) {
383  FSF.Set(HP.GetDriveCaller());
384 
385  } else {
386  FSF.Set(new OneDriveCaller);
387  }
388 
389  if (HP.IsKeyWord("output" "file" "name")) {
390  const char *ofname = HP.GetFileName();
391  if (ofname == 0) {
392  silent_cerr("AeroDynModule(" << GetLabel() << "): "
393  "unable to get file name "
394  "at line " << HP.GetLineData()
395  << std::endl);
397  }
398  ofname = ofname;
399  out.open(ofname);
400  if (!out) {
401  silent_cerr("AeroDynModule(" << GetLabel() << "): "
402  "unable to open file \"" << ofname << "\" "
403  "at line " << HP.GetLineData()
404  << std::endl);
406  } else {
407  out << std::setw(16) << "Time s"
408  << std::setw(16) << "Thrust kN"
409  << std::setw(16) << "Torque kNm"
410  << std::setw(16) << "R.Speed Rad/s"
411  << std::setw(16) << "Power kW"
412  << std::endl;
413  }
414  }
415 
416  __FC_DECL__(mbdyn_init)(Version, &NBlades, &r_rotor);
417 
418  std::string input_file_name;
419  std::string elem_file_name;
420 
421  if (HP.IsKeyWord("input" "file" "name")) {
422  const char *fname = HP.GetStringWithDelims();
423  if (fname == 0) {
424  silent_cerr("unable to get input file name "
425  "at line " << HP.GetLineData() << std::endl);
427  }
428  input_file_name = fname;
429  }
430 
431  if (HP.IsKeyWord("element" "file" "name")) {
432  const char *fname = HP.GetStringWithDelims();
433  if (fname == 0) {
434  silent_cerr("unable to get element file name "
435  "at line " << HP.GetLineData() << std::endl);
437  }
438  elem_file_name = fname;
439  }
440 
441  F_INTEGER input_file_name_len = input_file_name.size();
442  F_INTEGER elem_file_name_len = elem_file_name.size();
443  int rc = __FC_DECL__(mbdyn_ad_inputgate)((F_CHAR *)input_file_name.c_str(), &input_file_name_len,
444  (F_CHAR *)elem_file_name.c_str(), &elem_file_name_len);
445  if (rc != 0) {
446  silent_cerr("AeroDynModule(" << GetLabel() << "): "
447  "initialization failed "
448  "(err=" << rc << ")" << std::endl);
450  }
451 
452  (void)__FC_DECL__(mbdyn_true)(&FirstLoop);
453 
454  // Calculate the Tip and Hub loss constants for AeroDyn.
455  for (elem = 0; elem < nelems; elem++) {
456  const Vec3& X_node = nodes[elem].pNode->GetXCurr();
457  const Vec3& X_hub = pHub->GetXCurr();
458  const Mat3x3& R_nacelle = pNacelle->GetRCurr();
459  Vec3 d = R_nacelle.MulTV(X_node - X_hub);
460  rlocal = (F_REAL)d.Norm();
461  c_elem = elem + 1;
462  __FC_DECL__(mbdyn_get_tl_const)(&rlocal, &c_elem);
463  __FC_DECL__(mbdyn_get_hl_const)(&rlocal, &c_elem, &r_hub);
464  }
465 
466  // FIXME: only needed when Beddoes and also Dynamic Inflow model are enabled
467  Time.Set(new TimeDriveCaller(pDM->pGetDrvHdl()));
468  dCurTime = Time.dGet();
469  (void)__FC_DECL__(mbdyn_sim_time)(&dCurTime);
470 
471  ::module_aerodyn = this;
472 }
F_LOGICAL FirstLoop
Mat3x3 GetRotRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1795
const Vec3 Zero3(0., 0., 0.)
std::ofstream out
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
int __FC_DECL__() mbdyn_true(F_LOGICAL *val)
std::vector< Mat3x3 > bladeR
virtual integer GetInt(integer iDefval=0)
Definition: parser.cc:1050
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
std::string ofname
doublereal Norm(void) const
Definition: matvec3.h:263
StructNode * pHub
doublereal dCurTime
static AeroDynModule * module_aerodyn
int __FC_DECL__() mbdyn_init(F_CHAR *Version, F_INTEGER *nblades, F_REAL *rotradius)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
virtual const char * GetFileName(enum Delims Del=DEFAULTDELIM)
Definition: parsinc.cc:673
const DriveHandler * pGetDrvHdl(void) const
Definition: dataman.h:340
std::vector< AeroNode > nodes
Vec3 VecRot(const Mat3x3 &Phi)
Definition: Rot.cc:136
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
int __FC_DECL__() mbdyn_sim_time(doublereal *c_time)
Vec3 GetPosRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1331
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
virtual const char * GetStringWithDelims(enum Delims Del=DEFAULTDELIM, bool escape=true)
Definition: parser.cc:1228
StructNode * pNacelle
unsigned int uLabel
Definition: withlab.h:44
char F_CHAR
Definition: NREL_AeroDyn.h:64
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
F_INTEGER c_elem
int __FC_DECL__() mbdyn_get_tl_const(F_REAL *RLOCAL, F_INTEGER *Cur_elem)
long int F_INTEGER
Definition: NREL_AeroDyn.h:65
void Set(const DriveCaller *pDC)
Definition: drive.cc:647
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
UserDefinedElem(unsigned uLabel, const DofOwner *pDO)
Definition: userelem.cc:152
DriveOwner FSF
DriveCaller * GetDriveCaller(bool bDeferred=false)
Definition: mbpar.cc:2033
int __FC_DECL__() mbdyn_ad_inputgate(F_CHAR *ifname, F_INTEGER *ifnamelen, F_CHAR *efname, F_INTEGER *efnamelen)
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
virtual HighParser::ErrOut GetLineData(void) const
Definition: parsinc.cc:697
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Node * ReadNode(MBDynParser &HP, Node::Type type) const
Definition: dataman3.cc:2309
DriveOwner Time
int __FC_DECL__() mbdyn_get_hl_const(F_REAL *RLOCAL, F_INTEGER *Cur_elem, F_REAL *RHub)
doublereal Hub_Tower_xy_distance
virtual doublereal GetReal(const doublereal &dDefval=0.0)
Definition: parser.cc:1056

Here is the call graph for this function:

AeroDynModule::~AeroDynModule ( void  )

Definition at line 474 of file module-aerodyn.cc.

References NO_OP.

475 {
476  NO_OP;
477 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Reimplemented from SimulationEntity.

Definition at line 729 of file module-aerodyn.cc.

References DriveOwner::dGet(), dOldTime, and Time.

732 {
733  dOldTime = Time.dGet();
734 }
doublereal dOldTime
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
DriveOwner Time

Here is the call graph for this function:

void AeroDynModule::AfterPredict ( VectorHandler X,
VectorHandler XP 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 705 of file module-aerodyn.cc.

References bFirst, dCurTime, dDT, DriveOwner::dGet(), dOldTime, mbdyn_sim_time(), mbdyn_time_step(), and Time.

706 {
707  bFirst = true;
708 
709  /*
710  * Get the current simulation time and time step!
711  * MENG: 19 June 2008.
712  */
713  dDT = Time.dGet() - dOldTime;
714  dCurTime = Time.dGet();
715  (void)__FC_DECL__(mbdyn_sim_time)(&dCurTime);
716  (void)__FC_DECL__(mbdyn_time_step)(&dDT);
717 }
doublereal dCurTime
doublereal dOldTime
int __FC_DECL__() mbdyn_sim_time(doublereal *c_time)
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
DriveOwner Time
int __FC_DECL__() mbdyn_time_step(F_REAL *dt)

Here is the call graph for this function:

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

Implements Elem.

Definition at line 519 of file module-aerodyn.cc.

References VariableSubMatrixHandler::SetNullMatrix().

523 {
524  // should do something useful
525  WorkMat.SetNullMatrix();
526 
527  return WorkMat;
528 }
void SetNullMatrix(void)
Definition: submat.h:1159

Here is the call graph for this function:

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

Implements Elem.

Definition at line 531 of file module-aerodyn.cc.

References VectorHandler::Add(), aerofrcintrface(), ASSERT, bFirst, bladeR, c, c_blade, c_elem, grad::cos(), grad::Cross(), DriveOwner::dGet(), elem, FirstLoop, FSF, StructNode::GetRCurr(), Mat3x3::GetVec(), StructDispNode::GetXCurr(), mbdyn_com_data(), mbdyn_false(), Mat3x3::MulTV(), nblades, nelems, nodes, pHub, SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), grad::sin(), TF, TF_h, Thrust, TM, TM_h, Torque, WorkSpaceDim(), and Zero3.

536 {
537  integer iNumRows = 0;
538  integer iNumCols = 0;
539  WorkSpaceDim(&iNumRows, &iNumCols);
540 
541  WorkVec.ResizeReset(iNumRows);
542 
543  /*
544  * set sub-vector indices and coefs
545  */
546 
547  if (bFirst) {
548  c_blade = 0;
549  Mat3x3 BladeR;
550  Vec3 BladeAxis;
551 
552  // force scale factor to "ramp up" loads
553  doublereal dFSF = FSF.dGet();
554 
555  // sanity check
556  ASSERT(dFSF >= 0.);
557  ASSERT(dFSF <= 1.);
558 
559  for (elem = 0; elem < nelems*nblades; elem++) {
560  /*
561  * get the current blade number.
562  */
563  if ((elem % nelems) == 0) {
564  c_blade++;
565  BladeR = pHub->GetRCurr()*bladeR[c_blade];
566  BladeAxis = BladeR.GetVec(1);
567  }
568 
569  /*
570  * get force/moment
571  */
572  F_REAL DFN, DFT, PMA;
573 
574  c_elem = elem%nelems + 1;
575  (void)__FC_DECL__(mbdyn_com_data)(&c_blade, &c_elem);
576 
577  /*
578  * Get blade elements radius. It is the perpendicular distance
579  * from the rotor axis to the element aerodynamic reference point.
580  */
581 
582  /*
583  * forces and moments are in the blade reference frame,
584  * not in the element's.
585  */
586  __FC_DECL__(aerofrcintrface)(&FirstLoop, &c_elem, &DFN, &DFT, &PMA);
587 
588  // ramp forces in the very first second up to ease convergence
589  DFN *= dFSF;
590  DFT *= dFSF;
591  PMA *= dFSF;
592 
593  nodes[elem].FN = DFN;
594  nodes[elem].FT = DFT;
595  nodes[elem].AM = PMA;
596 
597 #ifdef MODULE_AERODYN_DEBUG
598  silent_cerr("aerodyn[" << elem << "] in rotation plane: DFN=" << DFN << " DFT=" << DFT << " PMA=" << PMA << std::endl);
599 #endif // MODULE_AERODYN_DEBUG
600  /*
601  * turn force/moment into the node frame (blade element frame used by Aerodyn to calculation forces)
602  * (passing thru local element frame),
603  * including offset
604  */
605 
606  doublereal c = std::cos(nodes[elem].PITNOW);
607  doublereal s = std::sin(nodes[elem].PITNOW);
608  nodes[elem].F = Vec3(0., DFT*c - DFN*s, DFT*s + DFN*c);
609  nodes[elem].M = nodes[elem].Ra.GetVec(1)*PMA + nodes[elem].f.Cross(nodes[elem].F);
610 
611 
612 #ifdef MODULE_AERODYN_DEBUG
613 
614  silent_cerr("Moment on Node[" << elem << "]: " << nodes[elem].f.Cross(nodes[elem].F) << std::endl);
615 
616 #endif // MODULE_AERODYN_DEBUG
617 
618 #ifdef MODULE_AERODYN_DEBUG
619  silent_cerr(std::setprecision(3) << std::fixed
620  << " aerodyn[" << elem << "]"
621  << " F = " << nodes[elem].F
622  << " M = " << nodes[elem].M
623  << " FN = " << nodes[elem].FN
624  << " FN = " << nodes[elem].FT
625  << " AM = " << nodes[elem].AM
626  << std::endl << std::endl);
627 #endif // MODULE_AERODYN_DEBUG
628 
629  }
630 
631 #ifdef MODULE_AERODYN_DEBUG
632  silent_cerr(std::endl);
633 #endif // MODULE_AERODYN_DEBUG
634 
635  bFirst = false;
636  }
637 
638 
639  TF = Vec3(Zero3);
640  TM = Vec3(Zero3);
641  for (elem = 0; elem < nblades*nelems; elem++) {
642  /*
643  * set indices where force/moment need to be put
644  */
645  integer iFirstIndex = nodes[elem].pNode->iGetFirstMomentumIndex();
646  for (int i = 1; i <= 6; i++) {
647  WorkVec.PutRowIndex(6*elem + i, iFirstIndex + i);
648  }
649 
650  /*
651  * add force/moment to residual, after rotating them
652  * into the global frame
653  */
654  /*
655  * Transfer the force/moment to global frame.
656  */
657  WorkVec.Add(6*elem + 1, nodes[elem].pNode->GetRCurr()*(nodes[elem].Ra*nodes[elem].F));
658  WorkVec.Add(6*elem + 4, nodes[elem].pNode->GetRCurr()*(nodes[elem].Ra*nodes[elem].M));
659 
660  /*
661  * calculate the force and moment contributions on the rotor in absolute frame.
662  */
663  const Vec3& Xp = nodes[elem].pNode->GetXCurr();
664  const Vec3& Xh = pHub->GetXCurr();
665 
666  TF = TF + nodes[elem].pNode->GetRCurr()*nodes[elem].Ra*nodes[elem].F;
667  TM = TM + nodes[elem].pNode->GetRCurr()*nodes[elem].Ra*nodes[elem].M
668  + (Xp-Xh).Cross(nodes[elem].pNode->GetRCurr()*nodes[elem].Ra*nodes[elem].F);
669  }
670 
671  /*
672  * Transfer the force/moment to hub reference frame.
673  */
674  const Mat3x3& Rh = pHub->GetRCurr();
675  TF_h = Rh.MulTV(TF);
676  TM_h = Rh.MulTV(TM);
677 
678  /*
679  * The 3rd component of TF_h and TM_h are the rotor Thrust and rotor Torque.
680  */
681  Thrust = TF_h(3);
682  Torque = TM_h(3);
683 
684  /*
685  * make sure next time FirstLoop will be false
686  */
687  if (FirstLoop) {
688  (void)__FC_DECL__(mbdyn_false)(&FirstLoop);
689  }
690 
691  return WorkVec;
692 }
F_LOGICAL FirstLoop
int __FC_DECL__() aerofrcintrface(F_LOGICAL *FirstLoop, F_INTEGER *JElem, F_REAL *DFN, F_REAL *DFT, F_REAL *PMA)
const Vec3 Zero3(0., 0., 0.)
doublereal Thrust
Definition: matvec3.h:98
GradientExpression< UnaryExpr< FuncSin, Expr > > sin(const GradientExpression< Expr > &u)
Definition: gradient.h:2977
std::vector< Mat3x3 > bladeR
virtual void ResizeReset(integer)
Definition: vh.cc:55
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
StructNode * pHub
void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
std::vector< AeroNode > nodes
Vec3 GetVec(unsigned short int i) const
Definition: matvec3.h:893
Vec3 MulTV(const Vec3 &v) const
Definition: matvec3.cc:482
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
int __FC_DECL__() mbdyn_false(F_LOGICAL *val)
F_INTEGER c_blade
doublereal Torque
int __FC_DECL__() mbdyn_com_data(F_INTEGER *c_blade, F_INTEGER *c_elem)
#define ASSERT(expression)
Definition: colamd.c:977
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
F_INTEGER c_elem
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
static std::stack< cleanup * > c
Definition: cleanup.cc:59
doublereal dGet(const doublereal &dVar) const
Definition: drive.cc:664
DriveOwner FSF
GradientExpression< UnaryExpr< FuncCos, Expr > > cos(const GradientExpression< Expr > &u)
Definition: gradient.h:2978
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

doublereal AeroDynModule::dGetCurrBladeNodeBuiltinTwist ( void  ) const

Definition at line 896 of file module-aerodyn.cc.

References ASSERT, elem, nblades, nelems, and nodes.

Referenced by getelemparams().

897 {
898  ASSERT(elem >= 0);
900 
901  return nodes[elem].dBuiltInTwist;
902 }
std::vector< AeroNode > nodes
#define ASSERT(expression)
Definition: colamd.c:977
doublereal AeroDynModule::dGetCurrBladeNodePITNOW ( void  ) const

Definition at line 915 of file module-aerodyn.cc.

References ASSERT, elem, nblades, nelems, and nodes.

Referenced by getvnvt().

916 {
917  ASSERT(elem >= 0);
919 
920  return nodes[elem].PITNOW;
921 }
std::vector< AeroNode > nodes
#define ASSERT(expression)
Definition: colamd.c:977
doublereal AeroDynModule::dGetHubTowerXYDistance ( void  ) const

Definition at line 835 of file module-aerodyn.cc.

References Hub_Tower_xy_distance.

Referenced by getrotorparams().

836 {
837  return Hub_Tower_xy_distance;
838 }
doublereal Hub_Tower_xy_distance
void AeroDynModule::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
virtual

Reimplemented from Elem.

Definition at line 796 of file module-aerodyn.cc.

References nodes, pHub, and pNacelle.

797 {
798  /*
799  * set args according to element connections
800  */
801  connectedNodes.resize(nodes.size() + 2);
802 
803  unsigned n;
804  for (n = 0; n < nodes.size(); n++) {
805  connectedNodes[n] = nodes[n].pNode;
806  }
807 
808  connectedNodes[n++] = pNacelle;
809  connectedNodes[n++] = pHub;
810 }
StructNode * pHub
std::vector< AeroNode > nodes
StructNode * pNacelle
const Mat3x3 & AeroDynModule::GetCurrBladeNodeRa ( void  ) const

Definition at line 925 of file module-aerodyn.cc.

References ASSERT, elem, nblades, nelems, and nodes.

Referenced by getvnvt().

926 {
927  ASSERT(elem >= 0);
929 
930  return nodes[elem].Ra;
931 }
std::vector< AeroNode > nodes
#define ASSERT(expression)
Definition: colamd.c:977
const Mat3x3 & AeroDynModule::GetCurrBladeR ( void  ) const

Definition at line 859 of file module-aerodyn.cc.

References ASSERT, bladeR, c_blade, and nblades.

Referenced by getbladeparams(), and getelemparams().

860 {
861  ASSERT(c_blade >= 0);
863 
864  return bladeR[c_blade - 1];
865 }
std::vector< Mat3x3 > bladeR
F_INTEGER c_blade
#define ASSERT(expression)
Definition: colamd.c:977
DofOrder::Order AeroDynModule::GetDofType ( unsigned int  i) const
virtual

Reimplemented from Elem.

Definition at line 486 of file module-aerodyn.cc.

References DofOrder::UNKNOWN.

487 {
488  return DofOrder::UNKNOWN;
489 }
int AeroDynModule::GetNumConnectedNodes ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 790 of file module-aerodyn.cc.

References nodes.

791 {
792  return nodes.size() + 2;
793 }
std::vector< AeroNode > nodes
F_INTEGER AeroDynModule::iGetCurrBlade ( void  ) const

Definition at line 849 of file module-aerodyn.cc.

References ASSERT, c_blade, and nblades.

Referenced by getbladeparams().

850 {
851  ASSERT(c_blade >= 0);
853 
854  return c_blade;
855 }
F_INTEGER c_blade
#define ASSERT(expression)
Definition: colamd.c:977
F_INTEGER AeroDynModule::iGetCurrBladeElem ( void  ) const

Definition at line 876 of file module-aerodyn.cc.

References ASSERT, elem, nblades, and nelems.

877 {
878  ASSERT(elem >= 0);
880 
881  return elem;
882 }
#define ASSERT(expression)
Definition: colamd.c:977
unsigned int AeroDynModule::iGetInitialNumDof ( void  ) const
virtual

Implements SubjectToInitialAssembly.

Definition at line 737 of file module-aerodyn.cc.

738 {
739  return 0;
740 }
F_INTEGER AeroDynModule::iGetNumBladeElems ( void  ) const

Definition at line 869 of file module-aerodyn.cc.

References nelems.

870 {
871  return nelems;
872 }
F_INTEGER AeroDynModule::iGetNumBlades ( void  ) const

Definition at line 842 of file module-aerodyn.cc.

References nblades.

843 {
844  return nblades;
845 }
unsigned int AeroDynModule::iGetNumDof ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 480 of file module-aerodyn.cc.

481 {
482  return 0;
483 }
unsigned int AeroDynModule::iGetNumPrivData ( void  ) const
virtual

Reimplemented from SimulationEntity.

Definition at line 784 of file module-aerodyn.cc.

785 {
786  return 0;
787 }
VariableSubMatrixHandler & AeroDynModule::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 750 of file module-aerodyn.cc.

References ASSERT, and VariableSubMatrixHandler::SetNullMatrix().

753 {
754  // should not be called, since initial workspace is empty
755  ASSERT(0);
756 
757  WorkMat.SetNullMatrix();
758 
759  return WorkMat;
760 }
void SetNullMatrix(void)
Definition: submat.h:1159
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

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

Implements SubjectToInitialAssembly.

Definition at line 763 of file module-aerodyn.cc.

References ASSERT, and VectorHandler::ResizeReset().

766 {
767  // should not be called, since initial workspace is empty
768  ASSERT(0);
769 
770  WorkVec.ResizeReset(0);
771 
772  return WorkVec;
773 }
virtual void ResizeReset(integer)
Definition: vh.cc:55
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

void AeroDynModule::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements SubjectToInitialAssembly.

Definition at line 743 of file module-aerodyn.cc.

References nblades, and nelems.

744 {
745  *piNumRows = 6*nblades*nelems;
746  *piNumCols = 1;
747 }
void AeroDynModule::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 492 of file module-aerodyn.cc.

References dCurTime, out, Rotor_speed, Thrust, and Torque.

493 {
494  if (out) {
495  out << std::scientific
496  << std::setw(16) << dCurTime
497  << std::setw(16) << Thrust/1000.0
498  << std::setw(16) << Torque/1000.0
499  << std::setw(16) << Rotor_speed
500  << std::setw(16) << Torque*Rotor_speed/1000.0
501  << std::endl;
502  }
503 }
doublereal Thrust
std::ofstream out
doublereal Rotor_speed
doublereal dCurTime
doublereal Torque
const StructNode * AeroDynModule::pGetCurrBladeNode ( void  ) const

Definition at line 886 of file module-aerodyn.cc.

References ASSERT, elem, nblades, nelems, and nodes.

Referenced by getelemparams(), and getvnvt().

887 {
888  ASSERT(elem >= 0);
890 
891  return nodes[elem].pNode;
892 }
std::vector< AeroNode > nodes
#define ASSERT(expression)
Definition: colamd.c:977
const StructNode * AeroDynModule::pGetHubNode ( void  ) const

Definition at line 821 of file module-aerodyn.cc.

References pHub.

Referenced by getbladeparams(), getelemparams(), and getrotorparams().

822 {
823  return pHub;
824 }
StructNode * pHub
const StructNode * AeroDynModule::pGetNacelleNode ( void  ) const

Definition at line 814 of file module-aerodyn.cc.

References pNacelle.

Referenced by getbladeparams(), getelemparams(), and getrotorparams().

815 {
816  return pNacelle;
817 }
StructNode * pNacelle
std::ostream & AeroDynModule::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 506 of file module-aerodyn.cc.

507 {
508  return out << "not implemented yet;" << std::endl;
509 }
std::ofstream out
void AeroDynModule::SetCurrBladeNodePITNOW ( doublereal  PITNOW)

Definition at line 906 of file module-aerodyn.cc.

References ASSERT, elem, nblades, nelems, and nodes.

Referenced by getelemparams().

907 {
908  ASSERT(elem >= 0);
910 
911  nodes[elem].PITNOW = PITNOW;
912 }
std::vector< AeroNode > nodes
#define ASSERT(expression)
Definition: colamd.c:977
void AeroDynModule::SetRotorSpeed ( doublereal  Omega)

Definition at line 828 of file module-aerodyn.cc.

References Rotor_speed.

Referenced by getrotorparams().

829 {
830  Rotor_speed = Omega;
831 }
doublereal Rotor_speed
void AeroDynModule::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints h = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 776 of file module-aerodyn.cc.

References bFirst.

779 {
780  bFirst = true;
781 }
void AeroDynModule::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 512 of file module-aerodyn.cc.

References nblades, and nelems.

Referenced by AssRes().

513 {
514  *piNumRows = 6*nblades*nelems;
515  *piNumCols = 1;
516 }

Member Data Documentation

bool AeroDynModule::bFirst
private

Definition at line 142 of file module-aerodyn.cc.

Referenced by AfterPredict(), AssRes(), and SetValue().

std::vector<Mat3x3> AeroDynModule::bladeR
private

Definition at line 115 of file module-aerodyn.cc.

Referenced by AeroDynModule(), AssRes(), and GetCurrBladeR().

F_INTEGER AeroDynModule::c_blade
private

Definition at line 137 of file module-aerodyn.cc.

Referenced by AssRes(), GetCurrBladeR(), and iGetCurrBlade().

F_INTEGER AeroDynModule::c_elem
private

Definition at line 136 of file module-aerodyn.cc.

Referenced by AeroDynModule(), and AssRes().

doublereal AeroDynModule::dCurTime
private

Definition at line 145 of file module-aerodyn.cc.

Referenced by AeroDynModule(), AfterPredict(), and Output().

F_REAL AeroDynModule::dDT
private

Definition at line 146 of file module-aerodyn.cc.

Referenced by AfterPredict().

doublereal AeroDynModule::dOldTime
private

Definition at line 144 of file module-aerodyn.cc.

Referenced by AfterConvergence(), and AfterPredict().

F_LOGICAL AeroDynModule::FirstLoop
private

Definition at line 134 of file module-aerodyn.cc.

Referenced by AeroDynModule(), and AssRes().

DriveOwner AeroDynModule::FSF
private

Definition at line 148 of file module-aerodyn.cc.

Referenced by AeroDynModule(), and AssRes().

doublereal AeroDynModule::Hub_Tower_xy_distance
private

Definition at line 109 of file module-aerodyn.cc.

Referenced by AeroDynModule(), and dGetHubTowerXYDistance().

std::string AeroDynModule::ofname
private

Definition at line 117 of file module-aerodyn.cc.

Referenced by AeroDynModule().

std::ofstream AeroDynModule::out
mutableprivate

Definition at line 118 of file module-aerodyn.cc.

Referenced by AeroDynModule(), and Output().

StructNode* AeroDynModule::pHub
private

Definition at line 104 of file module-aerodyn.cc.

Referenced by AeroDynModule(), AssRes(), GetConnectedNodes(), and pGetHubNode().

StructNode* AeroDynModule::pNacelle
private

Nacelle node; requirements:

  • axis 3 is the shaft axis
  • axis 3 in wind direction

Definition at line 103 of file module-aerodyn.cc.

Referenced by AeroDynModule(), GetConnectedNodes(), and pGetNacelleNode().

F_REAL AeroDynModule::r_hub
private

Definition at line 139 of file module-aerodyn.cc.

Referenced by AeroDynModule().

F_REAL AeroDynModule::r_rotor
private

Definition at line 140 of file module-aerodyn.cc.

Referenced by AeroDynModule().

F_REAL AeroDynModule::rlocal
private

Definition at line 138 of file module-aerodyn.cc.

Referenced by AeroDynModule().

doublereal AeroDynModule::Rotor_speed
private

Definition at line 129 of file module-aerodyn.cc.

Referenced by Output(), and SetRotorSpeed().

Vec3 AeroDynModule::TF
private

Definition at line 123 of file module-aerodyn.cc.

Referenced by AssRes().

Vec3 AeroDynModule::TF_h
private

Definition at line 125 of file module-aerodyn.cc.

Referenced by AssRes().

doublereal AeroDynModule::Thrust
private

Definition at line 127 of file module-aerodyn.cc.

Referenced by AssRes(), and Output().

DriveOwner AeroDynModule::Time
private

Definition at line 143 of file module-aerodyn.cc.

Referenced by AeroDynModule(), AfterConvergence(), and AfterPredict().

Vec3 AeroDynModule::TM
private

Definition at line 124 of file module-aerodyn.cc.

Referenced by AssRes().

Vec3 AeroDynModule::TM_h
private

Definition at line 126 of file module-aerodyn.cc.

Referenced by AssRes().

doublereal AeroDynModule::Torque
private

Definition at line 128 of file module-aerodyn.cc.

Referenced by AssRes(), and Output().


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