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 DispBeamColumn2d_h
00033 #define DispBeamColumn2d_h
00034
00035 #ifndef _bool_h
00036 #include "bool.h"
00037 #endif
00038
00039 #include <Element.h>
00040 #include <Matrix.h>
00041 #include <Vector.h>
00042 #include <ID.h>
00043
00044 #include <Node.h>
00045 #include <SectionForceDeformation.h>
00046 #include <CrdTransf2d.h>
00047 #include <Response.h>
00048
00050 class DispBeamColumn2d : public Element
00051 {
00052 public:
00054 DispBeamColumn2d(int tag, int nd1, int nd2,
00055 int numSections, SectionForceDeformation &s,
00056 CrdTransf2d &coordTransf, double rho = 0.0);
00058 DispBeamColumn2d();
00060 virtual ~DispBeamColumn2d();
00061
00063 int getNumExternalNodes(void) const;
00065 const ID &getExternalNodes(void);
00067 int getNumDOF(void);
00069 void setDomain(Domain *theDomain);
00070
00072 int commitState(void);
00074 int revertToLastCommit(void);
00076 int revertToStart(void);
00077
00079 int update(void);
00081 const Matrix &getTangentStiff(void);
00083 const Matrix &getSecantStiff(void);
00085 const Matrix &getDamp(void);
00087 const Matrix &getMass(void);
00088
00090 void zeroLoad();
00092 int addLoad(const Vector &addLoad);
00094 int addInertiaLoadToUnbalance(const Vector &accel);
00096 const Vector &getResistingForce(void);
00098 const Vector &getResistingForceIncInertia(void);
00099
00101 int sendSelf(int commitTag, Channel &theChannel);
00103 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker
00104 &theBroker);
00106 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00108 void Print(ostream &s, int flag =0);
00109
00111 Response *setResponse(char **argv, int argc, Information &eleInfo);
00113 int getResponse(int responseID, Information &eleInfo);
00114
00115 protected:
00116
00117 private:
00119 int numSections;
00121 SectionForceDeformation **theSections;
00122 CrdTransf2d *crdTransf;
00123
00124 ID connectedExternalNodes;
00125 double L;
00126
00128 Node *nd1Ptr;
00129 Node *nd2Ptr;
00130
00132 static Matrix K;
00133 static Vector P;
00134 Vector Q;
00135 Vector q;
00136 double rho;
00137
00138 static double workArea[];
00139 };
00140
00141 #endif
00142
00143 ÿ