Contents
function PlotBoundary(Boundary,connectivity,coordinates,CtrlVar,varargin)
Plots/labels boundary nodes, edges and elements
PlotBoundary(Boundary,connectivity,coordinates,CtrlVar,varargin)
Examples: PlotBoundary(Boundary,connectivity,coordinates,CtrlVar)
PlotBoundary([],connectivity,coordinates,CtrlVar)
if Boundary=[], it is created by a call to FindBoundary(connectivity,coordinates)
For just plotting the boundary edges as, for example, a black line, do: figure ; PlotBoundary(MUA.Boundary,MUA.connectivity,MUA.coordinates,CtrlVar,'k')
Notes:
Another option of just plotting the mesh boundaries is simply to do: figure ; plot(MUA.coordinates(MUA.Boundary.Edges,1)/CtrlVar.PlotXYscale, MUA.coordinates(MUA.Boundary.Edges,2)/CtrlVar.PlotXYscale, 'k', 'LineWidth',2) ; in which case the `PlotBoundary' m-file is not used.
See also: PlotMuaBoundary
if nargin < 4 || isempty(CtrlVar) CtrlVar.PlotLabels=0; CtrlVar.MeshColor='k'; CtrlVar.NodeColor='k'; CtrlVar.PlotXYscale=1; CtrlVar.PlotNodesSymbolSize=3; CtrlVar.PlotNodesSymbol='o'; CtrlVar.PlotNodes=0; CtrlVar.PlotMesh=1; CtrlVar.time=NaN; CtrlVar.PlotBoundaryLabels=0; CtrlVar.PlotBoundaryElements=0; CtrlVar.PlotBoundaryNodes=0; else if ~isfield(CtrlVar,'PlotLabels') ; CtrlVar.PlotLabels=0; end if ~isfield(CtrlVar,'MeshColor') ; CtrlVar.MeshColor='k'; end if ~isfield(CtrlVar,'NodeColor') ; CtrlVar.NodeColor='k'; end if ~isfield(CtrlVar,'PlotXYscale') ; CtrlVar.PlotXYscale=1; end if ~isfield(CtrlVar,'PlotNodesSymbol') ; CtrlVar.PlotNodesSymbol='o'; end if ~isfield(CtrlVar,'PlotNodesSymbolSize') ; CtrlVar.PlotNodesSymbolSize=3; end if ~isfield(CtrlVar,'PlotNodes') ; CtrlVar.PlotNodes=0; end if ~isfield(CtrlVar,'PlotMesh') ; CtrlVar.PlotMesh=1; end if ~isfield(CtrlVar,'time') ; CtrlVar.time=NaN; end if ~isfield(CtrlVar,'PlotBoundaryLabels'); CtrlVar.PlotBoundaryLabels=0; end if ~isfield(CtrlVar,'PlotBoundaryElements'); CtrlVar.PlotBoundaryElements=0; end if ~isfield(CtrlVar,'PlotBoundaryNodes'); CtrlVar.PlotBoundaryNodes=0; end end if isempty(Boundary) [Boundary,~]=FindBoundary(connectivity,coordinates); end if ~isfield(Boundary,'x') || ~isfield(Boundary,'y') xa=coordinates(Boundary.Edges(:,1),1); xb=coordinates(Boundary.Edges(:,end),1); ya=coordinates(Boundary.Edges(:,1),2); yb=coordinates(Boundary.Edges(:,end),2); [Boundary.x,Boundary.y]=LineUpEdges2([],xa,xb,ya,yb); end plot(Boundary.x/CtrlVar.PlotXYscale,Boundary.y/CtrlVar.PlotXYscale,varargin{:}) ; % plot boundary elements, do not label nodes or elements here because % the labelling will be incorrect CtrlVar.PlotLabels=0; if CtrlVar.PlotBoundaryElements PlotFEmesh(coordinates,connectivity(Boundary.FreeElements,:),CtrlVar) end hold on if CtrlVar.PlotBoundaryNodes plot(coordinates(Boundary.EdgeCornerNodes,1)/CtrlVar.PlotXYscale,coordinates(Boundary.EdgeCornerNodes,2)/CtrlVar.PlotXYscale,'ok') plot(coordinates(Boundary.Nodes,1)/CtrlVar.PlotXYscale,coordinates(Boundary.Nodes,2)/CtrlVar.PlotXYscale,'xr') end % this gives correct labeling of nodes and elemetns if CtrlVar.PlotBoundaryLabels labels = arrayfun(@(n) {sprintf(' N%d', n)}, Boundary.Nodes(:)); text(coordinates(Boundary.Nodes,1)/CtrlVar.PlotXYscale,coordinates(Boundary.Nodes,2)/CtrlVar.PlotXYscale,labels) xEle=Nodes2EleMean(connectivity,coordinates(:,1)); yEle=Nodes2EleMean(connectivity,coordinates(:,2)); labels = arrayfun(@(n) {sprintf(' T%d', n)}, Boundary.FreeElements(:)); text(xEle(Boundary.FreeElements)/CtrlVar.PlotXYscale,yEle(Boundary.FreeElements)/CtrlVar.PlotXYscale,labels,... 'HorizontalAlignment', 'center', 'Color', 'blue'); end %title(sprintf('boundary t=%-g ',CtrlVar.time)) ; xlabel('x (km)') ; ylabel('y (km)') %axis equal tight ax=gca; ax.DataAspectRatio=[1 1 1];
Not enough input arguments. Error in PlotBoundary (line 57) if isempty(Boundary)
end