StrainRate

PURPOSE ^

STRAINRATE - compute the strain rate on each element

SYNOPSIS ^

function strainrate=StrainRate(pentaelem,grids,materials,inputs)

DESCRIPTION ^

STRAINRATE - compute the strain rate on each element

  Usage:
      strainrate=StrainRate(pentaelem,grids,materials,inputs)

   See also GETSTRAINRATE, GETSTRAINRATESTOKES

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function strainrate=StrainRate(pentaelem,grids,materials,inputs)
0002 %STRAINRATE - compute the strain rate on each element
0003 %
0004 %  Usage:
0005 %      strainrate=StrainRate(pentaelem,grids,materials,inputs)
0006 %
0007 %   See also GETSTRAINRATE, GETSTRAINRATESTOKES
0008 
0009     %initialize
0010     strainrate=zeros(6,1);
0011     volume=0;
0012 
0013     %some variables
0014     NDOF1=1;
0015     numgrids=6;
0016 
0017     %Get all element grid data:
0018     xyz_list=getgriddata(pentaelem,grids);
0019 
0020     %recover extra inputs
0021     [velocity_param velocity_is_present]=recover_input(inputs,'velocity');
0022 
0023     %we need velocities to compute thermal profiles (even if it is a zero
0024     %vector).
0025     if ~velocity_is_present,
0026         error('StrainRate error message: input velocity not present!');
0027     end
0028 
0029     %initialize vxvyvz_list
0030     vxvyvz_list=zeros(numgrids,3);
0031 
0032     %Build row indices for elementary vector.
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     % Get gaussian points and weights
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     %Start  looping on the number of gaussian points:
0048     for igarea=1:num_area_gauss,
0049         for igvert=1:num_vert_gauss,
0050             %Pick up the gaussian point and its weight:
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             %Build strainrate
0055             strainrate_g=GetStrainRateStokes(pentaelem,vxvyvz_list,xyz_list,gauss_coord);
0056 
0057             %Get Jacobian determinant:
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 %for ig=1:vert_gauss,
0064     end %for ig=1:num_area_gauss,
0065 
0066 %Divide strainrate, integrated over volume, by volume.
0067 strainrate=strainrate/volume;

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003