FiniteDeformationEP3D.h

Go to the documentation of this file.
00001 //===============================================================================
00002 //# COPYRIGHT (C): Woody's license (by BJ):
00003 //                 ``This    source  code is Copyrighted in
00004 //                 U.S.,  for  an  indefinite  period,  and anybody
00005 //                 caught  using it without our permission, will be
00006 //                 mighty good friends of ourn, cause we don't give
00007 //                 a  darn.  Hack it. Compile it. Debug it. Run it.
00008 //                 Yodel  it.  Enjoy it. We wrote it, that's all we
00009 //                 wanted to do.''
00010 //
00011 //# PROJECT:           Object Oriented Finite Element Program
00012 //# PURPOSE:           Finite Deformation Hyper-Elastic classes
00013 //# CLASS:
00014 //#
00015 //# VERSION:           0.6_(1803398874989) (golden section)
00016 //# LANGUAGE:          C++
00017 //# TARGET OS:         all...
00018 //# DESIGN:            Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
00019 //# PROGRAMMER(S):     Zhao Cheng, Boris Jeremic
00020 //#
00021 //#
00022 //# DATE:              July 2004
00023 //# UPDATE HISTORY:
00024 //#
00025 //===============================================================================
00026 #ifndef FiniteDeformationEP3D_H
00027 #define FiniteDefornationEP3D_H
00028 
00029 #include <NDMaterial.h>
00030 
00031 #include "FDEPState.h"
00032 #include "FiniteDeformationElastic3D.h"
00033 
00034 #include <fdYield.h>
00035 #include <fdFlow.h>
00036 #include <fdEvolution_S.h>
00037 #include <fdEvolution_T.h>
00038 
00039 #include <FEM_ObjectBroker.h>
00040 #include <Channel.h>
00041 #include <OPS_Globals.h>
00042 #include <ConsoleErrorHandler.h>
00043 
00044 #include <stresst.h>
00045 #include <straint.h>
00046 #include <BJmatrix.h>
00047 #include <BJvector.h>
00048 
00049 class FiniteDeformationEP3D : public NDMaterial
00050 {
00051 public:
00052   // Constructor 00
00053   FiniteDeformationEP3D( );
00054   // Constructor 01
00055   FiniteDeformationEP3D(int tag,
00056                         NDMaterial *fde3d_in,
00057                         fdYield *fdy_in,
00058                         fdFlow *fdf_in,
00059                         fdEvolution_S *fdEvolutionS_in,
00060                         fdEvolution_T *fdEvolutionT_in);
00061   // Constructor 02
00062   FiniteDeformationEP3D(int tag,
00063                         NDMaterial *fde3d_in,
00064                         fdYield *fdy_in,
00065                         fdFlow *fdf_in,
00066                         fdEvolution_S *fdEvolutionS_in);
00067   // Constructor 03
00068   FiniteDeformationEP3D(int tag,
00069                         NDMaterial *fde3d_in,
00070                         fdYield *fdy_in,
00071                         fdFlow *fdf_in,
00072                         fdEvolution_T *fdEvolutionT_in);
00073   // Constructor 04
00074   FiniteDeformationEP3D(int tag,
00075                         NDMaterial *fde3d_in,
00076                         fdYield *fdy_in,
00077                         fdFlow *fdf_in);
00078   // Destructor
00079   virtual ~FiniteDeformationEP3D( );
00080     const char *getClassType(void) const {return "FiniteDeformationEP3D";};
00081   
00082   double getRho(void);  
00083 
00084   int setTrialF(const straintensor &f);
00085   int setTrialFIncr(const straintensor &df);
00086 
00087   const Tensor& getTangentTensor(void) ;
00088 
00089   const  straintensor& getStrainTensor(void) ;  // Default Green Strain
00090   const  stresstensor& getStressTensor(void) ;  // Default 2nd Piola Kirchhoff Stress
00091   const  straintensor& getF(void);
00092   const  straintensor& getFp(void);
00093 
00094   int commitState(void) ;
00095   int revertToLastCommit(void) ;
00096   int revertToStart(void) ;
00097 
00098   NDMaterial *getCopy (void);
00099   NDMaterial *getCopy (const char *type);
00100 
00101   const char *getType (void) const;
00102   //int getOrder (void) const;
00103 
00104   int sendSelf(int commitTag, Channel &theChannel);
00105   int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00106 
00107   void Print(OPS_Stream &s, int flag);
00108 
00109   const  stresstensor& getCauchyStressTensor(void);
00110   const  stresstensor& getPK1StressTensor(void) ;
00111   
00112 private:
00113 
00114   NDMaterial *getFDE3D() const;
00115   fdYield *getFDY() const;
00116   fdFlow *getFDF() const;
00117   fdEvolution_S *getFDEvolutionS() const;
00118   fdEvolution_T *getFDEvolutionT() const;  
00119   FDEPState *getFDEPState() const; 
00120 
00121   int ImplicitAlgorithm();
00122   int SemiImplicitAlgorithm();
00123 
00124 private:
00125   NDMaterial *fde3d;
00126   fdYield *fdy;
00127   fdFlow *fdf;
00128   fdEvolution_S *fdEvolutionS;
00129   fdEvolution_T *fdEvolutionT;
00130 
00131   //material input
00132   straintensor F;
00133 
00134   //material response
00135   straintensor iniGreen;
00136   stresstensor iniPK2;
00137   tensor iniTangent;
00138   
00139   stresstensor B_PK2;
00140   straintensor Fe;
00141   //stresstensor cauchystress;
00142   
00143   FDEPState *fdeps;
00144   
00145   static stresstensor static_stress; //Only for reference return
00146   static straintensor static_strain; //Only for reference return
00147 
00148 
00149 };
00150 
00151 #endif

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