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
00032
00033 #ifndef Joint3D_h
00034 #define Joint3D_h
00035
00036 #include <bool.h>
00037 #include <Matrix.h>
00038 #include <Vector.h>
00039 #include <Element.h>
00040 #include <ID.h>
00041 #include <Domain.h>
00042
00043 class Node;
00044 class UniaxialMaterial;
00045 class Response;
00046
00047 class Joint3D : public Element
00048 {
00049 public:
00050 Joint3D();
00051
00052 Joint3D(int tag, int nd1, int nd2, int nd3, int nd4, int nd5, int nd6, int IntNodeTag,
00053 UniaxialMaterial &springx,
00054 UniaxialMaterial &springy,
00055 UniaxialMaterial &springz,
00056 Domain *theDomain,
00057 int LrgDisp);
00058
00059
00060 ~Joint3D();
00061
00062 const char *getClassType(void) const {return "Joint3D";};
00063
00064
00065 int getNumExternalNodes(void) const;
00066 const ID &getExternalNodes(void);
00067 Node **getNodePtrs(void);
00068 int getNumDOF(void);
00069
00070 void setDomain(Domain *theDomain);
00071 bool isSubdomain(void) { return false; } ;
00072
00073
00074 int update(void);
00075 int commitState(void);
00076 int revertToLastCommit(void);
00077 int revertToStart(void);
00078
00079
00080
00081 const Matrix &getTangentStiff(void);
00082 const Matrix &getInitialStiff(void);
00083 const Matrix &getDamp(void);
00084 const Matrix &getMass(void);
00085
00086
00087
00088 void zeroLoad(void);
00089 int addLoad(ElementalLoad *theLoad, double loadFactor);
00090 int addInertiaLoadToUnbalance(const Vector &accel);
00091
00092 const Vector &getResistingForce(void);
00093 const Vector &getResistingForceIncInertia(void);
00094
00095
00096 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00097
00098
00099 Response* setResponse(const char **argv, int argc, Information &eleInformation, OPS_Stream &s);
00100 int getResponse(int responseID, Information &eleInformation);
00101 int sendSelf(int commitTag, Channel &theChannel);
00102 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00103 void Print(OPS_Stream &s, int flag =0);
00104
00105
00106 protected:
00107 int addMP_Joint(Domain *theDomain, int mpNum, int RetNodeID, int ConNodeID,
00108 int RotNodeID, int Rdof, int DspNodeID, int Ddof,
00109 int LrgDispFlag );
00110
00111 private:
00112 UniaxialMaterial *theSprings[3];
00113 ID ExternalNodes;
00114 ID InternalConstraints;
00115 Node *theNodes[7];
00116 Domain *TheDomain;
00117 int numDof, nodeDbTag, dofDbTag;
00118 static Matrix K;
00119 static Vector V;
00120 };
00121
00122 #endif