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 #include <BeamIntegration.h>
00044
00045 class Node;
00046 class SectionForceDeformation;
00047 class CrdTransf2d;
00048 class Response;
00049
00050 class DispBeamColumn2d : public Element
00051 {
00052 public:
00053 DispBeamColumn2d(int tag, int nd1, int nd2,
00054 int numSections, SectionForceDeformation **s,
00055 BeamIntegration &bi, CrdTransf2d &coordTransf,
00056 double rho = 0.0);
00057 DispBeamColumn2d();
00058 ~DispBeamColumn2d();
00059
00060 const char *getClassType(void) const {return "DispBeamColumn2d";};
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
00070 int commitState(void);
00071 int revertToLastCommit(void);
00072 int revertToStart(void);
00073
00074
00075 int update(void);
00076 const Matrix &getTangentStiff(void);
00077 const Matrix &getInitialStiff(void);
00078 const Matrix &getMass(void);
00079
00080 void zeroLoad();
00081 int addLoad(ElementalLoad *theLoad, double loadFactor);
00082 int addInertiaLoadToUnbalance(const Vector &accel);
00083
00084 const Vector &getResistingForce(void);
00085 const Vector &getResistingForceIncInertia(void);
00086
00087
00088 int sendSelf(int commitTag, Channel &theChannel);
00089 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker
00090 &theBroker);
00091 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00092 void Print(OPS_Stream &s, int flag =0);
00093
00094 Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00095 int getResponse(int responseID, Information &eleInfo);
00096
00097
00098 int setParameter(const char **argv, int argc, Parameter ¶m);
00099 int updateParameter(int parameterID, Information &info);
00100 int activateParameter(int parameterID);
00101 const Vector & getResistingForceSensitivity(int gradNumber);
00102 const Matrix & getKiSensitivity(int gradNumber);
00103 const Matrix & getMassSensitivity(int gradNumber);
00104 int commitSensitivity(int gradNumber, int numGrads);
00105
00106
00107 protected:
00108
00109 private:
00110 const Matrix &getInitialBasicStiff(void);
00111
00112 int numSections;
00113 SectionForceDeformation **theSections;
00114 CrdTransf2d *crdTransf;
00115
00116 BeamIntegration *beamInt;
00117
00118 ID connectedExternalNodes;
00119
00120 Node *theNodes[2];
00121
00122 static Matrix K;
00123 static Vector P;
00124
00125 Vector Q;
00126 Vector q;
00127 double q0[3];
00128 double p0[3];
00129
00130 double rho;
00131
00132 static double workArea[];
00133
00134
00135 int parameterID;
00136
00137 };
00138
00139 #endif
00140