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 #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
00053 FiniteDeformationEP3D( );
00054
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
00062 FiniteDeformationEP3D(int tag,
00063 NDMaterial *fde3d_in,
00064 fdYield *fdy_in,
00065 fdFlow *fdf_in,
00066 fdEvolution_S *fdEvolutionS_in);
00067
00068 FiniteDeformationEP3D(int tag,
00069 NDMaterial *fde3d_in,
00070 fdYield *fdy_in,
00071 fdFlow *fdf_in,
00072 fdEvolution_T *fdEvolutionT_in);
00073
00074 FiniteDeformationEP3D(int tag,
00075 NDMaterial *fde3d_in,
00076 fdYield *fdy_in,
00077 fdFlow *fdf_in);
00078
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) ;
00090 const stresstensor& getStressTensor(void) ;
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
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
00132 straintensor F;
00133
00134
00135 straintensor iniGreen;
00136 stresstensor iniPK2;
00137 tensor iniTangent;
00138
00139 stresstensor B_PK2;
00140 straintensor Fe;
00141
00142
00143 FDEPState *fdeps;
00144
00145 static stresstensor static_stress;
00146 static straintensor static_strain;
00147
00148
00149 };
00150
00151 #endif