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
00027 #ifndef FDdecoupledElastic3D_H
00028 #define FDdecoupledElastic3D_H
00029
00030 #include <FiniteDeformationElastic3D.h>
00031
00032 #include <W.h>
00033
00034 class FDdecoupledElastic3D : public FiniteDeformationElastic3D
00035 {
00036 public:
00037 FDdecoupledElastic3D(int tag, int classTag, WEnergy * , double );
00038 FDdecoupledElastic3D(int tag, WEnergy * , double );
00039 FDdecoupledElastic3D(int tag, WEnergy * );
00040 FDdecoupledElastic3D();
00041
00042 virtual ~FDdecoupledElastic3D();
00043
00044 FDdecoupledElastic3D(FDdecoupledElastic3D &fde3d);
00045
00046 const char *getClassType(void) const {return "FDdecoupledElastic3D";};
00047
00048 double getRho(void);
00049
00050 int setTrialF(const straintensor &f);
00051 int setTrialFIncr(const straintensor &df);
00052 int setTrialC(const straintensor &c);
00053 int setTrialCIncr(const straintensor &dc);
00054
00055 const Tensor& getTangentTensor(void) ;
00056 const Tensor& getInitialTangentTensor(void) ;
00057
00058 const straintensor& getStrainTensor(void) ;
00059 const stresstensor& getStressTensor(void) ;
00060 const straintensor& getF(void);
00061 const straintensor& getC(void);
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 int commitState(void) ;
00072 int revertToLastCommit(void) ;
00073 int revertToStart(void) ;
00074
00075 NDMaterial *getCopy (void);
00076 NDMaterial *getCopy (const char *type);
00077
00078 const char *getType (void) const;
00079
00080
00081 int sendSelf(int commitTag, Channel &theChannel);
00082 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00083
00084 void Print(OPS_Stream &s, int flag = 0);
00085
00086
00087
00088
00089 const stresstensor& getPK1StressTensor(void) ;
00090 const stresstensor& getCauchyStressTensor(void) ;
00091
00092 private:
00093
00094 WEnergy *getWEnergy(void);
00095
00096 const double getJ(void) ;
00097 const Vector getlambda(void) ;
00098 const Vector getlambda_wave(void) ;
00099
00100 const Vector wa(void) ;
00101 const Tensor Yab(void) ;
00102 const Tensor FDisoStiffness(void) ;
00103 const Tensor FDvolStiffness(void) ;
00104
00105
00106
00107 int ComputeTrials(void);
00108 int getCaseIndex(void);
00109
00110 protected:
00111
00112 WEnergy * W;
00113
00114 double rho;
00115
00116 straintensor F;
00117 straintensor C;
00118 double J;
00119 straintensor Cinv;
00120 double lambda1, lambda2, lambda3;
00121 double lambda_wave1, lambda_wave2, lambda_wave3;
00122 int caseIndex;
00123 int FromForC;
00124
00125 Tensor Stiffness;
00126 straintensor thisGreenStrain;
00127 stresstensor thisPK2Stress;
00128
00129 static stresstensor static_FDE_stress;
00130 };
00131
00132 #endif
00133