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

suPointMass3DIATaylor.h

00001 // suPointMass3DIATaylor.h
00002 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00003 // AUTHOR: Frank C. Anderson
00004 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00005 #ifndef __suPointMass3DIATaylor_h__
00006 #define __suPointMass3DIATaylor_h__
00007 
00008 
00009 //=============================================================================
00010 // INCLUDES
00011 //=============================================================================
00012 #include <rdTools.h>
00013 #include <rdModelDLL.h>
00014 #include <rdModel.h>
00015 #include <rdPointMass3D.h>
00016 #include "suPointMass3DIATaylorDLL.h"
00017 
00018 const int NNC = NNX + 6;
00019 
00020 //=============================================================================
00021 //=============================================================================
00026 class SUPOINTMASS3DIATAYLOR_API suPointMass3DIATaylor : public rdPointMass3D 
00027 {
00028 //=============================================================================
00029 // DATA
00030 //=============================================================================
00031 public:
00032    static const int NC;
00033    static const int NE;
00034    static const int NEFOOT;
00035    static const int NEFRC;
00036    static const int CMUS;
00037    static const int CLIG;
00038    static const int CGRAV;
00039    static const int CCEN;
00040    static const int CVEL;
00041    static const int CINER;
00042    static const int CALLMUS;
00043    static const int CALL;
00044    static const double SMALL;
00045 
00046 protected:
00047    char **_cNames;
00048    int _storageInterval;
00049    bool *_contactEstablished;
00050    double _tolContact,_tolPower;
00051    double *_sfrcLast,*_svelLast;
00052    double *_feContig,***_fe;
00053    double *_veContig,***_ve;
00054    double _at[NNC][3],_ah[NNC][NNU][3];
00055    rdStorage **_feStore;
00056    rdStorage **_veStore;
00057    rdStorage **_aeStore;
00058 
00059 //=============================================================================
00060 // METHODS
00061 //=============================================================================
00062 public:
00063    suPointMass3DIATaylor();
00064    virtual ~suPointMass3DIATaylor();
00065 private:
00066    void constructComponentNames();
00067    void allocateElementVectors();
00068    void deleteStorage();
00069 
00070 public:
00071    //--------------------------------------------------------------------------
00072    // GET AND SET
00073    //--------------------------------------------------------------------------
00074    // DECOMPOSITION
00075    void setPerformDecomposition(bool aTrueFalse,int aCapcity=100);
00076    rdStorage** getForceStorage();
00077    // STIFFNESSES
00078    void getStiffness(double aVel[3],double aPos[3],
00079          double aDFDP[3],double aDFDV[3]);
00080    // STORAGE INTERVAL
00081    void setStorageInterval(int aInterval);
00082    int getStorageInterval();
00083 
00084    //--------------------------------------------------------------------------
00085    // DECOMPOSITION
00086    //--------------------------------------------------------------------------
00087    void decompStep(double aDT,double aDFDP[3],double aDFDV[3],double aAcc[3],
00088          double aV[3],double aF[3]);
00089    void decompStep(double aDT,double aT,double aDFDP[3],double aDFDV[3],
00090          double aAcc[3],double aSVel[3],double aSFrc[3],
00091          double aV[3],double aF[3]);
00092    void compress(double aDT,double aDFDP,double aDFDV,double aAcc,
00093          double *aVe,double *aFe);
00094    void decompress(double aFrcLast,double aFrc,double aVelLast,double aVel,
00095          double *aVe,double *aFe);
00096    void correctForSliding(double aAlpha[3],double aF[3]);
00097    void correctForSliding(double aAlpha,double *aF);
00098    void computeHigherOrderDerivatives(int c,double t,double *dudt,
00099          double *ddudt,double *dddudt);
00100 
00101 
00102    //--------------------------------------------------------------------------
00103    // IO
00104    //--------------------------------------------------------------------------
00105    void printStorage(const char *aPath=NULL,double dt=-1.0);
00106 
00107    //--------------------------------------------------------------------------
00108    // CALLBACKS
00109    //--------------------------------------------------------------------------
00110    void
00111       integBeginCallback(int i,double dt,double t,double *x,double *y,
00112        void *cd=NULL);
00113    void
00114       integStepCallback(double *xtPrev,double *yPrev,int i,double dt,
00115        double t,double *xt,double *y,void *cd=NULL);
00116 
00117 //=============================================================================
00118 }; // END of class suPointMass3DIATaylor
00119 //=============================================================================
00120 //=============================================================================
00121 
00122 
00123 #endif // #ifndef __suPointMass3DIATaylor_h__

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