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 #ifndef ZeroLengthSection_h
00034 #define ZeroLengthSection_h
00035
00036 #include <Element.h>
00037 #include <Matrix.h>
00038
00039
00040 #define LENTOL 1.0e-6
00041
00042 class Node;
00043 class Channel;
00044 class SectionForceDeformation;
00045 class Response;
00046
00047 class ZeroLengthSection : public Element
00048 {
00049 public:
00050
00051 ZeroLengthSection(int tag,
00052 int dimension,
00053 int Nd1, int Nd2,
00054 const Vector& x,
00055 const Vector& yprime,
00056 SectionForceDeformation& theSection);
00057
00058 ZeroLengthSection();
00059 ~ZeroLengthSection();
00060
00061 const char *getClassType(void) const {return "ZeroLengthSection";};
00062
00063
00064 int getNumExternalNodes(void) const;
00065 const ID &getExternalNodes(void);
00066 Node **getNodePtrs(void);
00067
00068 int getNumDOF(void);
00069 void setDomain(Domain *theDomain);
00070
00071
00072 int commitState(void);
00073 int revertToLastCommit(void);
00074 int revertToStart(void);
00075
00076
00077 const Matrix &getTangentStiff(void);
00078 const Matrix &getInitialStiff(void);
00079
00080 void zeroLoad(void);
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 &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 &eleInformation, OPS_Stream &output);
00094 int getResponse(int responseID, Information &eleInformation);
00095
00096 protected:
00097
00098 private:
00099
00100 void setUp (int Nd1, int Nd2, const Vector& x, const Vector& y);
00101 void setTransformation(void);
00102 void computeSectionDefs(void);
00103
00104
00105 ID connectedExternalNodes;
00106 int dimension;
00107 int numDOF;
00108 Matrix transformation;
00109
00110 Matrix *A;
00111 Vector *v;
00112
00113 Matrix *K;
00114 Vector *P;
00115
00116 Node *theNodes[2];
00117
00118 SectionForceDeformation *theSection;
00119 int order;
00120
00121
00122 static Matrix K6;
00123 static Matrix K12;
00124
00125
00126 static Vector P6;
00127 static Vector P12;
00128 };
00129
00130 #endif
00131
00132
00133
00134