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

Public Member Functions

DriveCallerRead (const DataManager *pDM, MBDynParser &HP, bool bDeferred)
 
- Public Member Functions inherited from DriveCallerRead
virtual ~DriveCallerRead (void)
 

Additional Inherited Members

- Static Public Member Functions inherited from DriveCallerRead
static void ReadOutput (DriveCaller *pDC, const DataManager *pDM, MBDynParser &HP)
 
- Protected Member Functions inherited from DriveCallerRead
void NeedDM (const DataManager *pDM, MBDynParser &HP, bool bDeferred, const char *const name)
 

Detailed Description

Definition at line 79 of file module-multi_step_drive.cc.

Member Function Documentation

DriveCaller * MultiStepDriveDCR::Read ( const DataManager pDM,
MBDynParser HP,
bool  bDeferred 
)
virtual

Implements DriveCallerRead.

Definition at line 155 of file module-multi_step_drive.cc.

References HighParser::GetInt(), IncludeParser::GetLineData(), HighParser::GetReal(), MBDYN_EXCEPT_ARGS, DriveCallerRead::NeedDM(), DataManager::pGetDrvHdl(), and SAFENEWWITHCONSTRUCTOR.

156 {
157  NeedDM(pDM, HP, bDeferred, "multi step");
158 
159  const DriveHandler* pDrvHdl = 0;
160 
161  if (pDM != 0) {
162  pDrvHdl = pDM->pGetDrvHdl();
163  }
164 
165  /* driver legato ad un grado di liberta' nodale */
166  if (pDM == 0) {
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);
171  }
172 
173  DriveCaller *pDC = 0;
174 
175  const integer iNumSteps = HP.GetInt();
176 
177  if (iNumSteps < 1) {
178  silent_cerr("At least one step expected at line " << HP.GetLineData() << std::endl);
180  }
181 
182  std::vector<MultiStepDrive::StepRecord> rgSteps;
183 
184  rgSteps.reserve(iNumSteps);
185 
186  doublereal xPrev = -std::numeric_limits<doublereal>::max();
187 
188  for (int i = 0; i < iNumSteps; ++i) {
189  const doublereal x = HP.GetReal();
190 
191  if (x <= xPrev) {
192  silent_cerr("X-values must be in ascending order at line "
193  << HP.GetLineData() << std::endl);
195  }
196 
197  const doublereal y = HP.GetReal();
198 
199  rgSteps.push_back(MultiStepDrive::StepRecord(x, y));
200 
201  xPrev = x;
202  }
203 
206  MultiStepDrive(pDrvHdl, rgSteps));
207 
208  return pDC;
209 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual integer GetInt(integer iDefval=0)
Definition: parser.cc:1050
const DriveHandler * pGetDrvHdl(void) const
Definition: dataman.h:340
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
void NeedDM(const DataManager *pDM, MBDynParser &HP, bool bDeferred, const char *const name)
Definition: drive_.cc:1354
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual HighParser::ErrOut GetLineData(void) const
Definition: parsinc.cc:697
virtual doublereal GetReal(const doublereal &dDefval=0.0)
Definition: parser.cc:1056

Here is the call graph for this function:


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