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

Contents 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.6 - (show annotations) (download)
Wed Feb 5 03:42:14 2014 UTC (11 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
Changes since 1.5: +1 -1 lines
- fix typos.
- rename calc_UV_div as calc_UV_conv.

1 function [FLD]=calc_transports(fldU,fldV,SECTIONS_MASKS,list_factors);
2 %object: compute transports through pre-defined sections
3 %inputs: fldU and fldV are the fields of grid point transport
4 % SECTIONS_MASKS is the set of sections along
5 % which transports will integrated (SECTIONS_MASKS should
6 % have been produced by line_greatC_TUV_mask.m)
7 %optional: list_factors is the list of factors that need to
8 % be applied to fldU,fldV. By default it is empty (i.e. {}).
9 % The most complete list would be {'dh','dz','hfac'}.
10 %output: FLD is the array of transport profiles
11
12 global mygrid;
13
14 %initialize output:
15 n3=max(size(fldU.f1,3),1); n4=max(size(fldV.f1,4),1);
16 FLD=NaN*squeeze(zeros(length(SECTIONS_MASKS),n3,n4));
17
18 %prepare fldU/fldV:
19 fldU(isnan(fldU))=0; fldV(isnan(fldV))=0;
20
21 if isempty(who('list_factors')); list_factors={}; end;
22
23 if sum(strcmp(list_factors,'dh'))>0;
24 dxg=mk3D(mygrid.DXG,fldU); dyg=mk3D(mygrid.DYG,fldU);
25 else;
26 dxg=1; dyg=1;
27 end;
28 if sum(strcmp(list_factors,'dz'))>0;
29 drf=mk3D(mygrid.DRF,fldU);
30 else;
31 drf=1;
32 end;
33 facW=1; facS=1;
34 for ii=1:length(list_factors);
35 tmp1=list_factors{ii};
36 if strcmp(tmp1,'dh'); facW=facW.*dyg; facS=facS.*dxg;
37 elseif strcmp(tmp1,'dz'); facW=facW.*drf; facS=facS.*drf;
38 elseif strcmp(tmp1,'hfac'); facW=facW.*mygrid.hFacW; facS=facS.*mygrid.hFacS;
39 elseif isempty(tmp1); 1;
40 else; fprintf('error in calc_transports : non supported factor\n'); return;
41 end;
42 end;
43
44 for k4=1:n4;
45 fldU(:,:,:,k4)=fldU(:,:,:,k4).*facW;
46 fldV(:,:,:,k4)=fldV(:,:,:,k4).*facS;
47 end;
48
49 %use array format to speed up computation below:
50 fldU=convert2array(fldU); fldV=convert2array(fldV);
51
52 for iy=1:length(SECTIONS_MASKS);
53
54 %get list ofpoints that form a zonal band:
55 mskW=SECTIONS_MASKS(iy).mskWedge;
56 vecW=gcmfaces_subset(mskW,fldU);
57 mskS=SECTIONS_MASKS(iy).mskSedge;
58 vecS=gcmfaces_subset(mskS,fldV);
59
60 %store:
61 FLD(iy,:)=nansum(vecW,1)+nansum(vecS,1);
62
63 end;
64
65

  ViewVC Help
Powered by ViewVC 1.1.22