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

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

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


Revision 1.5 - (hide annotations) (download)
Mon Aug 29 16:49:04 2011 UTC (13 years, 11 months ago) by gforget
Branch: MAIN
Changes since 1.4: +6 -11 lines
>> 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.3 function [FLD]=calc_overturn(fldU,fldV);
2 gforget 1.2 %object: compute meridional overturning streamfunction
3     %inputs: fldU and fldV are the fields of grid point transport
4     %output: FLD is the streamfunction
5 gforget 1.3 %
6     %notes: mygrid.LATS_MASKS is the set of quasi longitudinal lines along which
7     % transports will integrated, as computed in gcmfaces_lines_zonal
8 gforget 1.1
9     global mygrid;
10    
11     %initialize output:
12     n3=max(size(fldU.f1,3),1); n4=max(size(fldV.f1,4),1);
13 gforget 1.3 FLD=NaN*squeeze(zeros(length(mygrid.LATS_MASKS),n3+1,n4));
14 gforget 1.1
15     %prepare fldU/fldV:
16     fldU(isnan(fldU))=0; fldV(isnan(fldV))=0;
17    
18     dxg=mk3D(mygrid.DXG,fldU); dyg=mk3D(mygrid.DYG,fldU); drf=mk3D(mygrid.DRF,fldU);
19     for k4=1:n4;
20 gforget 1.4 fldU(:,:,:,k4)=fldU(:,:,:,k4).*dyg.*drf*1e-6;
21     fldV(:,:,:,k4)=fldV(:,:,:,k4).*dxg.*drf*1e-6;
22 gforget 1.1 end;
23    
24     %use array format to speed up computation below:
25     fldU=convert2array(fldU); fldV=convert2array(fldV);
26    
27 gforget 1.3 for iy=1:length(mygrid.LATS_MASKS);
28 gforget 1.1
29     %get list ofpoints that form a zonal band:
30 gforget 1.5 mskW=mygrid.LATS_MASKS(iy).mskWedge;
31     vecW=gcmfaces_subset(mskW,fldU);
32     mskS=mygrid.LATS_MASKS(iy).mskSedge;
33     vecS=gcmfaces_subset(mskS,fldV);
34     trsp=sum(vecW,1)+sum(vecS,1);
35 gforget 1.1
36     %store:
37 gforget 1.5 FLD(iy,1:n3,:)=-flipdim(cumsum(flipdim(trsp,2),2),2);
38 gforget 1.1
39     end;
40    
41     FLD(:,end,:)=0;
42    
43    

  ViewVC Help
Powered by ViewVC 1.1.22