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

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

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


Revision 1.1 - (hide annotations) (download)
Wed Feb 10 14:45:59 2010 UTC (15 years, 5 months ago) by gforget
Branch: MAIN
matlad_class: some basic computations

1 gforget 1.1 function [FLD]=calc_MeridinalTransport(fldU,fldV,LATS_MASKS,varargin);
2    
3     global mygrid;
4    
5     if nargin==4; doScaleWithArea=varargin{1}; else; doScaleWithArea=0; end;
6    
7     %initialize output:
8     n3=max(size(fldU.f1,3),1); n4=max(size(fldV.f1,4),1);
9     FLD=NaN*squeeze(zeros(length(LATS_MASKS),n4));
10    
11     %prepare fldU/fldV:
12     fldU(isnan(fldU))=0; fldV(isnan(fldV))=0;
13    
14     if doScaleWithArea;
15     dxg=mk3D(mygrid.DXG,fldU); dyg=mk3D(mygrid.DYG,fldU); drf=mk3D(mygrid.DRF,fldU);
16     for k4=1:n4;
17     fldU(:,:,:,k4)=fldU(:,:,:,k4).*dyg.*drf.*mygrid.hFacW;
18     fldV(:,:,:,k4)=fldV(:,:,:,k4).*dxg.*drf.*mygrid.hFacS;
19     end;
20     end;
21    
22     %use array format to speed up computation below:
23     fldU=convert2array(fldU); fldV=convert2array(fldV);
24     n1=size(fldU,1); n2=size(fldU,2);
25     fldU=reshape(fldU,n1*n2,n3*n4); fldV=reshape(fldV,n1*n2,n3*n4);
26    
27     for iy=1:length(LATS_MASKS);
28    
29     %get list ofpoints that form a zonal band:
30     mmu=convert2array(LATS_MASKS(iy).mmu);
31     nnu=find(~isnan(mmu)); mmu=mmu(nnu)*ones(1,n3*n4);
32     mmv=convert2array(LATS_MASKS(iy).mmv);
33     nnv=find(~isnan(mmv)); mmv=mmv(nnv)*ones(1,n3*n4);
34    
35     %do the area weighed average along this band:
36     tmpu=sum(fldU(nnu,:).*mmu,1);
37     tmpv=sum(fldV(nnv,:).*mmv,1);
38    
39     %store:
40     FLD(iy,:)=reshape(sum(tmpu+tmpv,2),[1 n4]);
41    
42     end;
43    
44    

  ViewVC Help
Powered by ViewVC 1.1.22