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

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

Bunch of nice routines for exp and kml files.
Plus, modelextract can now rely on a basin name

File size: 1.5 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.elementonicesheet);
15
16 if ischar(region),
17 if isempty(region),
18 flag=zeros(md.numberofelements,1);
19 invert=0;
20 elseif strcmpi(region,'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(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 [xlim,ylim]=basinzoom('basin',region);
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,region,'element',1);
40 end
41 end
42 if invert,
43 flag=~flag;
44 end
45 elseif isfloat(region),
46 if size(region,1)~=md.numberofelements,
47 help FlagElements
48 error('Flaglist for region must be of same size as number of elements in model');
49 end
50 flag=region;
51 else
52 error('Invalid region option');
53 end
54end
Note: See TracBrowser for help on using the repository browser.