MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
DiscreteIdentProcess_Debug Class Reference

#include <discctrl.h>

Inheritance diagram for DiscreteIdentProcess_Debug:
Collaboration diagram for DiscreteIdentProcess_Debug:

Public Member Functions

 DiscreteIdentProcess_Debug (integer iNumOut, integer iNumIn, integer iOrdA, integer iOrdB, ForgettingFactor *pf, PersistentExcitation *px, unsigned f_proc, const std::string &sf)
 
virtual ~DiscreteIdentProcess_Debug (void)
 
void GetInput (std::vector< doublereal > &dIn)
 
void PutOutput (const std::vector< doublereal > &dOut, const std::vector< doublereal > &dIn, const std::vector< doublereal > &dDesiredOut)
 
- Public Member Functions inherited from DiscreteControlProcess
virtual ~DiscreteControlProcess (void)
 

Protected Attributes

integer iNumOutputs
 
integer iNumInputs
 
integer iOrderA
 
integer iOrderB
 
IdentProcesspId
 
PersistentExcitationpPx
 
const std::string outfile
 
std::ofstream out
 

Additional Inherited Members

- Public Types inherited from DiscreteControlProcess
enum  {
  DISCPROC_UNKNOWN = -1, DISCPROC_AR = 0x1U, DISCPROC_MA = 0x2U, DISCPROC_X = 0x4U,
  DISCPROC_ARX = (DISCPROC_AR | DISCPROC_X), DISCPROC_ARMA = (DISCPROC_AR | DISCPROC_MA), DISCPROC_ARMAX = (DISCPROC_AR | DISCPROC_MA | DISCPROC_X), DISCPROC_LAST
}
 

Detailed Description

Definition at line 174 of file discctrl.h.

Constructor & Destructor Documentation

DiscreteIdentProcess_Debug::DiscreteIdentProcess_Debug ( integer  iNumOut,
integer  iNumIn,
integer  iOrdA,
integer  iOrdB,
ForgettingFactor pf,
PersistentExcitation px,
unsigned  f_proc,
const std::string &  sf 
)

Definition at line 266 of file discctrl.cc.

References ASSERT, DiscreteControlProcess::DISCPROC_ARMAX, DiscreteControlProcess::DISCPROC_ARX, MBDYN_EXCEPT_ARGS, out, outfile, pId, and SAFENEWWITHCONSTRUCTOR.

274 : iNumOutputs(iNumOut), iNumInputs(iNumIn),
275 iOrderA(iOrdA), iOrderB(iOrdB), pId(0), pPx(px),
276 outfile(sf)
277 {
278  ASSERT(pf != 0);
279  ASSERT(px != 0);
280 
281  switch (f_proc) {
282  case DISCPROC_ARX:
284  IdentARXProcess(iNumOut, iNumIn, iOrdA, iOrdB, pf));
285  break;
286 
287  case DISCPROC_ARMAX:
289  IdentARMAXProcess(iNumOut, iNumIn, iOrdA, iOrdB, pf));
290  break;
291 
292  default:
293  silent_cerr("DiscreteIdentProcess_Debug: "
294  "unknown model type " << f_proc << std::endl);
296  }
297 
298  // temporaneo ?!?
299  if (!outfile.empty()) {
300  out.open(outfile.c_str());
301  }
302 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
const std::string outfile
Definition: discctrl.h:185
IdentProcess * pId
Definition: discctrl.h:181
PersistentExcitation * pPx
Definition: discctrl.h:182
#define ASSERT(expression)
Definition: colamd.c:977
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
DiscreteIdentProcess_Debug::~DiscreteIdentProcess_Debug ( void  )
virtual

Definition at line 304 of file discctrl.cc.

References out, outfile, pId, pPx, and SAFEDELETE.

305 {
306  if (pId != 0) {
307  SAFEDELETE(pId);
308  }
309 
310  if (pPx != 0) {
311  SAFEDELETE(pPx);
312  }
313 
314  // temporaneo ?!?
315  if (!outfile.empty()) {
316  out.close();
317  }
318 }
const std::string outfile
Definition: discctrl.h:185
IdentProcess * pId
Definition: discctrl.h:181
PersistentExcitation * pPx
Definition: discctrl.h:182
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710

