/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_calc/gcmfaces_edge_mask.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_calc/gcmfaces_edge_mask.m

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


Revision 1.1 - (hide annotations) (download)
Mon Aug 29 16:49:04 2011 UTC (13 years, 11 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
>> clean up and speed up transport computations.

- added routines
gcmfaces_edge_mask		infer edge masks associated with an interior subdomain mask
gcmfaces_subset			extract subset of unmasked points from field (e.g. for transports)

- modified routines
gcmfaces_lines_zonal	use gcmfaces_edge_mask and make field names in
						LATS_MASKS more explicit (mskCint, mskCedge, etc.)
gcmfaces_lines_transp	same thing for section masks; also remove the
						longer arc masks (we only use the shorter arcs)
calc_zonmean_T			use new names (see gcmfaces_lines_zonal)
calc_zonmedian_T		use new names (see gcmfaces_lines_zonal)
calc_overturn			use new names (see gcmfaces_lines_zonal) and gcmfaces_subset
calc_MeridionalTransport use new names (see gcmfaces_lines_zonal) and gcmfaces_subset
calc_transports			use new names (see gcmfaces_lines_transp) and gcmfaces_subset
disp_transport			fix case of a single record

1 gforget 1.1 function [mskCedge,mskWedge,mskSedge]=gcmfaces_edge_mask(mskCint);
2     %object: computes the edge mask corresponding with
3     % an ocean basin interior mask
4     %inputs: mskCint is the 0/1 mask defining an ocean basin interior
5     %outputs: mskCedge is the tracer edge mask (1 point outside interior)
6     % mskWedge/mskSedge is the U/V velocity mask (1 for entering
7     % flow, -1 for exiting flow, and 0 otherwise)
8    
9     gcmfaces_global;
10    
11     %treat the case of blank tiles:
12     mskCint(mygrid.RAC==0)=NaN;
13    
14     %add one point at edges:
15     mskCplus=exch_T_N(mskCint);
16    
17     %edge tracer mask:
18     mskCedge=mskCint;
19     for iF=1:mskCint.nFaces;
20     tmp1=mskCplus{iF};
21     tmp2=tmp1(2:end-1,1:end-2)+tmp1(2:end-1,3:end)...
22     +tmp1(1:end-2,2:end-1)+tmp1(3:end,2:end-1);
23     mskCedge{iF}=1*(tmp2>0&tmp1(2:end-1,2:end-1)==0);
24     end;
25    
26     %edge velocity mask:
27     mskWedge=mskCint; mskSedge=mskCint;
28     for iF=1:mskCplus.nFaces;
29     mskWedge{iF}=mskCplus{iF}(2:end-1,2:end-1) - mskCplus{iF}(1:end-2,2:end-1);
30     mskSedge{iF}=mskCplus{iF}(2:end-1,2:end-1) - mskCplus{iF}(2:end-1,1:end-2);
31     end;
32    
33     %treat the case of blank tiles:
34     mskCedge(isnan(mskCedge))=0;
35     mskWedge(isnan(mskWedge))=0;
36     mskSedge(isnan(mskSedge))=0;

  ViewVC Help
Powered by ViewVC 1.1.22