2578         DEBUGCOUT(
"Entering ReadRotor()" << std::endl);
 
 2581         pedantic_cout(
"WARNING: the syntax changed; use a comma ',' " 
 2582                         "instead of a colon ':' after the keyword " 
 2583                         "\"induced velocity\"" << std::endl);
 
 2585         const char* sKeyWords[] = {
 
 2586                 "induced" "velocity",
 
 2589                                 "uniform" "sectional",
 
 2625                 silent_cerr(
"InducedVelocity(" << uLabel << 
"): deprecated keyword \"hinge\"; use \"orientation\" instead at line " << HP.
GetLineData() << std::endl);
 
 2642         switch (InducedType) {
 
 2644                 DEBUGCOUT(
"No induced velocity is considered" << std::endl);
 
 2650                                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2651                                         "invalid radius " << dR
 
 2664                                 NoRotor(uLabel, pDO, pCraft, rrot, pRotor,
 
 2669         case UNIFORM_SECTIONAL:
 
 2672         case DYNAMICINFLOW: {
 
 2674                 if (InducedType == GLAUERT && HP.
IsKeyWord(
"type")) {
 
 2687                         } 
else if (HP.
IsKeyWord(
"white" "and" "blake")) {
 
 2690                         } 
else if (HP.
IsKeyWord(
"pitt" "and" "peters")) {
 
 2697                                 silent_cerr(
"warning, \"drees 2\" deprecated at line " << HP.
GetLineData() << 
"; use \"drees\" instead" << std::endl);
 
 2701                                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2702                                         "unknown variant of Glauert's induced velocity at line " 
 2709                 DEBUGCOUT(
"Reference rotation speed: " << dOR << std::endl);
 
 2711                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2712                                 "invalid reference speed " << dOR
 
 2719                 DEBUGCOUT(
"Radius: " << dR << std::endl);
 
 2721                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2722                                 "invalid radius " << dR
 
 2729                 bool bGotInitialValues(
false);
 
 2735                 unsigned iMaxIter = unsigned(-1);
 
 2736                 doublereal dTolerance = std::numeric_limits<double>::max();
 
 2741                 while (HP.
IsArg()) {
 
 2747                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2748                                                 "providing another \"ground\" node " 
 2757                         } 
else if (HP.
IsKeyWord(
"initial" "value")) {
 
 2758                                 if (InducedType != DYNAMICINFLOW) {
 
 2759                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2760                                                 "invalid parameter \"initial value\" " 
 2766                                 if (bGotInitialValues) {
 
 2767                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2768                                                 "providing \"initial value\" another time " 
 2778                                 bGotInitialValues = 
true;
 
 2781                                 if (InducedType == DYNAMICINFLOW) {
 
 2782                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2783                                                 "invalid parameter \"delay\" " 
 2790                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2791                                                 "providing another \"delay\" driver " 
 2816                         } 
else if (HP.
IsKeyWord(
"max" "iterations")) {
 
 2817                                 if (iMaxIter != 
unsigned(-1)) {
 
 2818                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2819                                                 "providing another \"max iterations\" value " 
 2831                                         silent_cerr(
"illegal max iterations " 
 2832                                                 << i << 
" for Rotor(" << uLabel << 
")");
 
 2838                                 if (dTolerance != std::numeric_limits<double>::max()) {
 
 2839                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2840                                                 "providing another \"tolerance\" value " 
 2852                                 if (dTolerance <= 0.) {
 
 2853                                         silent_cerr(
"illegal tolerance " 
 2854                                                 << dTolerance << 
" for Rotor(" << uLabel << 
")");
 
 2860                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2861                                                 "providing another \"eta\" relaxation factor " 
 2873                                         silent_cerr(
"illegal eta " 
 2874                                                 << dEta << 
" for Rotor(" << uLabel << 
")");
 
 2878                         } 
else if (HP.
IsKeyWord(
"correction")) {
 
 2880                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2881                                                 "providing another \"correction\" factor " 
 2889                                 DEBUGCOUT(
"Hover correction: " << dCH << std::endl);
 
 2891                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2892                                                 "illegal null or negative hover inflow correction " 
 2899                                 DEBUGCOUT(
"Forward-flight correction: " << dCFF << std::endl);
 
 2901                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2902                                                 "illegal null or negative forward-flight inflow correction " 
 2918                 if (InducedType != DYNAMICINFLOW && pdW == 0) {
 
 2922                 if (iMaxIter == 
unsigned(-1)) {
 
 2926                         if (dTolerance == std::numeric_limits<double>::max()) {
 
 2927                                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 2928                                         "warning, \"max iterations\" is meaningless with default tolerance" 
 2943                 switch (InducedType) {
 
 2945                         DEBUGCOUT(
"Uniform induced velocity" << std::endl);
 
 2950                                                 ppres, dOR, dR, pdW,
 
 2951                                                 iMaxIter, dTolerance, dEta,
 
 2956                 case UNIFORM_SECTIONAL:
 
 2957                         DEBUGCOUT(
"Uniform induced velocity" << std::endl);
 
 2962                                                 ppres, dOR, dR, pdW,
 
 2963                                                 iMaxIter, dTolerance, dEta,
 
 2969                         DEBUGCOUT(
"Glauert induced velocity" << std::endl);
 
 2974                                                 ppres, dOR, dR, pdW,
 
 2975                                                 iMaxIter, dTolerance, dEta,
 
 2981                         DEBUGCOUT(
"Mangler induced velocity" << std::endl);
 
 2987                                                 ppres, dOR, dR, pdW,
 
 2988                                                 iMaxIter, dTolerance, dEta,
 
 2994                         DEBUGCOUT(
"Dynamic inflow" << std::endl);
 
 2999                                                 pCraft, rrot, pRotor,
 
 3002                                                 iMaxIter, dTolerance, dEta,
 
 3004                                                 dVConst, dVSine, dVCosine,
 
 3009                         ASSERTMSG(0, 
"You shouldn't have reached this point");
 
 3017                 DEBUGCOUT(
"Reference rotation speed: " << dOR << std::endl);
 
 3019                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3020                                 "invalid reference speed " << dOR
 
 3027                 DEBUGCOUT(
"Radius: " << dR << std::endl);
 
 3029                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3030                                 "invalid radius " << dR
 
 3037                 bool bGotInitialValues(
false);
 
 3042                 unsigned iMaxIter = unsigned(-1);
 
 3043                 doublereal dTolerance = std::numeric_limits<double>::max();
 
 3048                 while (HP.
IsArg()) {
 
 3054                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3055                                                 "providing another \"ground\" node " 
 3064                         } 
else if (HP.
IsKeyWord(
"initial" "value")) {
 
 3065                                 if (bGotInitialValues) {
 
 3066                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3067                                                 "providing \"initial value\" another time " 
 3077                                 bGotInitialValues = 
true;
 
 3079                         } 
else if (HP.
IsKeyWord(
"max" "iterations")) {
 
 3080                                 if (iMaxIter != 
unsigned(-1)) {
 
 3081                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3082                                                 "providing another \"max iterations\" value " 
 3094                                         silent_cerr(
"illegal max iterations " 
 3095                                                 << i << 
" for Rotor(" << uLabel << 
")");
 
 3101                                 if (dTolerance != std::numeric_limits<double>::max()) {
 
 3102                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3103                                                 "providing another \"tolerance\" value " 
 3115                                 if (dTolerance <= 0.) {
 
 3116                                         silent_cerr(
"illegal tolerance " 
 3117                                                 << dTolerance << 
" for Rotor(" << uLabel << 
")");
 
 3123                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3124                                                 "providing another \"eta\" relaxation factor " 
 3136                                         silent_cerr(
"illegal eta " 
 3137                                                 << dEta << 
" for Rotor(" << uLabel << 
")");
 
 3141                         } 
else if (HP.
IsKeyWord(
"correction")) {
 
 3143                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3144                                                 "providing another \"correction\" factor " 
 3152                                 DEBUGCOUT(
"Hover correction: " << dCH << std::endl);
 
 3154                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3155                                                 "illegal null or negative hover inflow correction " 
 3162                                 DEBUGCOUT(
"Forward-flight correction: " << dCFF << std::endl);
 
 3164                                         silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3165                                                 "illegal null or negative forward-flight inflow correction " 
 3180                 if (iMaxIter == 
unsigned(-1)) {
 
 3184                         if (dTolerance == std::numeric_limits<double>::max()) {
 
 3185                                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3186                                         "warning, \"max iterations\" is meaningless with default tolerance" 
 3201                 DEBUGCOUT(
"Dynamic inflow" << std::endl);
 
 3206                                 pCraft, rrot, pRotor,
 
 3209                                 iMaxIter, dTolerance, dEta,
 
 3211                                 dVConst, dVSine, dVCosine,
 
 3217                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3218                         "unknown induced velocity type at line " 
 3225                 silent_cerr(
"Rotor(" << uLabel << 
"): " 
 3226                         "semicolon expected at line " 
flag fReadOutput(MBDynParser &HP, const T &t) const 
Mat3x3 GetRotRel(const ReferenceFrame &rf)
#define MBDYN_EXCEPT_ARGS
virtual integer GetInt(integer iDefval=0)
#define ASSERTMSG(expr, msg)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
#define SAFENEW(pnt, item)
virtual bool IsKeyWord(const char *sKeyWord)
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
ResForceSet ** ReadResSets(DataManager *pDM, MBDynParser &HP)
virtual int GetWord(void)
DriveCaller * GetDriveCaller(bool bDeferred=false)
virtual HighParser::ErrOut GetLineData(void) const 
Node * ReadNode(MBDynParser &HP, Node::Type type) const 
virtual doublereal GetReal(const doublereal &dDefval=0.0)