EightNode_LDBrick_u_p.h

Go to the documentation of this file.
00001 
00002 //
00003 // COPYRIGHT (C):     :-))
00004 // PROJECT:           Object Oriented Finite Element Program
00005 // FILE:              EightNodeBrick_u_p.cpp
00006 // CLASS:             EightNodeBrick_u_p
00007 // VERSION:
00008 // LANGUAGE:          C++
00009 // TARGET OS:         DOS || UNIX || . . .
00010 // DESIGNER:          Zhao Cheng, Boris Jeremic
00011 // PROGRAMMER:        Zhao Cheng, Boris Jeremic
00012 // DATE:              Aug. 2006
00013 // UPDATE HISTORY:    
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     //int setParameter (const char **argv, int argc, Information &info);
00089     //int updateParameter (int parameterID, Information &info);
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;            // Permeability = k/(rho_f*g)
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 

Generated on Mon Oct 23 15:05:11 2006 for OpenSees by doxygen 1.5.0