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

#include <drive_.h>

Inheritance diagram for SineDriveCaller:
Collaboration diagram for SineDriveCaller:

Public Member Functions

 SineDriveCaller (const DriveHandler *pDH, doublereal d1, doublereal d2, doublereal d3, integer iNumCyc, doublereal d4)
 
 ~SineDriveCaller (void)
 
virtual DriveCallerpCopy (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
doublereal dGet (const doublereal &dVar) const
 
virtual bool bIsDifferentiable (void) const
 
virtual doublereal dGetP (const doublereal &dVar) const
 
- Public Member Functions inherited from DriveCaller
 DriveCaller (const DriveHandler *pDH)
 
virtual ~DriveCaller (void)
 
virtual doublereal dGet (void) const
 
virtual doublereal dGetP (void) const
 
virtual void SetDrvHdl (const DriveHandler *pDH)
 
virtual const DriveHandlerpGetDrvHdl (void) const
 
virtual void Output (OutputHandler &OH) const
 
virtual void Trace (OutputHandler &OH) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from Traceable
 Traceable (flag fTrace=0)
 
virtual ~Traceable (void)
 
virtual flag fToBeTraced (void) const
 
virtual void SetTraceFlag (flag f=TRACE)
 

Private Attributes

doublereal dStartTime
 
doublereal dOmega
 
doublereal dAmplitude
 
integer iNumCycles
 
doublereal dInitialValue
 
doublereal dEndTime
 
doublereal dFinalValue
 
bool bNeverEnd
 

Additional Inherited Members

- Public Types inherited from DriveCaller
enum  OutputFlags { OUTPUT_VALUE = OUTPUT_PRIVATE << 0, OUTPUT_DERIVATIVE = OUTPUT_PRIVATE << 1 }
 
enum  TraceFlags { TRACE_VALUE = TRACE_PRIVATE << 0, TRACE_DERIVATIVE = TRACE_PRIVATE << 1 }
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from Traceable
enum  { TRACE = 0x01U, TRACE_PUBLIC_MASK = 0x0FU, TRACE_PRIVATE = 0x10U, TRACE_PRIVATE_MASK = ~TRACE_PUBLIC_MASK }
 
- Protected Attributes inherited from DriveCaller
DriveHandlerpDrvHdl
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 

Detailed Description

Definition at line 758 of file drive_.h.

Constructor & Destructor Documentation

SineDriveCaller::SineDriveCaller ( const DriveHandler pDH,
doublereal  d1,
doublereal  d2,
doublereal  d3,
integer  iNumCyc,
doublereal  d4 
)

Definition at line 553 of file drive_.cc.

References bNeverEnd, dAmplitude, dEndTime, dFinalValue, dInitialValue, dOmega, dStartTime, iNumCycles, and M_PI.

Referenced by pCopy().

556 : DriveCaller(pDH),
557 dStartTime(d1), dOmega(d2), dAmplitude(d3),
558 iNumCycles(iNumCyc), dInitialValue(d4), bNeverEnd(false)
559 {
560  /* Onde di seno che partono da zero ed arrivano a0 */
561  if (iNumCycles > 0) {
564 
565  /* Onde di seno che continuano all'infinito */
566  } else if (iNumCycles == 0) {
567  dEndTime = 0.;
568  bNeverEnd = true;
569 
570  /* Onde di seno che partono da 0 ed arrivano ad 1
571  * con tangente orizzontale */
572  } else {
575  }
576 }
#define M_PI
Definition: gradienttest.cc:67
integer iNumCycles
Definition: drive_.h:763
doublereal dOmega
Definition: drive_.h:761
doublereal dEndTime
Definition: drive_.h:765
DriveCaller(const DriveHandler *pDH)
Definition: drive.cc:475
doublereal dFinalValue
Definition: drive_.h:766
doublereal dStartTime
Definition: drive_.h:760
doublereal dAmplitude
Definition: drive_.h:762
double doublereal
Definition: colamd.c:52
bool bNeverEnd
Definition: drive_.h:767
doublereal dInitialValue
Definition: drive_.h:764
SineDriveCaller::~SineDriveCaller ( void  )

Definition at line 578 of file drive_.cc.

References NO_OP.

579 {
580  NO_OP;
581 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

bool SineDriveCaller::bIsDifferentiable ( void  ) const
inlinevirtual

Reimplemented from DriveCaller.

Definition at line 810 of file drive_.h.

811 {
812  return true;
813 }
doublereal SineDriveCaller::dGet ( const doublereal dVar) const
inlinevirtual

Implements DriveCaller.

Definition at line 795 of file drive_.h.

References bNeverEnd, dAmplitude, dEndTime, dFinalValue, dInitialValue, dOmega, dStartTime, and grad::sin().

796 {
797  if (dVar <= dStartTime) {
798  return dInitialValue;
799  }
800 
801  if (bNeverEnd || dVar < dEndTime) {
802  return dInitialValue + dAmplitude*sin(dOmega*(dVar - dStartTime));
803  }
804 
805  /* else if dVar > dEndTime */
806  return dFinalValue;
807 }
GradientExpression< UnaryExpr< FuncSin, Expr > > sin(const GradientExpression< Expr > &u)
Definition: gradient.h:2977
doublereal dOmega
Definition: drive_.h:761
doublereal dEndTime
Definition: drive_.h:765
doublereal dFinalValue
Definition: drive_.h:766
doublereal dStartTime
Definition: drive_.h:760
doublereal dAmplitude
Definition: drive_.h:762
bool bNeverEnd
Definition: drive_.h:767
doublereal dInitialValue
Definition: drive_.h:764

Here is the call graph for this function:

doublereal SineDriveCaller::dGetP ( const doublereal dVar) const
inlinevirtual

Reimplemented from DriveCaller.

Definition at line 816 of file drive_.h.

References bNeverEnd, grad::cos(), dAmplitude, dEndTime, dOmega, and dStartTime.

817 {
818  if (dVar < dStartTime) {
819  return 0.;
820  }
821 
822  if (!bNeverEnd && dVar > dEndTime) {
823  return 0.;
824  }
825 
826  doublereal dVal = dAmplitude*dOmega*cos(dOmega*(dVar - dStartTime));
827 
828  if (dVar == dStartTime || (!bNeverEnd && dVar == dEndTime)) {
829  dVal /= 2.;
830  }
831 
832  return dVal;
833 }
doublereal dOmega
Definition: drive_.h:761
doublereal dEndTime
Definition: drive_.h:765
doublereal dStartTime
Definition: drive_.h:760
GradientExpression< UnaryExpr< FuncCos, Expr > > cos(const GradientExpression< Expr > &u)
Definition: gradient.h:2978
doublereal dAmplitude
Definition: drive_.h:762
double doublereal
Definition: colamd.c:52
bool bNeverEnd
Definition: drive_.h:767

Here is the call graph for this function:

DriveCaller * SineDriveCaller::pCopy ( void  ) const
virtual

Implements DriveCaller.

Definition at line 585 of file drive_.cc.

References dAmplitude, dInitialValue, dOmega, dStartTime, iNumCycles, DriveCaller::pDrvHdl, SAFENEWWITHCONSTRUCTOR, and SineDriveCaller().

586 {
587  DriveCaller* pDC = 0;
591  return pDC;
592 }
integer iNumCycles
Definition: drive_.h:763
doublereal dOmega
Definition: drive_.h:761
doublereal dStartTime
Definition: drive_.h:760
DriveHandler * pDrvHdl
Definition: drive.h:444
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
doublereal dAmplitude
Definition: drive_.h:762
SineDriveCaller(const DriveHandler *pDH, doublereal d1, doublereal d2, doublereal d3, integer iNumCyc, doublereal d4)
Definition: drive_.cc:553
doublereal dInitialValue
Definition: drive_.h:764

Here is the call graph for this function:

std::ostream & SineDriveCaller::Restart ( std::ostream &  out) const
virtual

Implements DriveCaller.

Definition at line 596 of file drive_.cc.

References dAmplitude, dInitialValue, dOmega, dStartTime, and iNumCycles.

597 {
598  return out
599  << " sine, " << dStartTime
600  << ", " << dOmega
601  << ", " << dAmplitude
602  << ", " << iNumCycles
603  << ", " << dInitialValue;
604 }
integer iNumCycles
Definition: drive_.h:763
doublereal dOmega
Definition: drive_.h:761
doublereal dStartTime
Definition: drive_.h:760
doublereal dAmplitude
Definition: drive_.h:762
doublereal dInitialValue
Definition: drive_.h:764

Member Data Documentation

bool SineDriveCaller::bNeverEnd
private

Definition at line 767 of file drive_.h.

Referenced by dGet(), dGetP(), and SineDriveCaller().

doublereal SineDriveCaller::dAmplitude
private

Definition at line 762 of file drive_.h.

Referenced by dGet(), dGetP(), pCopy(), Restart(), and SineDriveCaller().

doublereal SineDriveCaller::dEndTime
private

Definition at line 765 of file drive_.h.

Referenced by dGet(), dGetP(), and SineDriveCaller().

doublereal SineDriveCaller::dFinalValue
private

Definition at line 766 of file drive_.h.

Referenced by dGet(), and SineDriveCaller().

doublereal SineDriveCaller::dInitialValue
private

Definition at line 764 of file drive_.h.

Referenced by dGet(), pCopy(), Restart(), and SineDriveCaller().

doublereal SineDriveCaller::dOmega
private

Definition at line 761 of file drive_.h.

Referenced by dGet(), dGetP(), pCopy(), Restart(), and SineDriveCaller().

doublereal SineDriveCaller::dStartTime
private

Definition at line 760 of file drive_.h.

Referenced by dGet(), dGetP(), pCopy(), Restart(), and SineDriveCaller().

integer SineDriveCaller::iNumCycles
private

Definition at line 763 of file drive_.h.

Referenced by pCopy(), Restart(), and SineDriveCaller().


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