00001 #ifndef CHEN_H
00002 #define CHEN_H
00003
00004 #include <stdio.h>
00005 #include "strretalg.h"
00006 struct matrix;
00007 struct vector;
00008 struct atsel;
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 class chen
00020 {
00021 public:
00022 chen (void);
00023 ~chen (void);
00024 void read (FILE *in);
00025 void matstiff (matrix &d,long ipp,long ido);
00026 void tangentstiff (matrix &d,matrix &td,long ipp,long ido);
00027 void plasmod (matrix &h);
00028
00029 double yieldfunction (matrix &sig,vector &q);
00030 void deryieldfdsigma (matrix &sig,vector &q,matrix &dfds);
00031 void deryieldfdsigma_old (matrix &sig,matrix &dfds);
00032 void deryieldfdsigmadsigma (matrix &sig,matrix &dfdsds);
00033 void deryieldfdsigma_old_old (matrix &sig,matrix &dfds);
00034 void deryieldfdq (matrix &sig,vector &q,vector &dfdq);
00035 void deryieldfdqdq (matrix &sig,vector &q,matrix &dfdqdq);
00036 void deryieldfdsigmadq (matrix &sig,vector &q,matrix &dfdsdq);
00037 void deryieldfdqdq (matrix &dfdqdq);
00038
00039 void plasmod (long ipp,vector &epsp,matrix &sig,matrix &h);
00040 double plasmodscalar (vector &qtr);
00041 void updateq(long ipp,double dgamma,vector &epsp,matrix &sig,vector &q);
00042 void nlstresses (long ipp, long im, long ido);
00043 void nonloc_nlstresses (long ipp, long im, long ido);
00044 void updateval (long ipp, long im, long ido);
00045 void changeparam (atsel &atm,vector &val);
00046 double give_consparam (long ipp, long ido);
00047 long give_num_interparam ();
00048 void give_interparam (long ipp,long ido,vector &q);
00049
00050
00051
00052 double fyc;
00053
00054 double fyt;
00055
00056 double fybc;
00057
00058 double fc;
00059
00060 double ft;
00061
00062 double fbc;
00063
00064 double epsuc;
00065
00066 double epsut;
00067
00068
00069 double ay;
00070
00071 double au;
00072
00073 double ky;
00074
00075 double ku;
00076
00077
00078 double hp;
00079
00080
00081 strretalg sra;
00082
00083
00084 long state;
00085
00086 };
00087
00088 #endif