function showelem(fem_grid_struct,ie) %SHOWELEM highlight and display statistics on selected element % % SHOWELEM highlights a user-specified element, either % by mouse-click or by giving SHOWELEM an element number. % The mesh must have been previously drawn by the OPNML/MATLAB % routine DRAWELEMS for SHOWELEM to work. % % INPUT : fem_grid_struct - (from LOADGRID, see FEM_GRID_STRUCT) % ie - element to highlight (OPT) % If ie is not provided, SHOWELEM prompts the user to % click on the FEM element drawing to specify an element. % % OUTPUTS : NONE (display to figure) % % CALL : >> showelem(fem_grid_struct,ie) % or % >> showelem(fem_grid_struct) % % Written by : Brian O. Blanton % Fall 1997 % % VERIFY INCOMING STRUCTURE % if ~is_valid_struct(fem_grid_struct) error(' fem_grid_struct to SHOWELEM invalid.') end % determine if "drawelems" has been used to draw element picture if isempty(findobj(gca,'Type','line','Tag','elements')) disp('SHOWELEM will only work if DRAWELEMS drew the element picture'); error; end if ~exist('ie') ie=findelem(fem_grid_struct); end if ie==0,return,end currfig=gcf; x=fem_grid_struct.x; y=fem_grid_struct.y; e=fem_grid_struct.e; z=fem_grid_struct.z; xc=(x(e(ie,1))+x(e(ie,2))+x(e(ie,3)))/3; yc=(y(e(ie,1))+y(e(ie,2))+y(e(ie,3)))/3; xe=[x(e(ie,1)) x(e(ie,2)) x(e(ie,3)) x(e(ie,1))]; ye=[y(e(ie,1)) y(e(ie,2)) y(e(ie,3)) y(e(ie,1))]; patch(xe,ye,'r'); text(xc,yc,num2str(ie,6),'Color','g','HorizontalAlignment','Center'); delete(findobj(0,'Type','figure','Tag','Element Info Fig')); shfig=figure('Units','inches',... 'Position',[7 7 4 3],... 'NumberTitle','off',... 'Name',['Element ' int2str(ie) ' Information'],... 'Tag','Element Info Fig'); set(shfig,'Units','Normalized'); shax=axes('Position',[.1 .1 .8 .8],'Xlim',[-0.5 4.5],'Ylim',[-2.5 1.5]); set(shax,'Visible','off'); set(shax,'Box','on'); xe=(xe-min(xe)); xe=xe/max(xe); ye=(ye-min(ye)); ye=ye/max(ye); line(xe,ye); patch(xe,ye,'r'); text(xe(1),ye(1),int2str(e(ie,1)),... 'HorizontalAlignment','Center','Color','g'); text(xe(2),ye(2),int2str(e(ie,2)),... 'HorizontalAlignment','Center','Color','g'); text(xe(3),ye(3),int2str(e(ie,3)),... 'HorizontalAlignment','Center','Color','g'); n1=e(ie,1); n2=e(ie,2); n3=e(ie,3); text(1.75,1.,['Nodes : ' int2str(n1) ]); text(1.75,.7,[' ' int2str(n2)]) text(1.75,.4,[' ' int2str(n3)]) text(-.5,-.5,['X = { ' num2str(x(n1)) ' ' num2str(x(n2)) ' ' num2str(x(n3)) ... ' }']) text(-.5,-1.,['Y = { ' num2str(y(n1)) ' ' num2str(y(n2)) ' ' num2str(y(n3)) ... ' }']) if exist('z') text(-.5,-1.5,['Z = { ' num2str(z(n1)) ' ' num2str(z(n2)) ' ' ... num2str(z(n3)) ' }']) end if ~isempty(fem_grid_struct.ar) dy1=y(n2)-y(n3); dy2=y(n3)-y(n1); dy3=y(n1)-y(n2); area=0.5d0*(x(n1)*dy1 + x(n2)*dy2 + x(n3)*dy3) text(1.75,0,['Area = ' num2str(area)]) end figure(currfig); % % Brian O. Blanton % Department of Marine Sciences % 15-1A Venable Hall % CB# 3300 % Uni. of North Carolina % Chapel Hill, NC % 27599-3300 % % 919-962-4466 % blanton@marine.unc.edu % % Fall 1997