0001 function strainrate=StrainRate(triaelem,grids,materials,inputs)
0002
0003
0004
0005
0006
0007
0008
0009
0010 strainrate=zeros(3,1);
0011 volume=0;
0012
0013
0014 NDOF1=1;
0015 numgrids=3;
0016
0017
0018 xyz_list=getgriddata(triaelem,grids);
0019
0020
0021 [velocity_param velocity_is_present]=recover_input(inputs,'velocity');
0022
0023
0024
0025 if ~velocity_is_present,
0026 error('StrainRate error message: input velocity not present!');
0027 end
0028
0029
0030 vxvy_list=zeros(numgrids,2);
0031
0032
0033 for i=1:numgrids,
0034 doflist=grids(triaelem.g(i)).grid.doflist;
0035 for j=1:2,
0036 dof=doflist(j);
0037 vxvy_list(i,j)=velocity_param(dof);
0038 end
0039 dof=doflist(1);
0040 end
0041
0042
0043 [num_area_gauss,first_area_gauss_coord,second_area_gauss_coord,third_area_gauss_coord,area_gauss_weights]=GaussTria(2);
0044
0045
0046 for igarea=1:num_area_gauss,
0047
0048 gauss_weight=area_gauss_weights(igarea);
0049 gauss_coord=[first_area_gauss_coord(igarea) second_area_gauss_coord(igarea) third_area_gauss_coord(igarea)];
0050
0051
0052 epsilon=GetStrainRate(triaelem,vxvy_list,xyz_list,gauss_coord);
0053 viscosity=GetViscosity2d(matice,epsilon);
0054
0055
0056 Jdet=GetJacobianDeterminant(triaelem,xyz_list,gauss_coord);
0057
0058 strainrate=strainrate+epsilon*Jdet*gauss_weight;
0059
0060 volume=volume+Jdet*gauss_weight;
0061 end
0062
0063
0064 strainrate=strainrate/volume;