102 return out <<
"const, " <<
dConst;
107 : nPoints(n), pdX(x), pdV(v)
127 for (
int i = 1; i <
nPoints; i++) {
133 return pdV[nPoints - 1];
139 out <<
"piecewise const, " <<
nPoints;
141 for (
int i = 0; i <
nPoints; i++) {
142 out <<
", " <<
pdX[i] <<
", " <<
pdV[i];
149 : dShift(d0), dSlope(d1)
173 : nPoints(n), pdX(x), pdV(v)
193 for (
int i = 1; i <
nPoints; i++) {
198 return (
pdV[i]*dw2 +
pdV[i - 1]*dw1)/dl;
202 return pdV[nPoints - 1];
208 out <<
"piecewise linear, " <<
nPoints;
210 for (
int i = 0; i <
nPoints; i++) {
211 out <<
", " <<
pdX[i] <<
", " <<
pdV[i];
218 : da0(d0), da1(d1), da2(d2)
237 return out <<
"parabolic, " <<
da0 <<
", "
266 return out <<
"const, " <<
dConst;
271 : da0(d0), da1x(d1x), da1y(d1y), da1xy(d1xy)
290 return out <<
"bilinear, " <<
da0 <<
", "
302 const char* sKeyWords[] = {
306 "piecewise" "linear",
328 CurrKeyWord = SHAPECONST;
332 if (CurrKeyWord >= 0) {
333 std::cout <<
"shape type: " << sKeyWords[CurrKeyWord] << std::endl;
339 switch (CurrKeyWord) {
368 << da0 <<
", " << da1 << std::endl);
378 case PIECEWISELINEAR: {
379 const char *sType = 0;
380 switch (CurrKeyWord) {
382 sType =
"piecewise const";
385 case PIECEWISELINEAR:
386 sType =
"piecewise linear";
396 silent_cerr(
"Illegal number of points " << np
397 <<
" for " << sType <<
" shape at line "
409 if (px[0] < -1. || px[0] > 1.) {
410 silent_cerr(
"Illegal value " << px[0]
411 <<
" for first point abscissa (must be -1. < x < 1.) "
412 "in " << sType <<
" shape at line "
420 for (
int i = 1; i < np; i++) {
422 if (px[i] <= px[i-1] || px[i] > 1.) {
423 silent_cerr(
"Illegal value " << px[i]
424 <<
" for point " << i + 1 <<
" abscissa "
425 "(must be " << px[i - 1] <<
" < x < 1.) "
426 "in " << sType <<
" shape at line "
436 switch (CurrKeyWord) {
443 case PIECEWISELINEAR:
465 << da0 <<
", " << da1 <<
", " << da2 << std::endl);
476 ASSERTMSG(0,
"You shouldn't have reached this point");
ConstShape1D(doublereal d)
PiecewiseLinearShape1D(int n, doublereal *x, doublereal *v)
doublereal dGet(doublereal d, doublereal=0.) const
~PiecewiseConstShape1D(void)
std::ostream & Restart(std::ostream &out) const
BilinearShape2D(doublereal d0, doublereal d1x, doublereal d1y, doublereal d1xy)
#define MBDYN_EXCEPT_ARGS
#define DEBUGCOUTFNAME(fname)
virtual integer GetInt(integer iDefval=0)
std::ostream & Restart(std::ostream &out) const
#define SAFEDELETEARR(pnt)
#define ASSERTMSG(expr, msg)
ParabolicShape1D(doublereal d0, doublereal d1, doublereal d2)
doublereal dGet(doublereal dx, doublereal dy) const
std::ostream & Restart(std::ostream &out) const
doublereal dGet(doublereal d, doublereal=0.) const
virtual const Shape * pGetShape(void) const
LinearShape1D(doublereal d0, doublereal d1)
Shape * ReadShape(MBDynParser &HP)
std::ostream & Restart(std::ostream &out) const
std::ostream & Restart(std::ostream &out) const
virtual bool IsKeyWord(const char *sKeyWord)
std::ostream & Restart(std::ostream &out) const
PiecewiseConstShape1D(int n, doublereal *x, doublereal *v)
doublereal dGet(doublereal, doublereal=0.) const
virtual doublereal dGet(doublereal d) const
doublereal dGet(doublereal, doublereal=0.) const
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
doublereal dGet(doublereal d, doublereal=0.) const
ShapeOwner(const Shape *pS)
virtual doublereal dGet(doublereal d1, doublereal d2=0.) const =0
~PiecewiseLinearShape1D(void)
#define SAFENEWARR(pnt, item, sz)
doublereal dGet(doublereal d, doublereal=0.) const
virtual ~ShapeOwner(void)
virtual HighParser::ErrOut GetLineData(void) const
ConstShape2D(doublereal d)
#define DEBUGLCOUT(level, msg)
std::ostream & Restart(std::ostream &out) const
virtual doublereal GetReal(const doublereal &dDefval=0.0)