00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CorotTruss_h
00026 #define CorotTruss_h
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <Element.h>
00037 #include <Matrix.h>
00038 #include <Vector.h>
00039
00040 #include <Node.h>
00041 #include <Channel.h>
00042 #include <UniaxialMaterial.h>
00043
00045 class CorotTruss : public Element
00046 {
00047 public:
00049 CorotTruss(int tag, int dim,
00050 int Nd1, int Nd2,
00051 UniaxialMaterial &theMaterial,
00052 double A, double rho=0.0);
00053
00055 CorotTruss();
00057 ~CorotTruss();
00058
00060 int getNumExternalNodes(void) const;
00062 const ID &getExternalNodes(void);
00064 int getNumDOF(void);
00066 void setDomain(Domain *theDomain);
00067
00069 int commitState(void);
00071 int revertToLastCommit(void);
00073 int revertToStart(void);
00075 int update(void);
00076
00078 const Matrix &getTangentStiff(void);
00080 const Matrix &getSecantStiff(void);
00082 const Matrix &getDamp(void);
00084 const Matrix &getMass(void);
00085
00087 void zeroLoad(void);
00089 int addLoad(const Vector &addP);
00091 int addInertiaLoadToUnbalance(const Vector &accel);
00093 const Vector &getResistingForce(void);
00095 const Vector &getResistingForceIncInertia(void);
00096
00098 int sendSelf(int commitTag, Channel &theChannel);
00100 int recvSelf(int commitTag, Channel &theChannel,
00101 FEM_ObjectBroker &theBroker);
00103 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00105 void Print(ostream &s, int flag =0);
00106
00108 Response *setResponse(char **argv, int argc, Information &eleInfo);
00110 int getResponse(int responseID, Information &eleInformation);
00111
00112 protected:
00113
00114 private:
00115
00117 UniaxialMaterial *theMaterial;
00118 ID connectedExternalNodes;
00119 int numDOF;
00120 int numDIM;
00121
00122 double Lo;
00123 double Ln;
00124 double d21[3];
00125 double A;
00126 double M;
00127
00128 Node *end1Ptr;
00129 Node *end2Ptr;
00130
00131 Matrix R;
00132
00133 Matrix *theMatrix;
00134
00136 static Matrix M2;
00138 static Matrix M4;
00140 static Matrix M6;
00142 static Matrix M12;
00143
00145 Vector *theVector;
00146
00148 static Vector V2;
00150 static Vector V4;
00152 static Vector V6;
00154 static Vector V12;
00155 };
00156
00157 #endif
00158
00159
00160
00161
00162 ÿ