00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef NineFourNodeQuadUP_h
00034
00035 #define NineFourNodeQuadUP_h
00036
00037
00038
00039 #ifndef _bool_h
00040
00041 #include "bool.h"
00042
00043 #endif
00044
00045
00046
00047 #include <Element.h>
00048
00049 #include <Matrix.h>
00050
00051 #include <Vector.h>
00052
00053 #include <ID.h>
00054
00055
00056
00057 class Node;
00058
00059 class NDMaterial;
00060
00061 class Response;
00062
00063
00064
00065 class NineFourNodeQuadUP : public Element
00066
00067 {
00068
00069 public:
00070
00071 NineFourNodeQuadUP(int tag, int nd1, int nd2, int nd3, int nd4,
00072
00073 int nd5, int nd6, int nd7, int nd8, int nd9,
00074
00075 NDMaterial &m, const char *type,
00076
00077 double t, double bulk, double rhof, double perm1, double perm2,
00078
00079 double b1 = 0.0, double b2 = 0.0);
00080
00081
00082
00083 NineFourNodeQuadUP();
00084
00085 virtual ~NineFourNodeQuadUP();
00086
00087 const char *getClassType(void) const {return "NineFourNodeQuadUP";};
00088
00089 int getNumExternalNodes(void) const;
00090
00091 const ID &getExternalNodes(void);
00092
00093 Node **getNodePtrs(void);
00094
00095
00096
00097 int getNumDOF(void);
00098
00099 void setDomain(Domain *theDomain);
00100
00101
00102
00103
00104
00105 int commitState(void);
00106
00107 int revertToLastCommit(void);
00108
00109 int revertToStart(void);
00110
00111 int update(void);
00112
00113
00114
00115
00116
00117 const Matrix &getTangentStiff(void);
00118
00119 const Matrix &getInitialStiff(void);
00120
00121 const Matrix &getDamp(void);
00122
00123 const Matrix &getMass(void);
00124
00125
00126
00127 void zeroLoad();
00128
00129 int addLoad(ElementalLoad *theLoad, double loadFactor);
00130
00131 int addInertiaLoadToUnbalance(const Vector &accel);
00132
00133 const Vector &getResistingForce(void);
00134
00135 const Vector &getResistingForceIncInertia(void);
00136
00137
00138
00139
00140
00141 int sendSelf(int commitTag, Channel &theChannel);
00142
00143 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker
00144
00145 &theBroker);
00146
00147 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00148
00149 void Print(OPS_Stream &s, int flag =0);
00150
00151
00152
00153 Response *setResponse(const char **argv, int argc, Information &eleInformation, OPS_Stream &s);
00154
00155 int getResponse(int responseID, Information &eleInformation);
00156
00157
00158
00159 int setParameter(const char **argv, int argc, Parameter ¶m);
00160
00161 int updateParameter(int parameterID, Information &info);
00162
00163
00164
00165
00166
00167 friend class PyLiq1;
00168
00169 friend class TzLiq1;
00170
00171
00172
00173 protected:
00174
00175
00176
00177 private:
00178
00179
00180
00181
00182
00183
00184
00185 NDMaterial **theMaterial;
00186
00187
00188
00189 ID connectedExternalNodes;
00190
00191
00192
00193 static Matrix K;
00194
00195 static Vector P;
00196
00197 Vector Q;
00198
00199 double b[2];
00200
00201 Matrix *Ki;
00202
00203 Node *theNodes[9];
00204
00205
00206
00207 double thickness;
00208
00209 double rho;
00210
00211 double kc;
00212
00213 double perm[2];
00214
00215 static const int nintu;
00216
00217 static const int nintp;
00218
00219 static const int nenu;
00220
00221 static const int nenp;
00222
00223
00224
00225 static double shgu[3][9][9];
00226
00227 static double shgp[3][4][4];
00228
00229 static double shgq[3][9][4];
00230
00231 static double shlu[3][9][9];
00232
00233 static double shlp[3][4][4];
00234
00235 static double shlq[3][9][4];
00236
00237 static double wu[9];
00238
00239 static double wp[4];
00240
00241 static double dvolu[9];
00242
00243 static double dvolp[4];
00244
00245 static double dvolq[4];
00246
00247
00248
00249
00250
00251 double mixtureRho(int ipt);
00252
00253 void shapeFunction(double *w, int nint, int nen, int mode);
00254
00255 void globalShapeFunction(double *dvol, double *w, int nint, int nen, int mode);
00256
00257 };
00258
00259
00260
00261 #endif