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

Last change on this file since 11057 was 11057, checked in by Mathieu Morlighem, 13 years ago

Added better error message if exp file not found

File size: 1.6 KB
Line 
1function flag=FlagElements(md,region),
2%FLAGELEMENTS - flag the elements in an region
3%
4% The region can be given with an exp file, a list of elements.
5%
6% Usage:
7% flag=FlagElements(md,region);
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.mask.elementongroundedice);
15
16 if ischar(region),
17 if isempty(region),
18 flag=zeros(md.mesh.numberofelements,1);
19 invert=0;
20 elseif strcmpi(region,'all')
21 flag=ones(md.mesh.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(region(1),'~'),
26 region=region(2:length(region));
27 invert=1;
28 else
29 invert=0;
30 end
31
32 %does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
33 if ~exist(region,'file'),
34 if (length(region)>3 & ~strcmp(region(end-3),'.exp')),
35 error(['Error: File ' region ' not found!']);
36 end
37 [xlim,ylim]=basinzoom('basin',region);
38 flag_nodes=double(md.mesh.x<xlim(2) & md.mesh.x>xlim(1) & md.mesh.y<ylim(2) & md.mesh.y>ylim(1));
39 flag=prod(flag_nodes(md.mesh.elements),2);
40 else
41 %ok, flag elements
42 flag=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,region,'element',1);
43 end
44 end
45 if invert,
46 flag=~flag;
47 end
48 elseif isfloat(region) | islogical(region),
49 if size(region,1)~=md.mesh.numberofelements,
50 help FlagElements
51 error('Flaglist for region must be of same size as number of elements in model');
52 end
53 flag=region;
54 else
55 error('Invalid region option');
56 end
57end
Note: See TracBrowser for help on using the repository browser.