Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

rdActuator.h

00001 // rdActuator.h
00002 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00003 // Copyright 2002, 2003 Realistic Dynamics, Inc.
00004 // All rights reserved.
00005 //
00006 // Please do not read, copy, distribute, or use without permission.
00007 // Contact: Frank C. Anderson, fca@RealisticDynamics.com
00008 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00009 #ifndef __rdActuator_h__
00010 #define __rdActuator_h__
00011 
00012 #include <rdObject.h>
00013 #include "rdModel.h"
00014 
00015 
00016 //=============================================================================
00017 //=============================================================================
00025 class RDSIMULATION_API rdActuator : public rdObject
00026 {
00027 
00028 //=============================================================================
00029 // DATA
00030 //=============================================================================
00031 public:
00032    static const double LARGE;
00033    static const int NAME_LENGTH;
00034    static const char DEFAULT_NAME[];
00035    static const char PROP_MAXFORCE[];
00036    static const char PROP_MINFORCE[];
00037 
00038 protected:
00040    rdModel *_model;
00041 
00043    int _nx;
00045    char **_xNames;
00046 
00048    int _ny;
00050    char **_yNames;
00051 
00055    int _nyp;
00057    char **_ypNames;
00058 
00060    bool _appliesForce;
00062    double _force;
00064    double _speed;
00065 
00067    double _maxForce;
00069    double _minForce;
00070 
00071 
00072 //=============================================================================
00073 // METHODS
00074 //=============================================================================
00075    //--------------------------------------------------------------------------
00076    // CONSTRUCTION
00077    //--------------------------------------------------------------------------
00078 public:
00079    rdActuator(int aNX,int aNY,int aNYP);
00080    rdActuator(int aNX,int aNY,int aNYP,IDOM_Element *aElement);
00081    rdActuator(const rdActuator &aActuator);
00082    virtual ~rdActuator();
00083    virtual rdActuator* copy() const = 0;
00084    virtual rdActuator* copy(IDOM_Element *aElement) const = 0;
00085 private:
00086    void setNull();
00087    void constructControls();
00088    void constructStates();
00089    void constructPseudoStates();
00090 
00091    //--------------------------------------------------------------------------
00092    // OPERATORS
00093    //--------------------------------------------------------------------------
00094 public:
00095    rdActuator& operator=(const rdActuator &aActuator);
00096 
00097    //--------------------------------------------------------------------------
00098    // GET AND SET
00099    //--------------------------------------------------------------------------
00100 protected:
00101    void setControlName(int aIndex,const char *aName);
00102    void setStateName(int aIndex,const char *aName);
00103    void setPseudoStateName(int aIndex,const char *aName);
00104 public:
00105    // MODEL
00106    void setModel(rdModel *aModel);
00107    rdModel* getModel() const;
00108    // CONTROLS
00109    int getNX() const;
00110    const char* getControlName(int aIndex) const;
00111    virtual void setControls(const double aX[]);
00112    virtual void getControls(double rX[]) const;
00113    // STATES
00114    int getNY() const;
00115    const char* getStateName(int aIndex) const;
00116    virtual void setStates(const double aY[]);
00117    virtual void getStates(double rY[]) const;
00118    // PSEUDOSTATES
00119    int getNYP() const;
00120    const char* getPseudoStateName(int aIndex) const;
00121    virtual void setPseudoStates(const double aY[]);
00122    virtual void getPseudoStates(double rY[]) const;
00123    // FORCE
00124    bool getAppliesForce() const;
00125    void setForce(double aForce);
00126    double getForce() const;
00127    // SPEED
00128    double getSpeed() const;
00129    // POWER
00130    double getPower() const;
00131    // MAX FORCE
00132    void setMaxForce(double aMax);
00133    double getMaxForce() const;
00134    // MIN FORCE
00135    void setMinForce(double aMin);
00136    double getMinForce() const;
00137 
00138    //--------------------------------------------------------------------------
00139    // COMPUTATIONS
00140    //--------------------------------------------------------------------------
00141    virtual void promoteControlsToStates(const double aX[],double aDT);
00142    virtual void computeActuation() = 0;
00143    virtual void computeStateDerivatives(double rDYDT[]);
00144    virtual void updatePseudoStates();
00145 
00146    //--------------------------------------------------------------------------
00147    // APPLICATION
00148    //--------------------------------------------------------------------------
00149    virtual void apply() = 0;
00150 
00151    //--------------------------------------------------------------------------
00152    // CHECK
00153    //--------------------------------------------------------------------------
00154    virtual bool check() const;
00155    
00156    //--------------------------------------------------------------------------
00157    // XML
00158    //--------------------------------------------------------------------------
00159    virtual void updateObject(bool aDeep=true);
00160    virtual void updateNode(bool aDeep=true);
00161    virtual void generateNode(IDOM_Element *aParent);
00162    void updateData();
00163 
00164 //=============================================================================
00165 }; // END of class rdActuator
00166 //=============================================================================
00167 //=============================================================================
00168 
00169 #endif // __rdActuator_h__
00170 
00171 

Generated on Wed Aug 20 02:17:05 2003 for Simulation Software by doxygen1.3