00001 #ifndef INTPOINTS_H 00002 #define INTPOINTS_H 00003 00004 #include <stdio.h> 00005 #include "alias.h" 00006 #include "selection.h" 00007 #include "iotools.h" 00008 00009 /** 00010 Class intpoints: 00011 The class defines structure of integration point which is used in the mechmat class. 00012 Integeration point holds data about used materials and it also 00013 contains arrays of strains, stresses, internal variables of materialmodels and nonlocal values. 00014 Other array is used for internal variables and its size is defined by the used model. 00015 00016 Created by JK, Tomas Koudelka 00017 */ 00018 00019 class intpoints 00020 { 00021 public: 00022 intpoints (void); 00023 ~intpoints (void); 00024 void read (XFILE *in); 00025 00026 void alloc (long nlc,long ipp,long ncompnl); 00027 void alloc_strains (long nlc); 00028 void alloc_stresses (long nlc); 00029 void alloc_other (long ipp); 00030 void copy(intpoints &ip, long nlc, long ncompnl); 00031 00032 long gemid(void); 00033 long grmid(void); 00034 00035 void clean (long nlc); 00036 void clean_strains (long nlc); 00037 void clean_stresses (long nlc); 00038 void clean_other (); 00039 00040 void save_data_txt (FILE *aux,long nlc, sel &selother); 00041 void restore_data_txt (FILE *aux,long nlc, long ncompo, sel &selother, long *selid); 00042 void save_data_bin (FILE *aux,long nlc, sel &selother); 00043 void restore_data_bin (FILE *aux,long nlc, long ncompo, sel &selother, long *selid); 00044 00045 long give_ncompstr (); 00046 00047 00048 /// type of material 00049 mattype *tm; 00050 /// number of appropriate material type 00051 long *idm; 00052 /// number of material types defined at integration point 00053 long nm; 00054 /// bit array with material type presence flags (i.e nonlocal model, thermal dilatancy) 00055 long hmt; 00056 /// number of component of stress/strain array 00057 long ncompstr; 00058 /// number of component of eqother array 00059 long ncompeqother; 00060 /// number of component of other array 00061 long ncompother; 00062 /// stress-strain state 00063 strastrestate ssst; 00064 00065 /// stress components 00066 double *stress; 00067 /// strain components 00068 double *strain; 00069 /// other components 00070 double *other; 00071 /// equilibriated components of other array 00072 double *eqother; 00073 /// nonlocal values 00074 double *nonloc; 00075 00076 /* 00077 PLANE STRESS PROBLEMS 00078 strain components e_xx, e_yy, e_xy 00079 stress components s_xx, s_yy, s_xy 00080 00081 PLANE STRAIN PROBLEMS 00082 strain components e_xx, e_yy, e_xy 00083 stress components s_xx, s_yy, s_zz, s_xy 00084 00085 3D PROBLEMS 00086 strain components e_xx, e_yy, e_zz, e_yz, e_zx, e_xy 00087 stress components s_xx, s_yy, s_zz, s_yz, s_zx, s_xy 00088 00089 00090 ARRAY OTHER FOR VISCO-PLASTIC PROBLEMS 00091 other[0*ncompstr - (1*ncompstr-1)] - real stresses 00092 other[1*ncompstr - (2*ncompstr-1)] - irreversible strain increments 00093 other[2*ncompstr - (3*ncompstr-1)] - previous total strains 00094 other[3*ncompstr - ncompother] - hardening parameters 00095 00096 00097 00098 if thermal dilatancy is necessary, it is always the last component in the tm array and 00099 the variable hmt is equal to 1, otherwise is equal to 0 00100 00101 position of elastic material in the arrays tm or idm is defined by function gemid () 00102 ip[ipp].gemid () 00103 position of nonlocal material in the arrays tm or idm is defined by function gnlmid () 00104 ip[ipp].gnlmid () 00105 00106 ELASTIC MODELS 00107 tm[0] - type of elastic material 00108 (tm[1] - type of thermal dilatancy) 00109 00110 PLASTIC MODELS 00111 tm[0] - type of plastic model (type of yield function) 00112 tm[1] - type of elastic model 00113 (tm[2] - type of thermal dilatancy) 00114 00115 VISCO-PLASTIC MODELS 00116 tm[0] - type of viscous material model 00117 tm[1] - type of plastic model (type of yield function) 00118 tm[2] - type of elastic model 00119 (tm[3] - type of thermal dilatancy) 00120 00121 SCALAR DAMAGE MODELS 00122 tm[0] - type of damage model 00123 tm[1] - type of elastic model 00124 (tm[2] - type of thermal dilatancy) 00125 00126 */ 00127 00128 }; 00129 00130 #endif