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
00034 #ifndef EIGHTNODEBRICK_U_P_U_H
00035 #define EIGHTNODEBRICK_U_P_U_H
00036
00037 #ifndef _bool_h
00038 #include "bool.h"
00039 #endif
00040
00041 #include <Information.h>
00042 #include <ElementResponse.h>
00043 #include <ElementalLoad.h>
00044 #include <Domain.h>
00045 #include <Node.h>
00046 #include <Channel.h>
00047 #include <FEM_ObjectBroker.h>
00048 #include <Renderer.h>
00049 #include <OPS_Globals.h>
00050
00051 #include <Element.h>
00052 #include <NDMaterial.h>
00053
00054 #include <Vector.h>
00055 #include <Matrix.h>
00056 #include <BJtensor.h>
00057 #include <stresst.h>
00058 #include <straint.h>
00059
00060 class EightNodeBrick_u_p_U: public Element
00061 {
00062 public:
00063 EightNodeBrick_u_p_U(int element_number,
00064 int node_numb_1, int node_numb_2, int node_numb_3, int node_numb_4,
00065 int node_numb_5, int node_numb_6, int node_numb_7, int node_numb_8,
00066 NDMaterial *Globalmmodel, double b1, double b2, double b3,
00067 double nn, double alf, double rs,double rf,
00068 double permb_x, double permb_y, double permb_z,
00069 double kks, double kkf, double pp);
00070 EightNodeBrick_u_p_U ();
00071 ~EightNodeBrick_u_p_U();
00072
00073 const char *getClassType(void) const {return "EightNodeBrick_u_P_U";};
00074
00075
00076 int getNumExternalNodes(void) const;
00077 const ID &getExternalNodes(void);
00078 Node **getNodePtrs(void);
00079 int getNumDOF(void);
00080 void setDomain(Domain *theDomain);
00081
00082
00083 int commitState(void);
00084 int revertToLastCommit(void);
00085 int revertToStart(void);
00086 int update(void);
00087
00088
00089 const Matrix &getTangentStiff(void);
00090 const Matrix &getInitialStiff(void);
00091 const Matrix &getDamp(void);
00092 const Matrix &getMass(void);
00093
00094 void zeroLoad(void);
00095 int addLoad(ElementalLoad *theLoad, double loadFactor);
00096 int addInertiaLoadToUnbalance(const Vector &accel);
00097 const Vector &getResistingForce(void);
00098 const Vector &getResistingForceIncInertia(void);
00099
00100
00101 int sendSelf(int commitTag, Channel &theChannel);
00102 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00103 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00104 void Print(OPS_Stream &s, int flag =0);
00105
00106 Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &output);
00107 int getResponse(int responseID, Information &eleInformation);
00108
00109
00110
00111
00112 private:
00113 tensor shapeFunction(double, double, double);
00114 tensor shapeFunctionDerivative(double, double, double);
00115 tensor getGaussPts(void);
00116 tensor getNodesCrds(void);
00117 tensor getNodesDisp(void);
00118 tensor Jacobian_3D(double, double, double);
00119 tensor Jacobian_3Dinv(double, double, double);
00120 tensor dh_Global(double, double, double);
00121
00122 tensor getStiffnessTensorKep();
00123 tensor getStiffnessTensorG12();
00124 tensor getMassTensorMsf();
00125 tensor getDampTensorC123();
00126 const Matrix& getStiff00(void);
00127 const Matrix& getStiff(int Ki_flag);
00128 double getPorePressure(double, double, double);
00129 const Vector& getInternalForce();
00130 const Vector& getBodyForce();
00131
00132 private:
00133 ID connectedExternalNodes;
00134 Node *theNodes[8] ;
00135 NDMaterial **theMaterial;
00136
00137 static Matrix MCK;
00138 static Vector P;
00139
00140 static const int Num_IntegrationPts;
00141 static const int Num_TotalGaussPts;
00142 static const int Num_Nodes;
00143 static const int Num_Dim;
00144 static const int Num_Dof;
00145 static const int Num_ElemDof;
00146 static const double pts[2];
00147 static const double wts[2];
00148
00149 Vector perm;
00150 Vector bf;
00151 double poro;
00152 double alpha;
00153 double rho_s;
00154 double rho_f;
00155 double ks;
00156 double kf;
00157 double pressure;
00158
00159 Vector *Q;
00160 Matrix *Ki;
00161 };
00162
00163
00164 #endif
00165