00001 #include "elastgmat3d.h"
00002 #include "global.h"
00003 #include "intpoints.h"
00004 #include "matrix.h"
00005
00006
00007
00008
00009
00010
00011
00012 elastgmat3d::elastgmat3d (void)
00013 {
00014 d11 = d12 = d13 = d14 = d15 = d16 = 0.0;
00015 d22 = d23 = d24 = d25 = d26 = 0.0;
00016 d33 = d34 = d35 = d36 = 0.0;
00017 d44 = d45 = d46 = 0.0;
00018 d55 = d56 = 0.0;
00019 d66 = 0.0;
00020 }
00021
00022
00023
00024
00025
00026
00027
00028
00029 elastgmat3d::~elastgmat3d (void)
00030 {
00031
00032 }
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 void elastgmat3d::read (XFILE *in)
00047 {
00048 xfscanf (in,"%lf %lf %lf %lf %lf %lf",&d11,&d12,&d13,&d14,&d15,&d16);
00049 xfscanf (in,"%lf %lf %lf %lf %lf",&d22,&d23,&d24,&d25,&d26);
00050 xfscanf (in,"%lf %lf %lf %lf",&d33,&d34,&d35,&d36);
00051 xfscanf (in,"%lf %lf %lf",&d44,&d45,&d46);
00052 xfscanf (in,"%lf %lf",&d55,&d56);
00053 xfscanf (in,"%lf",&d66);
00054 }
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 void elastgmat3d::matstiff (matrix &d)
00068 {
00069 d[0][0]=d11; d[0][1]=d12; d[0][2]=d13; d[0][3]=d14; d[0][4]=d15; d[0][5]=d16;
00070 d[1][0]=d12; d[1][1]=d22; d[1][2]=d23; d[1][3]=d24; d[1][4]=d25; d[1][5]=d26;
00071 d[2][0]=d13; d[2][1]=d23; d[2][2]=d33; d[2][3]=d34; d[2][4]=d35; d[2][5]=d36;
00072 d[3][0]=d14; d[3][1]=d24; d[3][2]=d34; d[3][3]=d44; d[3][4]=d45; d[3][5]=d46;
00073 d[4][0]=d15; d[4][1]=d25; d[4][2]=d35; d[4][3]=d45; d[4][4]=d55; d[4][5]=d56;
00074 d[5][0]=d16; d[5][1]=d26; d[5][2]=d36; d[5][3]=d46; d[5][4]=d56; d[5][5]=d66;
00075 }
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 void elastgmat3d::elmatstiff (matrix &d)
00089 {
00090 matstiff(d);
00091 }
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 void elastgmat3d::nlstresses (long ipp)
00106 {
00107 long i, n = Mm->ip[ipp].ncompstr;
00108 vector eps(n),sig(n);
00109 matrix d(n,n);
00110
00111
00112 for (i=0;i<n;i++){
00113 eps[i]=Mm->ip[ipp].strain[i];
00114 }
00115
00116 matstiff(d);
00117 mxv (d,eps,sig);
00118
00119 for (i=0;i<n;i++){
00120 Mm->ip[ipp].stress[i]=sig[i];
00121 }
00122 }