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
00028 double yieldfunction (matrix &sig,vector &q);
00029 void deryieldfdsigma (matrix &sig,vector &q,matrix &dfds);
00030 void deryieldfdsigma_old (matrix &sig,matrix &dfds);
00031 void deryieldfdsigmadsigma (matrix &sig,matrix &dfdsds);
00032 void deryieldfdsigma_old_old (matrix &sig,matrix &dfds);
00033 void deryieldfdq (matrix &sig,vector &q,vector &dfdq);
00034 void deryieldfdqdq (matrix &sig,vector &q,matrix &dfdqdq);
00035 void deryieldfdsigmadq (matrix &sig,vector &q,matrix &dfdsdq);
00036
00037 void plasmod (long ipp,vector &epsp,matrix &sig,matrix &h);
00038 double plasmodscalar (vector &qtr);
00039 void updateq(long ipp,double dgamma,vector &epsp,matrix &sig,vector &q);
00040 void nlstresses (long ipp, long im, long ido);
00041 void nonloc_nlstresses (long ipp, long im, long ido);
00042 void updateval (long ipp, long im, long ido);
00043 void changeparam (atsel &atm,vector &val);
00044 double give_consparam (long ipp, long ido);
00045 long give_num_interparam ();
00046 void give_interparam (long ipp,long ido,vector &q);
00047
00048
00049
00050 double fyc;
00051
00052 double fyt;
00053
00054 double fybc;
00055
00056 double fc;
00057
00058 double ft;
00059
00060 double fbc;
00061
00062 double epsu;
00063
00064
00065 double ay;
00066
00067 double au;
00068
00069 double ky;
00070
00071 double ku;
00072
00073 double alpha;
00074
00075 double beta;
00076
00077
00078 strretalg sra;
00079
00080
00081 long hard;
00082
00083 };
00084
00085 #endif