Changeset 3116
- Timestamp:
- 02/24/10 11:30:51 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/public/geography2.m
r3111 r3116 25 25 else 26 26 error('Invalid area option option'); 27 end 28 29 %Now, build the connectivity tables for this mesh. 30 if size(md.nodeconnectivity,1)~=md.numberofgrids, 31 md.nodeconnectivity=NodeConnectivity(md.elements,md.numberofgrids); 32 end 33 if size(md.elementconnectivity,1)~=md.numberofelements, 34 md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity); 27 35 end 28 36 … … 87 95 elementonwater=double(~elementonland); 88 96 89 90 97 %correct for islands: 91 98 gridoniceshelf=double(gridoniceshelf & ~gridonicesheet); … … 96 103 elementonicesheet=double(~elementoniceshelf & ~elementonwater); 97 104 105 %Deal with segments on neumann: 98 106 107 %Get current connectivity 108 elementconnectivity=md.elementconnectivity; 99 109 100 %Deal with segments on neumann: 101 elementconnectivity=md.elementconnectivity; 110 %put 0 for elements on water 102 111 pos=find(elementconnectivity); 103 elementconnectivity(pos)=element onwater(elementconnectivity(pos));112 elementconnectivity(pos)=elementconnectivity(pos).*(~elementonwater(elementconnectivity(pos))); 104 113 114 %put line of ones for elements on water 105 115 pos=find(elementonwater); 106 elementconnectivity(pos,:)= 0;116 elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered 107 117 108 num_segments=sum(sum(elementconnectivity)); 109 segments=zeros(num_segments,3);118 %resort lines (zeros must be at the last column for findsegments) 119 elementconnectivity=sort(elementconnectivity,2,'descend'); 110 120 111 icefrontelementsonland=find(sum(elementconnectivity,2)); 112 113 count=1; 114 for i=1:numel(icefrontelementsonland), 115 el1=icefrontelementsonland(i); 116 els2=md.elementconnectivity(el1,find(elementconnectivity(el1,:))); 117 for j=1:numel(els2), 118 el2=els2(j); 119 %we have a segment between land el1 and water el2: 120 segments(count,:)=[intersect(md.elements(el1,:),md.elements(el2,:)) el1]; 121 122 ord1=find(segments(count,1)==md.elements(el1,:)); 123 ord2=find(segments(count,2)==md.elements(el1,:)); 124 125 %swap segment grids if necessary 126 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 127 temp=segments(count,1); 128 segments(count,1)=segments(count,2); 129 segments(count,2)=temp; 130 end 131 segments(count,1:2)=fliplr(segments(count,1:2)); 132 133 count=count+1; 134 end 135 end 136 121 %call findsegments to build segment using THIS conectivity 122 md.segments=findsegments(md,'elementconnectivity',elementconnectivity); 137 123 138 124 %some final checks:
Note:
See TracChangeset
for help on using the changeset viewer.