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 DispBeamColumn3d_h
00033 #define DispBeamColumn3d_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 #include <GaussQuadRule1d01.h>
00044
00045 class Node;
00046 class SectionForceDeformation;
00047 class CrdTransf3d;
00048 class Response;
00049
00050 class DispBeamColumn3d : public Element
00051 {
00052 public:
00053 DispBeamColumn3d(int tag, int nd1, int nd2,
00054 int numSections, SectionForceDeformation **s,
00055 CrdTransf3d &coordTransf, double rho = 0.0);
00056 DispBeamColumn3d();
00057 ~DispBeamColumn3d();
00058
00059 const char *getClassType(void) const {return "DispBeamColumn3d";};
00060
00061 int getNumExternalNodes(void) const;
00062 const ID &getExternalNodes(void);
00063 Node **getNodePtrs(void);
00064
00065 int getNumDOF(void);
00066 void setDomain(Domain *theDomain);
00067
00068
00069 int commitState(void);
00070 int revertToLastCommit(void);
00071 int revertToStart(void);
00072
00073
00074 int update(void);
00075 const Matrix &getTangentStiff(void);
00076 const Matrix &getInitialStiff(void);
00077 const Matrix &getMass(void);
00078
00079 void zeroLoad();
00080 int addLoad(ElementalLoad *theLoad, double loadFactor);
00081 int addInertiaLoadToUnbalance(const Vector &accel);
00082
00083 const Vector &getResistingForce(void);
00084 const Vector &getResistingForceIncInertia(void);
00085
00086
00087 int sendSelf(int commitTag, Channel &theChannel);
00088 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker
00089 &theBroker);
00090 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00091 void Print(OPS_Stream &s, int flag =0);
00092
00093 Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00094 int getResponse(int responseID, Information &eleInfo);
00095
00096 protected:
00097
00098 private:
00099 const Matrix &getInitialBasicStiff(void);
00100
00101 int numSections;
00102 SectionForceDeformation **theSections;
00103 CrdTransf3d *crdTransf;
00104
00105 ID connectedExternalNodes;
00106
00107 Node *theNodes[2];
00108
00109 static Matrix K;
00110 static Vector P;
00111
00112 Vector Q;
00113 Vector q;
00114 double q0[5];
00115 double p0[5];
00116
00117 double rho;
00118
00119 static double workArea[];
00120
00121 static GaussQuadRule1d01 quadRule;
00122 };
00123
00124 #endif
00125