69 virtual std::ostream&
Restart(std::ostream& out)
const;
75 typedef std::vector<StepRecord>::const_iterator
iterator;
101 if (dVar <
rgSteps.front().x) {
106 if (dVar >= i->x && dVar < (i + 1)->x) {
128 out <<
"multi step, " <<
rgSteps.size() <<
", ";
131 out << i->x <<
", " << i->y;
157 NeedDM(pDM, HP, bDeferred,
"multi step");
167 silent_cerr(
"sorry, since the driver is not owned by a DataManager" << std::endl
168 <<
"no DOF dependent drivers are allowed;" << std::endl
169 <<
"aborting..." << std::endl);
178 silent_cerr(
"At least one step expected at line " << HP.
GetLineData() << std::endl);
182 std::vector<MultiStepDrive::StepRecord> rgSteps;
184 rgSteps.reserve(iNumSteps);
186 doublereal xPrev = -std::numeric_limits<doublereal>::max();
188 for (
int i = 0; i < iNumSteps; ++i) {
192 silent_cerr(
"X-values must be in ascending order at line "
224 #ifndef STATIC_MODULES
230 silent_cerr(
"multi_step_drive: "
231 "module_init(" << module_name <<
") "
232 "failed" << std::endl);
239 #endif // ! STATIC_MODULES
MultiStepDrive(const DriveHandler *pDH, const std::vector< StepRecord > &drives)
bool SetDriveCallerData(const char *name, DriveCallerRead *rf)
#define MBDYN_EXCEPT_ARGS
virtual integer GetInt(integer iDefval=0)
std::vector< StepRecord >::const_iterator iterator
virtual const DriveHandler * pGetDrvHdl(void) const
DriveCaller * pCopy(void) const
const DriveHandler * pGetDrvHdl(void) const
StepRecord(doublereal x=0., doublereal y=0.)
const std::vector< StepRecord > rgSteps
virtual ~MultiStepDrive()
bool bIsDifferentiable(void) const
int module_init(const char *module_name, void *pdm, void *php)
This function registers our user defined element for the math parser.
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
virtual doublereal dGet(void) const
DriveCaller * Read(const DataManager *pDM, MBDynParser &HP, bool bDeferred)
virtual doublereal dGetP(void) const
void NeedDM(const DataManager *pDM, MBDynParser &HP, bool bDeferred, const char *const name)
bool multi_step_drive_set()
virtual HighParser::ErrOut GetLineData(void) const
virtual std::ostream & Restart(std::ostream &out) const
virtual doublereal GetReal(const doublereal &dDefval=0.0)