Member Function Documentation

void DiscreteIdentProcess_Debug::GetInput ( std::vector< doublereal > &  dIn)
virtual

Implements DiscreteControlProcess.

Definition at line 322 of file discctrl.cc.

References PersistentExcitation::AddInput(), iNumInputs, and pPx.

323 {
324  /* azzera per sicurezza */
325  for (integer i = iNumInputs; i-- > 0; ) {
326  dIn[i] = 0.;
327  }
328 
329  pPx->AddInput(&dIn[0]);
330 }
PersistentExcitation * pPx
Definition: discctrl.h:182
virtual void AddInput(doublereal *pd) const =0
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

void DiscreteIdentProcess_Debug::PutOutput ( const std::vector< doublereal > &  dOut,
const std::vector< doublereal > &  dIn,
const std::vector< doublereal > &  dDesiredOut 
)
virtual

Implements DiscreteControlProcess.

Definition at line 337 of file discctrl.cc.

References buf, BUFSIZE, IdentProcess::dGetForgettingFactor(), IdentProcess::GetTheta(), IdentProcess::iGetNumOutput(), IdentProcess::iGetSize(), out, outfile, pId, and IdentProcess::Update().

340 {
341  pId->Update(&dOut[0], &dIn[0]);
342 
343  if (!outfile.empty()) {
344  integer size = pId->iGetSize()*pId->iGetNumOutput();
345  if (size*sizeof(doublereal) > BUFSIZE) {
346  silent_cerr("buffer is too small" << std::endl);
347 
348  } else {
349  pId->GetTheta(buf);
350  for (integer i = 0; i < pId->iGetSize()*pId->iGetNumOutput(); i++) {
351  out << std::setw(16) << buf[i];
352  }
353  out << std::setw(16) << pId->dGetForgettingFactor() << std::endl;
354  }
355  }
356 }
integer iGetNumOutput(void) const
Definition: id.h:115
const std::string outfile
Definition: discctrl.h:185
virtual doublereal dGetForgettingFactor(void)
Definition: id.h:108
IdentProcess * pId
Definition: discctrl.h:181
virtual void Update(const doublereal *pdY, const doublereal *pdU)=0
virtual void GetTheta(doublereal *pdTheta)=0
const unsigned long BUFSIZE
Definition: discctrl.cc:332
virtual integer iGetSize(void) const =0
static doublereal buf[BUFSIZE]
Definition: discctrl.cc:333
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

Member Data Documentation

integer DiscreteIdentProcess_Debug::iNumInputs
protected

Definition at line 177 of file discctrl.h.

Referenced by GetInput().

integer DiscreteIdentProcess_Debug::iNumOutputs
protected

Definition at line 176 of file discctrl.h.

integer DiscreteIdentProcess_Debug::iOrderA
protected

Definition at line 178 of file discctrl.h.

integer DiscreteIdentProcess_Debug::iOrderB
protected

Definition at line 179 of file discctrl.h.

std::ofstream DiscreteIdentProcess_Debug::out
protected

Definition at line 186 of file discctrl.h.

Referenced by DiscreteIdentProcess_Debug(), PutOutput(), and ~DiscreteIdentProcess_Debug().

const std::string DiscreteIdentProcess_Debug::outfile
protected

Definition at line 185 of file discctrl.h.

Referenced by DiscreteIdentProcess_Debug(), PutOutput(), and ~DiscreteIdentProcess_Debug().

IdentProcess* DiscreteIdentProcess_Debug::pId
protected

Definition at line 181 of file discctrl.h.

Referenced by DiscreteIdentProcess_Debug(), PutOutput(), and ~DiscreteIdentProcess_Debug().

PersistentExcitation* DiscreteIdentProcess_Debug::pPx
protected

Definition at line 182 of file discctrl.h.

Referenced by GetInput(), and ~DiscreteIdentProcess_Debug().


The documentation for this class was generated from the following files: