Changeset 2968


Ignore:
Timestamp:
02/05/10 12:08:12 (15 years ago)
Author:
seroussi
Message:

changed BuildFlag to FlagElements and moved it in utils
geography now uses FlagElements

Location:
issm/trunk/src/m/classes/public
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/classes/public/geography.m

    r2668 r2968  
    1919        error('geography error message');
    2020end
    21 if ((~ischar(iceshelfname)) | (~ischar(icesheetname))  )
    22         help geography
    23         error('geography error message');
    24 end
    25 if strcmpi(icesheetname,'all'),
    26         error('geography error message: islands can not be everywhere, to set an icesheet, use geography(md,'','')');
    27 end
    2821
    2922if md.counter>=2,
     
    3932elements=md.elements;
    4033
    41 %Fist recover arrays of ice shelf grids and elements, and ice sheet grids and elements.
    42 invert=0;
    43 if strcmp(iceshelfname,''), %no iceshelf contour file, we are dealing with a pure ice sheet.
    44         gridoniceshelf=zeros(md.numberofgrids,1);
    45         elementoniceshelf=zeros(md.numberofelements,1);
    46 elseif strcmp(iceshelfname,'all'), %we are dealing with a pure ice shelf.
    47         gridoniceshelf=ones(md.numberofgrids,1);
    48         elementoniceshelf=ones(md.numberofelements,1);
    49 else
    50         if strcmpi(iceshelfname(1),'~'),
    51                 iceshelfname=iceshelfname(2:length(iceshelfname));
    52                 invert=1;
    53         end
    54         [gridoniceshelf,elementoniceshelf]=ContourToMesh(elements,x,y,expread(iceshelfname,1),'element and node',2);
    55 end
    56 if invert,
    57         gridoniceshelf=1-gridoniceshelf;
    58         elementoniceshelf=1-elementoniceshelf;
    59 end
    60 
    61 if strcmp(icesheetname,''), %no icesheet contour file, we are dealing with a pure ice shelf.
    62         gridonicesheet=zeros(md.numberofgrids,1);
    63         elementonicesheet=zeros(md.numberofelements,1);
    64 else
    65         [gridonicesheet,elementonicesheet]=ContourToMesh(elements,x,y,expread(icesheetname,1),'element and node',2);
    66 end
     34elementoniceshelf=FlagElements(md,iceshelfname);
     35elementonicesheet=FlagElements(md,icesheetname);
    6736
    6837%Because icesheet grids and elements can be included into an iceshelf, we need to update. Remember, all the previous
    6938%arrays come from domain outlines that can intersect one another:
    70 gridoniceshelf=double((gridoniceshelf & ~gridonicesheet));
     39gridoniceshelf=zeros(md.numberofgrids,1);
     40gridonicesheet=zeros(md.numberofgrids,1);
    7141elementoniceshelf=double((elementoniceshelf & ~elementonicesheet));
    72 gridonicesheet=double(~gridoniceshelf);
    7342elementonicesheet=double(~elementoniceshelf);
     43gridoniceshelf(md.elements(find(elementoniceshelf),:))=1;
     44gridonicesheet(md.elements(find(elementonicesheet),:))=1;
    7445
    7546%Return:
  • issm/trunk/src/m/classes/public/recover_areas.m

    r2395 r2968  
    1212
    1313        %recover elements distribution
    14         hutterflag  =BuildFlag(md,getfieldvalue(options,'hutter',''));
    15         macayealflag=BuildFlag(md,getfieldvalue(options,'macayeal',''));
    16         pattynflag  =BuildFlag(md,getfieldvalue(options,'pattyn',''));
    17         stokesflag  =BuildFlag(md,getfieldvalue(options,'stokes',''));
    18         hutterflag  =BuildFlag(md,getfieldvalue(options,'hutter',''));
     14        hutterflag  =FlagElements(md,getfieldvalue(options,'hutter',''));
     15        macayealflag=FlagElements(md,getfieldvalue(options,'macayeal',''));
     16        pattynflag  =FlagElements(md,getfieldvalue(options,'pattyn',''));
     17        stokesflag  =FlagElements(md,getfieldvalue(options,'stokes',''));
     18        hutterflag  =FlagElements(md,getfieldvalue(options,'hutter',''));
    1919        filltype    =getfieldvalue(options,'fill','none');
    2020
     
    2222
    2323
    24 function flag=BuildFlag(md,area),
    25         if ischar(area),
    26                 if isempty(area),
    27                         flag=zeros(md.numberofelements,1);
    28                         invert=0;
    29                 elseif strcmpi(area,'all')
    30                         flag=ones(md.numberofelements,1);
    31                         invert=0;
    32                 else
    33                         %make sure that we actually don't want the elements outside the domain outline!
    34                         if strcmpi(area(1),'~'),
    35                                 area=area(2:length(area));
    36                                 invert=1;
    37                         else
    38                                 invert=0;
    39                         end
    40                         %ok, flag elements
    41                         flag=ContourToMesh(md.elements(:,1:3),md.x,md.y,expread(area,1),'element',1);
    42                 end
    43                 if invert,
    44                         flag=~flag;
    45                 end
    46         elseif isfloat(area),
    47                 if size(area,1)~=md.numberofelements,
    48                         setelementstypeusage();
    49                         error('Flags for elements_type must be of same size as number of elements in model');
    50                 end
    51                 flag=area;
    52         else
    53                 error('Invalide elements_type option');
    54         end
    55 end
Note: See TracChangeset for help on using the changeset viewer.