00001 #ifndef SHEFPLAST_H
00002 #define SHEFPLAST_H
00003
00004 #include "iotools.h"
00005 #include "alias.h"
00006 #include "strretalg.h"
00007 #include "matrix.h"
00008
00009 struct vector;
00010
00011
00012
00013
00014
00015
00016
00017
00018 class shefplast
00019 {
00020 public:
00021 shefplast (void);
00022 ~shefplast (void);
00023 void read (XFILE *in);
00024
00025 void compute_khat(matrix &sig, vector &q);
00026 void compute_rhoc(matrix &sig);
00027 void compute_r(matrix &sig);
00028 void compute_classvar (matrix &sig, vector &q);
00029 double yieldfunction (matrix &sig, vector &q);
00030 void deryieldfsigma (long ipp,matrix &sig, vector &q, matrix &dfds,long ido);
00031 void dderyieldfsigma (matrix &ddfds, strastrestate ssst);
00032 void derqdsigma (matrix &sig, matrix &drds);
00033 void derpotsigma (long ipp,matrix &sig, vector &q, matrix &dgds,long ido);
00034 void deryieldfq(matrix &sig, vector &q, vector &dq);
00035 void derkhatds (long ipp,matrix &sig, vector &q, matrix &dkhatds,long ido);
00036
00037
00038 void updateq(long ipp, vector &eps, matrix &sig, vector &q,long ido);
00039
00040 void matstiff (matrix &d, long ipp, long ido);
00041 void tangentstiff (matrix &d, matrix &td, long ipp,long ido);
00042 void nlstresses (long ipp,long ido);
00043 void updateval (long ipp, long ido);
00044 double give_consparam (long ipp, long ido);
00045
00046 void stress_return (long ipp,double &lambda,vector &k,vector &eps,vector &epsp, long ido);
00047 void compzeta();
00048 double hardening(long ipp,matrix &sigtens,vector &q,long ido);
00049 void numdiff_dfdsds(long ipp,matrix &sigtens,vector &q,matrix &dfdsds,long ido);
00050 void numdiff_dfdsdsc(long ipp,matrix &sigtens,vector &q,matrix &dfdsds,long ido);
00051 void numdiff_dfdsdk(long ipp,matrix &sigtens,vector &q,vector &dfdsdk,long ido);
00052 void numdiff_dfdsdkc(long ipp,matrix &sigtens,vector &q,vector &dfdsdk,long ido);
00053 void numdiff_dhds(long ipp,matrix &sigtens,vector &q,vector &dhds,long ido);
00054 void numdiff_dhdsc(long ipp,matrix &sigtens,vector &q,vector &dhds,long ido);
00055 void numdiff_dhdk(long ipp,matrix &sigtens,vector &q,double &dhdk,long ido);
00056 void numdiff_dhdkc(long ipp,matrix &sigtens,vector &q,double &dhdk,long ido);
00057
00058 double maxim (double a,double b);
00059
00060
00061 double rc;
00062
00063 double rt;
00064
00065 double gamma;
00066
00067 double p;
00068
00069 double a;
00070
00071 double k0;
00072
00073 double alpha;
00074
00075 double ah, bh, ch;
00076
00077 double kh0;
00078
00079
00080
00081
00082 matrix dev;
00083
00084 double i1s;
00085
00086 double j2s;
00087
00088 double j3s;
00089 double khat, rhoc, r, m, xi, ft;
00090 double b0, b1, c0, c1, c2, c3, c4, c5, theta, d0, d1, d2;
00091
00092
00093 double zeta;
00094
00095
00096 strretalg sra;
00097 };
00098
00099 #endif