/[MITgcm]/MITgcm_contrib/gael/matlab_class/ecco_v4/v4_basin.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/ecco_v4/v4_basin.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.6 - (hide annotations) (download)
Mon Jul 28 20:54:10 2014 UTC (11 years ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65r, checkpoint65p, checkpoint65q
Changes since 1.5: +1 -1 lines
- fix windows PC compatibility (contributed by D.Spiegel).

1 gforget 1.1 function [varargout]=v4_basin(nameBasin,varargin);
2     %object: obtain the mask of an ocean basin
3     %
4     %input: nameBasin name of the basin of interest (atl, pac, ind, arctic, etc.)
5     %optional: msk0 value for the masked region (0 by default)
6     %
7     %output: mskC mask for tracer points (msk0=outside basin; 1=inside basin)
8     %optional: mskW,mskS mask for velocity points (0=oustide/land; 1/2=edge; 1=inside)
9    
10     if nargin==2; msk0=varargin{1}; else; msk0=0; end;
11    
12     gcmfaces_global;
13    
14     dir0=which('gcmfaces_demo');
15 gforget 1.6 tmp1=strfind(dir0,filesep);
16 gforget 1.1 dir0=[dir0(1:tmp1(end)) 'sample_input/OCCAetcONv4GRID/'];
17 gforget 1.5 msk=read_bin([dir0 'basin_masks_eccollc_90x50.bin'],0,1);
18 gforget 1.1
19     %list of available basins:
20 heimbach 1.2 list0={ 'pac','atl','ind','arct','bering',...
21     'southChina','mexico','okhotsk','hudson','med',...
22     'java','north','japan','timor','eastChina','red','gulf',...
23 gforget 1.3 'baffin','gin','barents'};
24 gforget 1.1 %list of selected basins:
25     if ischar(nameBasin); nameBasin={nameBasin}; end;
26     list1={};
27     for ii=1:length(nameBasin);
28     if strcmp(nameBasin{ii},'atlExt');
29 gforget 1.3 list1={list1{:},'atl','mexico','hudson','med','north','baffin','gin'};
30 gforget 1.1 elseif strcmp(nameBasin{ii},'pacExt');
31 gforget 1.3 list1={list1{:},'pac','bering','okhotsk','japan','eastChina'};
32 gforget 1.1 elseif strcmp(nameBasin{ii},'indExt');
33     list1={list1{:},'ind','southChina','java','timor','red','gulf'};
34     else;
35     list1={list1{:},nameBasin{ii}};
36     end;
37     end
38    
39     %derive tracer points mask:
40     mskC=0*msk;
41     for ii=1:length(list1);
42     jj=find(strcmp(list1{ii},list0));
43     if ~isempty(jj); mskC(find(msk==jj))=1; end;
44     end;
45    
46     %determine velocity points masks, if needed:
47     if nargout>1;
48     %flag velocity points according to neighboring pair:
49     fld=3*mskC+1*(~isnan(mygrid.mskC(:,:,1)));
50     FLD=exch_T_N(fld);
51     fldW=fld; fldS=fld;
52     for iF=1:FLD.nFaces;
53     tmpA=FLD{iF}(2:end-1,2:end-1);
54     tmpB=FLD{iF}(1:end-2,2:end-1);
55     fldW{iF}=(tmpA+tmpB)/2;
56     tmpA=FLD{iF}(2:end-1,2:end-1);
57     tmpB=FLD{iF}(2:end-1,1:end-2);
58     fldS{iF}=(tmpA+tmpB)/2;
59     end;
60     %compute corresponding masks:
61     mskW=0*mskC;
62     mskW(find(fldW==4))=1;%inside points
63     mskW(find(fldW==2.5))=0.5;%basin edge points
64     mskS=0*mskC;
65     mskS(find(fldS==4))=1;%inside points
66     mskS(find(fldS==2.5))=0.5;%basin edge points
67     %for checking:
68     if 0;
69     mskWout=0*mskC;
70     mskWout(find(fldW==1))=1;%outside points
71     mskWout(find(fldW==2.5))=0.5;%basin edge points
72     mskSout=0*mskC;
73     mskSout(find(fldS==1))=1;%outside points
74     mskSout(find(fldS==2.5))=0.5;%basin edge points
75     end;
76     end;
77    
78     %replace 0 with msk0:
79     mskC(find(mskC==0))=msk0;
80     if nargout>1; mskW(find(mskW==0))=msk0; mskS(find(mskS==0))=msk0; end;
81    
82     %output(s):
83     if nargout==1; varargout={mskC}; else; varargout={mskC,mskW,mskS}; end;
84    
85     %for checking:
86     if 0;
87     figure;
88     msk0=1*(msk0>0); msk0(find(msk0==0))=NaN;
89     subplot(2,1,1); imagescnan(convert2array(msk0)'); axis xy; caxis([-1 2]);
90     subplot(2,1,2); imagescnan(convert2array(mskC.*msk0)'); axis xy; caxis([-1 2]);
91     drawnow;
92     end;
93    
94    

  ViewVC Help
Powered by ViewVC 1.1.22