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 #ifndef FourNodeQuad_h
00032 #define FourNodeQuad_h
00033
00034 #ifndef _bool_h
00035 #include "bool.h"
00036 #endif
00037
00038 #include <Element.h>
00039 #include <Matrix.h>
00040 #include <Vector.h>
00041 #include <ID.h>
00042
00043 #include <Node.h>
00044 #include <NDMaterial.h>
00045 #include <Response.h>
00046
00048 class FourNodeQuad : public Element
00049 {
00050 public:
00052 FourNodeQuad(int tag, int nd1, int nd2, int nd3, int nd4,
00053 NDMaterial &m, const char *type,
00054 double t, double pressure = 0.0, double rho = 0.0,
00055 double b1 = 0.0, double b2 = 0.0);
00057 FourNodeQuad();
00059 virtual ~FourNodeQuad();
00060
00062 int getNumExternalNodes(void) const;
00064 const ID &getExternalNodes(void);
00066 int getNumDOF(void);
00068 void setDomain(Domain *theDomain);
00069
00071 int commitState(void);
00073 int revertToLastCommit(void);
00075 int revertToStart(void);
00076
00078 const Matrix &getTangentStiff(void);
00080 const Matrix &getSecantStiff(void);
00082 const Matrix &getDamp(void);
00084 const Matrix &getMass(void);
00085
00087 void zeroLoad();
00089 int addLoad(const Vector &addLoad);
00091 int addInertiaLoadToUnbalance(const Vector &accel);
00093 const Vector &getResistingForce(void);
00095 const Vector &getResistingForceIncInertia(void);
00096
00098 int sendSelf(int commitTag, Channel &theChannel);
00100 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker
00101 &theBroker);
00103 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00105 void Print(ostream &s, int flag =0);
00106
00108 Response *setResponse(char **argv, int argc, Information &eleInformation);
00110 int getResponse(int responseID, Information &eleInformation);
00111
00113 int setParameter(char **argv, int argc, Information &info);
00115 int updateParameter(int parameterID, Information &info);
00116
00117 protected:
00118
00119 private:
00121
00122 NDMaterial **theMaterial;
00123
00124 ID connectedExternalNodes;
00125
00126 Node *nd1Ptr;
00127 Node *nd2Ptr;
00129 Node *nd3Ptr;
00131 Node *nd4Ptr;
00132
00134 static Matrix K;
00135 static Vector P;
00136 Vector Q;
00137 double b[2];
00138 Vector pressureLoad;
00139
00140 double thickness;
00141 double rho;
00142 double pressure;
00144
00145 static double shp[3][4];
00146 static double pts[4][2];
00147 static double wts[4];
00148
00150 double shapeFunction(double xi, double eta);
00152 void setPressureLoadAtNodes(void);
00153 };
00154
00155 #endif
00156
00157 ÿ