TotalLagrangianFD8NodeBrick.h

Go to the documentation of this file.
00001 //===============================================================================
00002 
00003 //# COPYRIGHT (C): Woody's license (by BJ):
00004 
00005 //                 ``This    source  code is Copyrighted in
00006 
00007 //                 U.S.,  for  an  indefinite  period,  and anybody
00008 
00009 //                 caught  using it without our permission, will be
00010 
00011 //                 mighty good friends of ourn, cause we don't give
00012 
00013 //                 a  darn.  Hack it. Compile it. Debug it. Run it.
00014 
00015 //                 Yodel  it.  Enjoy it. We wrote it, that's all we
00016 
00017 //                 wanted to do.''
00018 
00019 //
00020 
00021 //# PROJECT:           Object Oriented Finite Element Program
00022 
00023 //# PURPOSE:           Finite Deformation Hyper-Elastic classes
00024 
00025 //# CLASS:
00026 
00027 //#
00028 
00029 //# VERSION:           0.6_(1803398874989) (golden section)
00030 
00031 //# LANGUAGE:          C++
00032 
00033 //# TARGET OS:         all...
00034 
00035 //# DESIGN:            Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
00036 
00037 //# PROGRAMMER(S):     Zhao Cheng, Boris Jeremic
00038 
00039 //#
00040 
00041 //#
00042 
00043 //# DATE:              Sept2005              
00044 
00045 //# UPDATE HISTORY:    
00046 
00047 //#
00048 
00049 //#
00050 
00051 //===============================================================================
00052 
00053 #ifndef TOTALLAGRANGIANFD8BRICK_H
00054 
00055 #define TOTALLAGRANGIANFD8BRICK_H
00056 
00057 
00058 
00059 #ifndef _bool_h
00060 
00061 #include "bool.h"
00062 
00063 #endif
00064 
00065 
00066 
00067 #include <ID.h>
00068 
00069 #include <Renderer.h>
00070 
00071 #include <Domain.h>
00072 
00073 #include <Element.h>
00074 
00075 #include <Node.h>
00076 
00077 
00078 
00079 #include <string.h>
00080 
00081 
00082 
00083 #include <OPS_Globals.h>
00084 
00085 
00086 
00087 #include <basics.h>
00088 
00089 #include <nDarray.h>
00090 
00091 #include <Vector.h>
00092 
00093 #include <Matrix.h>
00094 
00095 #include <BJtensor.h>
00096 
00097 #include <stresst.h>
00098 
00099 #include <straint.h>
00100 
00101 
00102 
00103 #include <NDMaterial.h>
00104 
00105 
00106 
00107 #include <Information.h>
00108 
00109 #include <Channel.h>
00110 
00111 #include <FEM_ObjectBroker.h>
00112 
00113 #include <ElementResponse.h>
00114 
00115 #include <ElementalLoad.h>
00116 
00117 
00118 
00119 
00120 
00121 class TotalLagrangianFD8NodeBrick: public Element
00122 
00123 {
00124 
00125   public:
00126 
00127     TotalLagrangianFD8NodeBrick(int tag,
00128 
00129     int node_numb_1,  int node_numb_2,  int node_numb_3,  int node_numb_4,
00130 
00131     int node_numb_5,  int node_numb_6,  int node_numb_7,  int node_numb_8,
00132 
00133     NDMaterial &m, double b1=0.0, double b2=0.0, double b3=0.0);
00134 
00135 
00136 
00137     TotalLagrangianFD8NodeBrick ();
00138 
00139     ~TotalLagrangianFD8NodeBrick();
00140 
00141     
00142 
00143     const char *getClassType(void) const {return "TotalLagrangianFD8NodeBrick";};
00144 
00145 
00146 
00147     int getNumExternalNodes () const;
00148 
00149     const ID &getExternalNodes ();
00150 
00151     Node **getNodePtrs();
00152 
00153 
00154 
00155     int getNumDOF ();
00156 
00157     void setDomain(Domain *theDomain);
00158 
00159 
00160 
00161     int commitState ();
00162 
00163     int revertToLastCommit ();
00164 
00165     int revertToStart ();
00166 
00167     int update();
00168 
00169 
00170 
00171     const Matrix &getTangentStiff ();
00172 
00173     const Matrix &getInitialStiff();
00174 
00175     const Matrix &getMass ();
00176 
00177 
00178 
00179     void zeroLoad ();
00180 
00181     int addLoad(ElementalLoad *theLoad, double loadFactor);
00182 
00183     int addInertiaLoadToUnbalance(const Vector &accel);
00184 
00185 
00186 
00187     const Vector &getResistingForce ();
00188 
00189     const Vector &getResistingForceIncInertia ();
00190 
00191 
00192 
00193     // public methods for element output
00194 
00195     int sendSelf (int commitTag, Channel &theChannel);
00196 
00197     int recvSelf (int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00198 
00199     int displaySelf (Renderer &theViewer, int displayMode, float fact);
00200 
00201     void Print(OPS_Stream &s, int flag =0);
00202 
00203 
00204 
00205     Response *setResponse (const char **argv, int argc, Information &eleInformation, OPS_Stream &s);
00206 
00207     int getResponse (int responseID, Information &eleInformation);
00208 
00209 
00210 
00211 //    int setParameter(const char **argv, int argc, Information &info);
00212 
00213 //    int updateParameter(int parameterID, Information &info);
00214 
00215 
00216 
00217 
00218 
00219   protected:
00220 
00221 
00222 
00223   private:
00224 
00225 
00226 
00227     NDMaterial **theMaterial; // Pointer to the NDMaterial objects
00228 
00229     ID  connectedExternalNodes; // Tags of TotalLagrangianFD20Brick nodes
00230 
00231     Node *theNodes[8];
00232 
00233 
00234 
00235     static Matrix K;    // Element stiffness Matrix
00236 
00237 //    static Matrix C;    // Element damping matrix
00238 
00239     static Matrix M;    // Element mass matrix
00240 
00241     static Vector P;    // Element resisting force vector
00242 
00243     static const double pts[2];   // Stores quadrature points
00244 
00245     static const double wts[2];   // Stores quadrature weights
00246 
00247     Vector *Q;     // Applied nodal loads
00248 
00249     Vector bf;     // Body forces
00250 
00251 
00252 
00253     double rho;    // Mass per unit volume
00254 
00255 
00256 
00257     double det_of_Jacobian;
00258 
00259     
00260 
00261     Matrix *Ki;
00262 
00263 
00264 
00265   private:
00266 
00267 
00268 
00269     static const int  NumIntegrationPts;
00270 
00271     static const int  NumTotalGaussPts;
00272 
00273     static const int  NumNodes;
00274 
00275     static const int  NumDof;
00276 
00277     static const int  NumElemDof;
00278 
00279 
00280 
00281     tensor shapeFunction(double , double , double );
00282 
00283     tensor shapeFunctionDerivative(double , double , double );
00284 
00285 
00286 
00287     tensor Jacobian_3D(double , double , double);
00288 
00289     tensor Jacobian_3Dinv(double , double , double);
00290 
00291     tensor dh_Global(double , double , double);
00292 
00293     tensor getNodesCrds(void);
00294 
00295     tensor getNodesDisp(void);
00296 
00297 
00298 
00299     tensor getStiffnessTensor(void);
00300 
00301     tensor getRtensor(void);
00302 
00303     tensor getBodyForce(void);
00304 
00305     tensor getSurfaceForce(void);
00306 
00307     tensor getForces(void);
00308 
00309     
00310 
00311 };
00312 
00313 
00314 
00315 
00316 
00317 #endif
00318 
00319 
00320 

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