Changeset 1347
- Timestamp:
- 07/17/09 17:30:56 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/public/mesh/findsegments.m
r1346 r1347 15 15 num_segments=length(pos); 16 16 segments=zeros(num_segments,3); 17 count=1; 18 17 19 for i=1:num_segments, 18 20 el1=pos(i); 19 21 els2=elementconnectivity(el1,find(elementconnectivity(el1,:))); 20 flag=intersect(md.elements(els2(1),:),md.elements(els2(2),:)); 21 nods1=md.elements(el1,:); 22 nods1(find(nods1==flag))=[]; 23 segments(i,:)=[nods1 el1]; 22 if length(els2)>1, 23 flag=intersect(md.elements(els2(1),:),md.elements(els2(2),:)); 24 nods1=md.elements(el1,:); 25 nods1(find(nods1==flag))=[]; 26 segments(count,:)=[nods1 el1]; 24 27 25 ord1=find(nods1(1)==md.elements(el1,:));26 ord2=find(nods1(2)==md.elements(el1,:));28 ord1=find(nods1(1)==md.elements(el1,:)); 29 ord2=find(nods1(2)==md.elements(el1,:)); 27 30 28 %swap segment grids if necessary 29 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 30 temp=segments(i,1); 31 segments(i,1)=segments(i,2); 32 segments(i,2)=temp; 31 %swap segment grids if necessary 32 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 33 temp=segments(count,1); 34 segments(count,1)=segments(count,2); 35 segments(count,2)=temp; 36 end 37 segments(count,1:2)=fliplr(segments(count,1:2)); 38 count=count+1; 39 else 40 nods1=md.elements(el1,:); 41 flag=setdiff(nods1,md.elements(els2,:)); 42 for j=1:3, 43 nods=nods1; nods(j)=[]; 44 if any(ismember(flag,nods)), 45 segments(count,:)=[nods el1]; 46 ord1=find(nods(1)==md.elements(el1,:)); 47 ord2=find(nods(2)==md.elements(el1,:)); 48 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 49 temp=segments(count,1); 50 segments(count,1)=segments(count,2); 51 segments(count,2)=temp; 52 end 53 segments(count,1:2)=fliplr(segments(count,1:2)); 54 count=count+1; 55 end 56 end 33 57 end 34 segments(i,1:2)=fliplr(segments(i,1:2));35 58 end
Note:
See TracChangeset
for help on using the changeset viewer.