0001 function strainrate=StrainRate(pentaelem,grids,materials,inputs)
0002
0003
0004
0005
0006
0007
0008
0009
0010 strainrate=zeros(6,1);
0011 volume=0;
0012
0013
0014 NDOF1=1;
0015 numgrids=6;
0016
0017
0018 xyz_list=getgriddata(pentaelem,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 vxvyvz_list=zeros(numgrids,3);
0031
0032
0033 for i=1:numgrids,
0034 doflist=grids(pentaelem.g(i)).grid.doflist;
0035 for j=1:3,
0036 dof=doflist(j);
0037 vxvyvz_list(i,j)=velocity_param(dof);
0038 end
0039 dof=doflist(1);
0040 end
0041
0042
0043 area_order=2;
0044 num_vert_gauss=2;
0045 [num_area_gauss,first_area_gauss_coord,second_area_gauss_coord,third_area_gauss_coord,area_gauss_weights, vert_gauss_coord,vert_gauss_weights]=GaussPenta(area_order,num_vert_gauss);
0046
0047
0048 for igarea=1:num_area_gauss,
0049 for igvert=1:num_vert_gauss,
0050
0051 gauss_weight=area_gauss_weights(igarea)*vert_gauss_weights(igvert);
0052 gauss_coord=[first_area_gauss_coord(igarea) second_area_gauss_coord(igarea) third_area_gauss_coord(igarea) vert_gauss_coord(igvert)];
0053
0054
0055 strainrate_g=GetStrainRateStokes(pentaelem,vxvyvz_list,xyz_list,gauss_coord);
0056
0057
0058 Jdet=GetJacobianDeterminant(pentaelem,xyz_list,gauss_coord);
0059
0060 strainrate=strainrate+strainrate_g*Jdet*gauss_weight;
0061 volume=volume+Jdet*gauss_weight;
0062
0063 end
0064 end
0065
0066
0067 strainrate=strainrate/volume;