Changeset 1126
- Timestamp:
- 06/26/09 11:57:18 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/public/geography2.m
r1111 r1126 1 1 function md=geography2(md,landname,iceshelfname,icesheetname) 2 3 2 %Get assigned fields 4 3 x=md.x; … … 7 6 8 7 %recover elements and grids on land. 9 [gridonland,elementonland]=ContourToMesh(elements,x,y,expread(landname,1),'element and node', 1);8 [gridonland,elementonland]=ContourToMesh(elements,x,y,expread(landname,1),'element and node',2); 10 9 11 10 %use segments to make sure gridonland is correct at the boundary: 12 gridonland(md.segments(:,1))=1;13 gridonland(md.segments( :,2))=1;14 11 pos=find(md.segmentmarkers==2); 12 gridonland(md.segments(pos,1))=1; 13 gridonland(md.segments(pos,2))=1; 15 14 %now, any elements with 3 grids on land should be on land: 16 15 elementsonwater=find(~elementonland); … … 42 41 elementoniceshelf=ones(md.numberofelements,1); 43 42 else 44 [gridoniceshelf,elementoniceshelf]=ContourToMesh(elements,x,y,expread(iceshelfname,1),'element and node', 1);43 [gridoniceshelf,elementoniceshelf]=ContourToMesh(elements,x,y,expread(iceshelfname,1),'element and node',2); 45 44 end 46 45 … … 49 48 elementonicesheet=zeros(md.numberofelements,1); 50 49 else 51 [gridonicesheet,elementonicesheet]=ContourToMesh(elements,x,y,expread(icesheetname,1),'element and node', 1);50 [gridonicesheet,elementonicesheet]=ContourToMesh(elements,x,y,expread(icesheetname,1),'element and node',2); 52 51 end 53 52 … … 65 64 gridonwater=double(~gridonland); 66 65 elementonwater=double(~elementonland); 66 67 67 68 68 %correct for islands: … … 89 89 90 90 %swap segments so they are all oriented the same way 91 maxcon=size(md.nodeconnectivity,2); 91 92 for i=1:length(segments), 92 pair=find( (md.elements(:,1)==segments(i,1) | md.elements(:,2)==segments(i,1) | md.elements(:,3)==segments(i,1) ) & ... 93 (md.elements(:,1)==segments(i,2) | md.elements(:,2)==segments(i,2) | md.elements(:,3)==segments(i,2) ) ...94 ); 93 94 pair=intersect(md.nodeconnectivity(segments(i,1),1:md.nodeconnectivity(segments(i,1),maxcon)),md.nodeconnectivity(segments(i,2),1:md.nodeconnectivity(segments(i,2),maxcon))); 95 95 96 if md.elementonwater(pair(1)), 96 97 segments(i,3)=pair(2); … … 98 99 segments(i,3)=pair(1); 99 100 end 101 100 102 ord1=find(segments(i,1)==md.elements(segments(i,3),:)); 101 103 ord2=find(segments(i,2)==md.elements(segments(i,3),:)); … … 108 110 end 109 111 segments(i,1:2)=fliplr(segments(i,1:2)); 112 110 113 end 111 114 md.segmentonneumann_diag=segments; 112 115 md.counter=2; 113 116 md.segmentmarkers(:)=1; 114 115
Note:
See TracChangeset
for help on using the changeset viewer.