


Transfer a field from elements to vertices
[fieldout] = function elems2nodes(fieldin,Mobj)
DESCRIPTION:
Smooth a vertex based field
INPUT
Mobj = Matlab mesh object
fieldin = element-based field
OUTPUT:
fieldout = vertex-based field
EXAMPLE USAGE
f = smoothfield(fc,Mobj)
Author(s):
Geoff Cowles (University of Massachusetts Dartmouth)
Revision history
==============================================================================

0001 function [fieldout] = elems2nodes(fieldin,Mobj) 0002 0003 % Transfer a field from elements to vertices 0004 % 0005 % [fieldout] = function elems2nodes(fieldin,Mobj) 0006 % 0007 % DESCRIPTION: 0008 % Smooth a vertex based field 0009 % 0010 % INPUT 0011 % Mobj = Matlab mesh object 0012 % fieldin = element-based field 0013 % 0014 % OUTPUT: 0015 % fieldout = vertex-based field 0016 % 0017 % EXAMPLE USAGE 0018 % f = smoothfield(fc,Mobj) 0019 % 0020 % Author(s): 0021 % Geoff Cowles (University of Massachusetts Dartmouth) 0022 % 0023 % Revision history 0024 % 0025 %============================================================================== 0026 subname = 'elems2nodes'; 0027 %fprintf('\n') 0028 %fprintf(['begin : ' subname '\n']) 0029 0030 %------------------------------------------------------------------------------ 0031 % Parse input 0032 %------------------------------------------------------------------------------ 0033 0034 if(exist('fieldin')*exist('Mobj') == 0) 0035 error('arguments to elems2nodes are missing') 0036 end; 0037 0038 if(length(fieldin) ~= Mobj.nElems) 0039 error('field size in elems2nodes is not the same as number of elements in Mesh') 0040 end; 0041 0042 %------------------------------------------------------------------------------ 0043 % Tranfser 0044 %------------------------------------------------------------------------------ 0045 fieldout = zeros(Mobj.nVerts,1); 0046 count = zeros(Mobj.nVerts,1); 0047 0048 for i=1:Mobj.nElems 0049 n1 = Mobj.tri(i,1); 0050 n2 = Mobj.tri(i,2); 0051 n3 = Mobj.tri(i,3); 0052 fieldout(n1) = fieldout(n1) + fieldin(i); count(n1) = count(n1) + 1; 0053 fieldout(n2) = fieldout(n2) + fieldin(i); count(n2) = count(n2) + 1; 0054 fieldout(n3) = fieldout(n3) + fieldin(i); count(n3) = count(n3) + 1; 0055 end; 0056 fieldout = fieldout./real(count); 0057 0058 %fprintf(['end : ' subname '\n']) 0059