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

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_calc/calc_transports.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_transports(fldU,fldV,SECTIONS_MASKS);
2    
3     global mygrid;
4    
5     %initialize output:
6     n3=max(size(fldU.f1,3),1); n4=max(size(fldV.f1,4),1);
7     FLD=NaN*squeeze(zeros(length(SECTIONS_MASKS),n3,n4));
8    
9     %prepare fldU/fldV:
10     fldU(isnan(fldU))=0; fldV(isnan(fldV))=0;
11    
12     dxg=mk3D(mygrid.DXG,fldU); dyg=mk3D(mygrid.DYG,fldU); drf=mk3D(mygrid.DRF,fldU);
13     for k4=1:n4;
14     fldU(:,:,:,k4)=fldU(:,:,:,k4).*dyg.*drf.*mygrid.hFacW*1e-6;
15     fldV(:,:,:,k4)=fldV(:,:,:,k4).*dxg.*drf.*mygrid.hFacS*1e-6;
16     end;
17    
18     %use array format to speed up computation below:
19     fldU=convert2array(fldU); fldV=convert2array(fldV);
20     n1=size(fldU,1); n2=size(fldU,2);
21     fldU=reshape(fldU,n1*n2,n3*n4); fldV=reshape(fldV,n1*n2,n3*n4);
22    
23     for iy=1:length(SECTIONS_MASKS);
24    
25     %get list ofpoints that form a zonal band:
26     mmu=convert2array(SECTIONS_MASKS(iy).mmuIn);
27     nnu=find(~isnan(mmu)); mmu=mmu(nnu)*ones(1,n3*n4);
28     mmv=convert2array(SECTIONS_MASKS(iy).mmvIn);
29     nnv=find(~isnan(mmv)); mmv=mmv(nnv)*ones(1,n3*n4);
30    
31     %do the area weighed average along this band:
32     tmpu=sum(fldU(nnu,:).*mmu,1);
33     tmpv=sum(fldV(nnv,:).*mmv,1);
34    
35     %store:
36     FLD(iy,:)=reshape(tmpu+tmpv,n3,n4);
37    
38     end;
39    
40    

  ViewVC Help
Powered by ViewVC 1.1.22