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
00026
00027
00028
00029
00030
00031
00032 #ifndef ElasticBeam3d_h
00033 #define ElasticBeam3d_h
00034
00035 #include <Element.h>
00036 #include <Node.h>
00037 #include <Matrix.h>
00038 #include <Vector.h>
00039
00040 class Channel;
00041 class Information;
00042 class CrdTransf3d;
00043 class Response;
00044 class Renderer;
00045 class SectionForceDeformation;
00046
00047 class ElasticBeam3d : public Element
00048 {
00049 public:
00050 ElasticBeam3d();
00051 ElasticBeam3d(int tag, double A, double E, double G,
00052 double Jx, double Iy, double Iz, int Nd1, int Nd2,
00053 CrdTransf3d &theTransf, double rho = 0.0, int sectionTag = 0);
00054
00055 ElasticBeam3d(int tag, int Nd1, int Nd2, SectionForceDeformation *section,
00056 CrdTransf3d &theTransf, double rho = 0.0);
00057
00058 ~ElasticBeam3d();
00059
00060 const char *getClassType(void) const {return "ElasticBeam3d";};
00061
00062 int getNumExternalNodes(void) const;
00063 const ID &getExternalNodes(void);
00064 Node **getNodePtrs(void);
00065
00066 int getNumDOF(void);
00067 void setDomain(Domain *theDomain);
00068
00069 int commitState(void);
00070 int revertToLastCommit(void);
00071 int revertToStart(void);
00072
00073 int update(void);
00074 const Matrix &getTangentStiff(void);
00075 const Matrix &getInitialStiff(void);
00076 const Matrix &getMass(void);
00077
00078 void zeroLoad(void);
00079 int addLoad(ElementalLoad *theLoad, double loadFactor);
00080 int addInertiaLoadToUnbalance(const Vector &accel);
00081
00082 const Vector &getResistingForce(void);
00083 const Vector &getResistingForceIncInertia(void);
00084
00085 int sendSelf(int commitTag, Channel &theChannel);
00086 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00087
00088 void Print(OPS_Stream &s, int flag =0);
00089 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00090
00091 Response *setResponse (const char **argv, int argc, Information &info, OPS_Stream &s);
00092 int getResponse (int responseID, Information &info);
00093
00094 private:
00095 double A,E,G,Jx,Iy,Iz;
00096
00097 double rho;
00098 int sectionTag;
00099
00100 static Matrix K;
00101 static Vector P;
00102 Vector Q;
00103
00104 static Matrix kb;
00105 Vector q;
00106 double q0[5];
00107 double p0[5];
00108
00109 Node *theNodes[2];
00110
00111 ID connectedExternalNodes;
00112
00113 CrdTransf3d *theCoordTransf;
00114 };
00115
00116 #endif
00117
00118