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

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

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


Revision 1.1 - (hide annotations) (download)
Mon Sep 10 18:19:09 2012 UTC (12 years, 10 months ago) by gforget
Branch: MAIN
- put bolus velocity computation in dedicated routine (calc_bolus.m).

1 gforget 1.1 function [bolusU,bolusV,bolusW]=calc_bolus(GM_PsiX,GM_PsiY);
2     %object: compute bolus velocty field (bolusU,bolusV,bolusW)
3     % from gm streamfunction (GM_PsiX,GM_PsiY).
4     %input: GM_PsiX,GM_PsiY
5     %output: bolusU,bolusV,bolusW
6    
7     gcmfaces_global;
8     nr=length(mygrid.RC);
9    
10     %compute bolus velocity:
11     GM_PsiX(:,:,nr+1)=0*GM_PsiX(:,:,end);
12     GM_PsiY(:,:,nr+1)=0*GM_PsiY(:,:,end);
13     bolusU=0*mygrid.hFacW;
14     bolusV=0*mygrid.hFacS;
15     for k=1:nr;
16     bolusU(:,:,k)=(GM_PsiX(:,:,k+1)-GM_PsiX(:,:,k))/mygrid.DRF(k);
17     bolusV(:,:,k)=(GM_PsiY(:,:,k+1)-GM_PsiY(:,:,k))/mygrid.DRF(k);
18     end;
19     bolusU=bolusU.*(~isnan(mygrid.mskW));
20     bolusV=bolusV.*(~isnan(mygrid.mskS));
21    
22     %and its vertical part
23     % (seems correct, leading to 0 divergence)
24     tmp_x=GM_PsiX(:,:,1:nr).*repmat(mygrid.DYG,[1 1 nr]);
25     tmp_y=GM_PsiY(:,:,1:nr).*repmat(mygrid.DXG,[1 1 nr]);
26     [tmp_x,tmp_y]=exch_UV(tmp_x,tmp_y);
27     tmp_a=repmat(mygrid.RAC,[1 1 nr]);
28     tmp_w=0*tmp_x;
29     for iFace=1:mygrid.nFaces;
30     tmp_w{iFace}=( tmp_x{iFace}(2:end,:,:)-tmp_x{iFace}(1:end-1,:,:) )+...
31     ( tmp_y{iFace}(:,2:end,:)-tmp_y{iFace}(:,1:end-1,:) );
32     tmp_w{iFace}=tmp_w{iFace}./tmp_a{iFace};
33     end;
34     bolusW=tmp_w.*(~isnan(mygrid.mskC));

  ViewVC Help
Powered by ViewVC 1.1.22