Home > fvcom_prepro > setup_metrics.m

setup_metrics

PURPOSE ^

Setup metrics for mesh object Mesh

SYNOPSIS ^

function [Mobj] = setup_metrics(Mobj)

DESCRIPTION ^

 Setup metrics for mesh object Mesh  

 [Mobj] = setup_metrics(Mobj)

 DESCRIPTION:
    Setup metrics for secondary connectivity (nodes surrounding nodes) for Mesh

 INPUT
    Mobj = Matlab mesh object

 OUTPUT:
    Mobj = Matlab mesh object with secondary connectivity

 EXAMPLE USAGE
    Mobj = setup_metrics(Mobj)

 Author(s):  
    Geoff Cowles (University of Massachusetts Dartmouth)

 Revision history
   
==============================================================================

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [Mobj]  = setup_metrics(Mobj)
0002 
0003 % Setup metrics for mesh object Mesh
0004 %
0005 % [Mobj] = setup_metrics(Mobj)
0006 %
0007 % DESCRIPTION:
0008 %    Setup metrics for secondary connectivity (nodes surrounding nodes) for Mesh
0009 %
0010 % INPUT
0011 %    Mobj = Matlab mesh object
0012 %
0013 % OUTPUT:
0014 %    Mobj = Matlab mesh object with secondary connectivity
0015 %
0016 % EXAMPLE USAGE
0017 %    Mobj = setup_metrics(Mobj)
0018 %
0019 % Author(s):
0020 %    Geoff Cowles (University of Massachusetts Dartmouth)
0021 %
0022 % Revision history
0023 %
0024 %==============================================================================
0025 subname = 'setup_metrics';
0026 global ftbverbose
0027 if(ftbverbose)
0028   fprintf('\n')
0029   fprintf(['begin : ' subname '\n'])
0030 end;
0031 
0032 
0033 %------------------------------------------------------------------------------
0034 % Calculate metrics
0035 %------------------------------------------------------------------------------
0036 
0037 % set local arrays
0038 tri    = Mobj.tri;
0039 nElems = Mobj.nElems;
0040 nVerts = Mobj.nVerts;
0041 
0042 % set xc/yc if they don't exist
0043 if(~isfield(Mobj,'xc'));
0044   Mobj.xc = zeros(Mobj.nElems,1);
0045   Mobj.yc = zeros(Mobj.nElems,1);
0046   for i=1:Mobj.nElems
0047     Mobj.xc(i) = sum(Mobj.x(Mobj.tri(i,1:3)))/3.;
0048     Mobj.yc(i) = sum(Mobj.y(Mobj.tri(i,1:3)))/3.;
0049   end;
0050 end;
0051 
0052 
0053 % determine edges
0054 nEdges = nElems*3;
0055 edge = zeros(nEdges,2);
0056 icnt = 1;
0057 for i=1:nElems
0058   edge(icnt  ,1:2) = tri(i,1:2);
0059   edge(icnt+1,1:2) = tri(i,2:3);
0060   edge(icnt+2,1:2) = tri(i,[3,1]);
0061   icnt = icnt + 3;
0062 end;
0063 
0064 % determine nodes surrounding nodes (no specific order)
0065 ntsn = zeros(nVerts,1);
0066 nbsn = zeros(nVerts,12);
0067 
0068 for i=1:nEdges
0069   i1 = edge(i,1);
0070   i2 = edge(i,2);
0071   [lmin,loc] = min(abs(nbsn(i1,:)-i2));
0072   if(lmin ~= 0);
0073     ntsn(i1) = ntsn(i1)+1;
0074     nbsn(i1,ntsn(i1)) = i2;
0075   end;
0076   [lmin,loc] = min(abs(nbsn(i2,:)-i1));
0077   if(lmin ~= 0);
0078     ntsn(i2) = ntsn(i2)+1;
0079     nbsn(i2,ntsn(i2)) = i1;
0080   end;
0081 end;
0082 
0083 
0084 
0085 % transfer to struct
0086 Mobj.ntsn = ntsn;
0087 Mobj.nbsn = nbsn;
0088 Mobj.have_mets = true;
0089 
0090 if(ftbverbose)
0091   fprintf(['end   : ' subname '\n'])
0092 end;
0093

Generated on Wed 20-Feb-2019 16:06:01 by m2html © 2005