Changeset 3114


Ignore:
Timestamp:
02/24/10 10:37:19 (15 years ago)
Author:
Mathieu Morlighem
Message:

Changed segments plot (much faster, pressureload-like)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/classes/public/plot/plot_segments.m

    r2439 r3114  
    1010subplot(width,width,i);
    1111
    12 %units
    13 if exist(options,'unit'),
    14         unit=getfieldvalue(options,'unit');
    15         md.x=md.x*unit;
    16         md.y=md.y*unit;
    17         md.z=md.z*unit;
    18 end
    19 
     12%process mesh and data
     13[x y z elements is2d]=processmesh(md,options);
    2014segments=md.segments;
    2115
    22 length=sqrt( (md.x(segments(:,1))-md.x(segments(:,2))).^2 + (md.y(segments(:,1))-md.y(segments(:,2))).^2 );
    23 %normal(:,1)=cos(atan2( (md.x(segments(:,1))-md.x(segments(:,2))) , (md.y(segments(:,2))-md.y(segments(:,1))) ) );
    24 %normal(:,2)=sin(atan2( (md.x(segments(:,1))-md.x(segments(:,2))) , (md.y(segments(:,2))-md.y(segments(:,1))) ) );
     16if strcmpi(md.type,'2d'),
     17        %plot mesh
     18        A=elements(:,1); B=elements(:,2); C=elements(:,3);
     19        h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
     20        hold on;
    2521
    26 if strcmpi(md.type,'2d'),
    27         for n=1:size(segments,1),
     22        %highlight elements on neumann
     23        pos=segments(:,end);
     24        A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
     25        h2=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','green','EdgeColor','black');
    2826
    29                 plot(md.x(segments(n,1:2)),md.y(segments(n,1:2)),'b-','linewidth',2);
    30                 hold on
    31                 plot(md.x(segments(n,1:2)),md.y(segments(n,1:2)),'r.','markersize',12);
    32 
    33                 %xstart=mean(md.x(segments(n,1:2)));
    34                 %ystart=mean(md.y(segments(n,1:2)));
    35 
    36                 %xend=xstart+length(n)*normal(n,1);
    37                 %yend=ystart+length(n)*normal(n,2);
    38 
    39                 %plot([xstart xend],[ystart yend],'r-')
    40                 legend('element edges on ice front','grids on ice front','normal vectors')
    41         end
     27        %display arrows pointing outward
     28        xstart=mean(x(segments(:,1:end-1)),2);
     29        ystart=mean(y(segments(:,1:end-1)),2);
     30        length=sqrt((x(segments(:,1))-x(segments(:,2))).^2 + (y(segments(:,1))-y(segments(:,2))).^2 );
     31        normal(:,1)=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
     32        normal(:,2)=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
     33        xend=xstart+length.*normal(:,1);
     34        yend=ystart+length.*normal(:,2);
     35        q=quiver(xstart,ystart,xend-xstart,yend-ystart); hold on;
     36        h3=plot(xstart,ystart,'r*');
    4237else
    4338        error('plot_segments: 3d plot of segments not supported yet!');
    4439end
     40
     41%legend (disable warnings)
     42warning off
     43legend([h2,q],'element on segment','normal vectors')
     44warning on
    4545
    4646%apply options
Note: See TracChangeset for help on using the changeset viewer.