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
00033
00034 #ifndef ElasticBeam3d_h
00035 #define ElasticBeam3d_h
00036
00037 #include <Element.h>
00038 #include <Node.h>
00039 #include <Matrix.h>
00040 #include <Vector.h>
00041
00042 #include <Channel.h>
00043 #include <Information.h>
00044 #include <CrdTransf3d.h>
00045 #include <Response.h>
00046 #include <Renderer.h>
00047
00049 class ElasticBeam3d : public Element
00050 {
00051 public:
00053 ElasticBeam3d();
00055 ElasticBeam3d(int tag, double A, double E, double G,
00056 double Jx, double Iy, double Iz, int Nd1, int Nd2,
00057 CrdTransf3d &theTransf, double rho = 0.0);
00059 ~ElasticBeam3d();
00060
00062 int getNumExternalNodes(void) const;
00064 const ID &getExternalNodes(void);
00066 int getNumDOF(void);
00068 void setDomain(Domain *theDomain);
00069
00071 int commitState(void);
00073 int revertToLastCommit(void);
00075 int revertToStart(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 &load);
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, FEM_ObjectBroker &theBroker);
00101
00103 void Print(ostream &s, int flag =0);
00105 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00106
00108 Response *setResponse (char **argv, int argc, Information &info);
00110 int getResponse (int responseID, Information &info);
00111
00112 private:
00114 double A,E,G,Jx,Iy,Iz;
00116 double L;
00117
00119 double rho;
00120
00122 static Matrix K;
00124 static Vector P;
00126 Vector Q;
00127
00129 static Matrix kb;
00131 Vector q;
00132
00134 Node *node1Ptr, *node2Ptr;
00135
00137 ID connectedExternalNodes;
00138
00140 CrdTransf3d *theCoordTransf;
00141 };
00142
00143 #endif
00144
00145
00146 ÿ