0001 function [Mobj] = setup_metrics(Mobj)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
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
0035
0036
0037
0038 tri = Mobj.tri;
0039 nElems = Mobj.nElems;
0040 nVerts = Mobj.nVerts;
0041
0042
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
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
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
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