00001 #ifndef ORTODAMROT_H 00002 #define ORTODAMROT_H 00003 00004 #include "iotools.h" 00005 #include "alias.h" 00006 #include "strretalg.h" 00007 struct matrix; 00008 struct vector; 00009 struct atsel; 00010 00011 /** 00012 This class defines ortoropic damage material model with crack rotation. 00013 The different type of norms for the computing parameters of 00014 the damage function can be used. 00015 The order of internal variables is following: 00016 0 - actual value of param At (actualized for the quasibrittle evolution law only) 00017 1 - actual value of param Ac (actualized for the quasibrittle evolution law only) 00018 2 .. 7 - attained values of damage tensor for tension (order of values corresponds to stress vector) 00019 8 .. 13 - attained values of damage tensor for compression (order of values corresponds to stress vector) 00020 14 .. 19 - attained values of inelastic strain tensor caused by damage (actualized for fatigue only) 00021 20 .. 22 - crack widths in the principal directions 00022 */ 00023 class ortodamrot 00024 { 00025 public: 00026 ortodamrot (void); 00027 ~ortodamrot (void); 00028 00029 void read (XFILE *in); 00030 double damdrvforce_vol(double nu, vector &peps); 00031 void damdrvforce_dev(double nu, vector &peps, vector &pyt, vector &pyc); 00032 void loadfunc(long ipp, double nu, vector &peps, vector &damt, vector &damc, double aat, double aac, vector &lft, vector &lfc); 00033 double brittle_damage(long ipp, double y, double e, double f, double uf, double omegao); 00034 double qbezier_damage(long ipp, double y, double e, double f, double uf, double ul, double omegao,long pq); 00035 void princ_dam(long ipp, vector &peps, double aat, double aac, vector &pdamt, vector &pdamc); 00036 void give_actual_param_a(long ipp, long ido, double &aat, double &aac); 00037 double give_actual_ft(long ipp); 00038 double give_actual_fc(long ipp); 00039 void initvalues(long ipp, long ido); 00040 void matstiff (matrix &d,long ipp,long ido); 00041 void pelmatstiff (long ipp, matrix &d,double e, double nu); 00042 void elmatstiff (matrix &d,long ipp); 00043 void nlstresses (long ipp, long im, long ido); 00044 void updateval (long ipp,long im,long ido); 00045 00046 00047 /// type of damage evolution function 00048 dam_evolfunc damevf; 00049 /// tensile strength 00050 double ft; 00051 /// initial crack opening u_ft or eps_ft - controls initial slope of softening branch for tension 00052 double uft; 00053 /// limit crack opening u_lt or eps_lt - limit value for zero stresses in tension 00054 double ult; 00055 /// compressive strength 00056 double fc; 00057 /// limit crack opening u_lc or eps_lc - limit value for zero stresses in compression 00058 double ulc; 00059 /// initial crack opening u_fc or eps_fc - controls initial slope of softening branch for compression 00060 double ufc; 00061 /// parameters for Newton tangent method for damage parameter computation for brittle evolution fucntion and correction of dissipated energy 00062 strretalg sra; 00063 /// correction of disipated energy switch 00064 corr_disip_en cde; 00065 /// material parameter At for tension 00066 double at; 00067 /// material parameter Bt for tension 00068 double bt; 00069 /// initial treshold for dimensionless damage driving force Y0 for tension 00070 double y0t; 00071 /// material parameter Ac for compression 00072 double ac; 00073 /// material parameter Bc for compression 00074 double bc; 00075 /// initial treshold for dimensionless damage driving force Y0 for compression 00076 double y0c; 00077 /// fracture energy of damage for tension 00078 double gft; 00079 /// fracture energy of damage for compression 00080 double gfc; 00081 /// indicator for singularity in quadratic Bezier evolution function for tension (pure quadratic function will be used instead Bezier one) 00082 long pqt; 00083 /// indicator for singularity in quadratic Bezier evolution function for compression (pure quadratic function will be used instead Bezier one) 00084 long pqc; 00085 /// flag for counting with fatigue 00086 fatigue_flag fat; 00087 /// coefficient of inelastic strains computed from damage parameter for tension 00088 double betat; 00089 /// coefficient of inelastic strains computed from damage parameter for compression 00090 double betac; 00091 }; 00092 00093 #endif