00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00016
00017 #ifndef EIGHTNODE_LDBRICK_U_P_H
00018 #define EIGHTNODE_LDBRICK_U_P_H
00019
00020 #ifndef _bool_h
00021 #include "bool.h"
00022 #endif
00023
00024 #include <Information.h>
00025 #include <ElementResponse.h>
00026 #include <ElementalLoad.h>
00027 #include <Domain.h>
00028 #include <Node.h>
00029 #include <Channel.h>
00030 #include <FEM_ObjectBroker.h>
00031 #include <Renderer.h>
00032 #include <OPS_Globals.h>
00033
00034 #include <Element.h>
00035 #include <NDMaterial.h>
00036
00037 #include <Vector.h>
00038 #include <Matrix.h>
00039 #include <BJtensor.h>
00040 #include <stresst.h>
00041 #include <straint.h>
00042
00043 class EightNode_LDBrick_u_p: public Element
00044 {
00045 public:
00046 EightNode_LDBrick_u_p(int element_number,
00047 int node_numb_1, int node_numb_2, int node_numb_3, int node_numb_4,
00048 int node_numb_5, int node_numb_6, int node_numb_7, int node_numb_8,
00049 NDMaterial *Globalmmodel, double b1, double b2, double b3,
00050 double nf, double rs, double rf,
00051 double permb_x, double permb_y, double permb_z,
00052 double kkf);
00053 EightNode_LDBrick_u_p();
00054 ~EightNode_LDBrick_u_p();
00055
00056 const char *getClassType(void) const {return "EightNode_LDBrick_u_p";};
00057
00058 int getNumExternalNodes(void) const;
00059 const ID &getExternalNodes(void);
00060 Node **getNodePtrs(void);
00061 int getNumDOF(void);
00062 void setDomain(Domain *theDomain);
00063
00064 int commitState(void);
00065 int revertToLastCommit(void);
00066 int revertToStart(void);
00067 int update(void);
00068
00069 const Matrix &getTangentStiff(void);
00070 const Matrix &getInitialStiff(void);
00071 const Matrix &getDamp(void);
00072 const Matrix &getMass(void);
00073
00074 void zeroLoad(void);
00075 int addLoad(ElementalLoad *theLoad, double loadFactor);
00076 int addInertiaLoadToUnbalance(const Vector &accel);
00077 const Vector &getResistingForce(void);
00078 const Vector &getResistingForceIncInertia(void);
00079
00080 int sendSelf(int commitTag, Channel &theChannel);
00081 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00082 int displaySelf(Renderer &theViewer, int displayMode, float fact);
00083 void Print(OPS_Stream &s, int flag =0);
00084
00085 Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00086 int getResponse(int responseID, Information &eleInformation);
00087
00088
00089
00090
00091 private:
00092 tensor shapeFunction(double, double, double);
00093 tensor shapeFunctionDerivative(double, double, double);
00094 tensor getNodesCrds();
00095 tensor getNodesDisp();
00096 tensor Jacobian_3D(double, double, double);
00097 tensor Jacobian_3Dinv(double, double, double);
00098 tensor dh_Global(double, double, double);
00099
00100 tensor getGaussPts(void);
00101 double getPorePressure(double, double, double);
00102
00103 tensor getStiffnessTensorK1();
00104 tensor getStiffnessTensorK2();
00105 tensor getMassTensorM1();
00106 tensor getMassTensorM2();
00107 tensor getDampingTensorC1();
00108 tensor getDampingTensorC2();
00109 tensor getMatStiffness();
00110 const Matrix& getStiff(int Ki_flag);
00111 const Matrix& getStiffnessK0();
00112 const Vector& getInternalForce();
00113 const Vector& getForceU();
00114 const Vector& getForceP();
00115 tensor LagrangianPerm(const tensor& Finv, const tensor& permea, double Jin);
00116
00117 private:
00118 ID connectedExternalNodes;
00119 Node *theNodes[8];
00120 NDMaterial **theMaterial;
00121
00122 static Matrix MCK;
00123 static Vector P;
00124
00125 static const int Num_IntegrationPts;
00126 static const int Num_TotalGaussPts;
00127 static const int Num_Nodes;
00128 static const int Num_Dim;
00129 static const int Num_Dof;
00130 static const int Num_ElemDof;
00131 static const double pts[2];
00132 static const double wts[2];
00133 static tensor perm;
00134
00135 Vector bf;
00136 double nf;
00137 double rho_s;
00138 double rho_f;
00139 double kf;
00140
00141 Vector *Q;
00142 Matrix *Ki;
00143 };
00144
00145
00146 #endif
00147