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

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 2400 of file drive_.cc.

Member Function Documentation

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

Implements DriveCallerRead.

Definition at line 2406 of file drive_.cc.

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

2407 {
2408  NeedDM(pDM, HP, bDeferred, "piecewise linear");
2409 
2410  const DriveHandler* pDrvHdl = 0;
2411  if (pDM != 0) {
2412  pDrvHdl = pDM->pGetDrvHdl();
2413  }
2414 
2415  DriveCaller *pDC = 0;
2416 
2417  /* Lineare a pezzi */
2418  unsigned int n = HP.GetInt();
2419  DEBUGCOUT("number of points: " << n << std::endl);
2420 
2421  if (n < 2) {
2422  silent_cerr("Need at least two points for piecewise linear drive at line "
2423  << HP.GetLineData() << std::endl);
2425  }
2426 
2427  doublereal *p = 0;
2428  SAFENEWARR(p, doublereal, 2*n);
2429  p[0] = HP.GetReal();
2430  p[n] = HP.GetReal();
2431  for (unsigned int i = 1; i < n; i++) {
2432  p[i] = HP.GetReal();
2433  if (p[i] <= p[i-1]) {
2434  silent_cerr("point " << p[i]
2435  << " is smaller than or equal to preceding point " << p[i-1]
2436  << " at line " << HP.GetLineData() << std::endl);
2437  SAFEDELETE(p);
2439  }
2440  p[i+n] = HP.GetReal();
2441  }
2442 
2443  /* allocazione e creazione */
2446  PiecewiseLinearDriveCaller(pDrvHdl, n, p));
2447 
2448  return pDC;
2449 }
#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 DEBUGCOUT(msg)
Definition: myassert.h:232
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
#define SAFENEWARR(pnt, item, sz)
Definition: mynewmem.h:701
void NeedDM(const DataManager *pDM, MBDynParser &HP, bool bDeferred, const char *const name)
Definition: drive_.cc:1354
double doublereal
Definition: colamd.c:52
virtual HighParser::ErrOut GetLineData(void) const
Definition: parsinc.cc:697
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710
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: