source: issm/trunk/src/m/utils/Geometry/FlagElements.m@ 3033

Last change on this file since 3033 was 3033, checked in by Eric.Larour, 15 years ago

little bug

File size: 1.4 KB
Line 
1function flag=FlagElements(md,area),
2%FLAGELEMENTS - flag the elements in an area
3%
4% The area can be given with an exp file, a list of elements.
5%
6% Usage:
7% flag=FlagElements(md,area);
8%
9% Example:
10% flag=FlagElements(md,'all');
11% flag=FlagElements(md,'');
12% flag=FlagElements(md,'Domain.exp');
13% flag=FlagElements(md,'~Domain.exp');
14% flag=FlagElements(md,md.elementonicesheet);
15
16 if ischar(area),
17 if isempty(area),
18 flag=zeros(md.numberofelements,1);
19 invert=0;
20 elseif strcmpi(area,'all')
21 flag=ones(md.numberofelements,1);
22 invert=0;
23 else
24 %make sure that we actually don't want the elements outside the domain outline!
25 if strcmpi(area(1),'~'),
26 area=area(2:length(area));
27 invert=1;
28 else
29 invert=0;
30 end
31
32 %does the area domain outline exist or do we have to look for xlim,ylim in basinzoom?
33 if ~exist(area,'file'),
34 [xlim,ylim]=basinzoom(area);
35 flag_nodes=double(md.x<xlim(2) & md.x>xlim(1) & md.y<ylim(2) & md.y>ylim(1));
36 flag=prod(flag_nodes(md.elements),2);
37 else
38 %ok, flag elements
39 flag=ContourToMesh(md.elements(:,1:3),md.x,md.y,expread(area,1),'element',1);
40 end
41 end
42 if invert,
43 flag=~flag;
44 end
45 elseif isfloat(area),
46 if size(area,1)~=md.numberofelements,
47 setelementstypeusage();
48 error('Flaglist for area must be of same size as number of elements in model');
49 end
50 flag=area;
51 else
52 error('Invalid area option option');
53 end
54end
Note: See TracBrowser for help on using the repository browser.