92 return out <<
"scalar function, "
93 <<
", reference position, " <<
X0
94 <<
", reference orientation, " <<
R0
95 <<
" # not implemented yet";
113 if (HP.
IsKeyWord(
"reference" "position")) {
115 silent_cerr(
"ScalarFuncWindProfile: "
116 "reference position provided twice "
124 }
else if (HP.
IsKeyWord(
"reference" "orientation")) {
126 silent_cerr(
"ScalarFuncWindProfile: "
127 "reference orientation provided twice "
141 silent_cerr(
"ScalarFuncWindProfile: "
149 silent_cerr(
"ScalarFuncWindProfile: "
150 "unable to parse scalar function "
207 <<
", reference position, " <<
X0
208 <<
", reference orientation, " <<
R0
209 <<
", reference elevation, " <<
dZRef
211 <<
", exponent, " <<
dPower;
232 if (HP.
IsKeyWord(
"reference" "elevation")) {
234 silent_cerr(
"PowerLawWindProfile: "
235 "reference elevation provided twice "
243 }
else if (HP.
IsKeyWord(
"reference" "velocity")) {
245 silent_cerr(
"PowerLawWindProfile: "
246 "reference velocity provided twice "
256 silent_cerr(
"PowerLawWindProfile: "
257 "exponent provided twice "
265 }
else if (HP.
IsKeyWord(
"reference" "position")) {
267 silent_cerr(
"PowerLawWindProfile: "
268 "reference position provided twice "
276 }
else if (HP.
IsKeyWord(
"reference" "orientation")) {
278 silent_cerr(
"PowerLawWindProfile: "
279 "reference orientation provided twice "
293 silent_cerr(
"PowerLawWindProfile: "
294 "reference elevation missing "
301 silent_cerr(
"PowerLawWindProfile: "
302 "reference velocity missing "
309 silent_cerr(
"PowerLawWindProfile: "
336 dSurfaceRoughnessLength(dSurfaceRoughnessLength),
337 logZRefZ0(std::
log(dZRef/dSurfaceRoughnessLength))
341 ASSERT(dSurfaceRoughnessLength > 0.);
368 <<
", reference position, " <<
X0
369 <<
", reference orientation, " <<
R0
370 <<
", reference elevation, " <<
dZRef
393 if (HP.
IsKeyWord(
"reference" "elevation")) {
395 silent_cerr(
"LogarithmicWindProfile: "
396 "reference elevation provided twice "
404 }
else if (HP.
IsKeyWord(
"reference" "velocity")) {
406 silent_cerr(
"LogarithmicWindProfile: "
407 "reference velocity provided twice "
415 }
else if (HP.
IsKeyWord(
"surface" "roughness" "length")) {
416 if (dSurfaceRoughnessLength != -1.) {
417 silent_cerr(
"LogarithmicWindProfile: "
418 "surface roughness length provided twice "
424 dSurfaceRoughnessLength = HP.
GetReal();
426 }
else if (HP.
IsKeyWord(
"reference" "position")) {
428 silent_cerr(
"PowerLawWindProfile: "
429 "reference position provided twice "
437 }
else if (HP.
IsKeyWord(
"reference" "orientation")) {
439 silent_cerr(
"PowerLawWindProfile: "
440 "reference orientation provided twice "
454 silent_cerr(
"LogarithmicWindProfile: "
455 "reference elevation missing "
462 silent_cerr(
"LogarithmicWindProfile: "
463 "reference velocity missing "
469 if (dSurfaceRoughnessLength == -1.) {
470 silent_cerr(
"LogarithmicWindProfile: "
471 "surface roughness length missing "
480 dZRef, pVRef, dSurfaceRoughnessLength));
virtual ~PowerLawWindProfile(void)
const Vec3 Zero3(0., 0., 0.)
virtual Gust * Read(const DataManager *pDM, MBDynParser &HP)
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
#define MBDYN_EXCEPT_ARGS
Mat3x3 GetRotAbs(const ReferenceFrame &rf)
virtual Gust * Read(const DataManager *pDM, MBDynParser &HP)
virtual bool GetVelocity(const Vec3 &X, Vec3 &V) const
virtual std::ostream & Restart(std::ostream &out) const
virtual Gust * Read(const DataManager *pDM, MBDynParser &HP)
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
Vec3 GetVec(unsigned short int i) const
virtual std::ostream & Restart(std::ostream &out) const =0
const doublereal logZRefZ0
virtual ~LogarithmicGR(void)
LogarithmicWindProfile(const Vec3 &X0, const Mat3x3 &R0, const doublereal dZRef, const DriveCaller *pVRef, const doublereal dSurfaceRoughnessLength)
const ReferenceFrame AbsRefFrame(0, Vec3(0., 0., 0), Mat3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.), Vec3(0., 0., 0), Vec3(0., 0., 0), EULER_123)
GradientExpression< UnaryExpr< FuncLog, Expr > > log(const GradientExpression< Expr > &u)
virtual bool IsKeyWord(const char *sKeyWord)
ScalarFuncWindProfile(const Vec3 &X0, const Mat3x3 &R0, const BasicScalarFunction *sf)
virtual ~ScalarFuncGR(void)
virtual ~PowerLawGR(void)
WindProfile(const Vec3 &X0, const Mat3x3 &R0)
virtual ~ScalarFuncWindProfile(void)
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
DriveCaller * pGetDriveCaller(void) const
virtual std::ostream & Restart(std::ostream &out) const
Vec3 GetVecAbs(const ReferenceFrame &rf)
virtual ~WindProfile(void)
virtual bool GetVelocity(const Vec3 &X, Vec3 &V) const
doublereal dGet(const doublereal &dVar) const
virtual ~LogarithmicWindProfile(void)
DriveCaller * GetDriveCaller(bool bDeferred=false)
virtual std::ostream & Restart(std::ostream &out) const
virtual bool GetVelocity(const Vec3 &X, Vec3 &V) const
const doublereal dSurfaceRoughnessLength
virtual HighParser::ErrOut GetLineData(void) const
const BasicScalarFunction *const ParseScalarFunction(MBDynParser &HP, DataManager *const pDM)
PowerLawWindProfile(const Vec3 &X0, const Mat3x3 &R0, const doublereal dZRef, const DriveCaller *pVRef, const doublereal dPower)
virtual doublereal GetReal(const doublereal &dDefval=0.0)