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

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

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


Revision 1.4 - (hide annotations) (download)
Sun Feb 7 22:19:52 2016 UTC (9 years, 5 months ago) by gforget
Branch: MAIN
Changes since 1.3: +11 -4 lines
- budgO.cont, budgO.hconv, etc. now in extensive form.

1 gforget 1.3 function [budgO,budgI,budgOI]=calc_budget_salt(kBudget);
2 gforget 1.1 % CALC_BUDGET_SALT(kBudget)
3    
4     gcmfaces_global;
5    
6     %get variables from caller routine:
7     %----------------------------------
8    
9     global myparms;
10    
11     list_variables={'SALT','AB_gS','SRELAX','SIheff',...
12     'SFLUX','oceSPflx','oceSflux','WSLTMASS',...
13     'ADVx_SLT','DFxE_SLT','ADVy_SLT','DFyE_SLT',...
14     'ADVxHEFF','ADVxSNOW','DFxEHEFF','DFxESNOW',...
15     'ADVyHEFF','ADVySNOW','DFyEHEFF','DFyESNOW'};
16    
17     if kBudget>1;
18     list_variables={list_variables{:},'oceSPtnd','ADVr_SLT','DFrE_SLT',...
19     'DFrI_SLT','ADVr_SLT','DFrE_SLT','DFrI_SLT'};
20     end;
21    
22     for vv=1:length(list_variables);
23     v = evalin('caller',list_variables{vv});
24     eval([list_variables{vv} '=v;']);
25     end;
26     clear v;
27    
28     test3d=length(size(ADVx_SLT{1}))>2;
29    
30     %compute mapped budget:
31     %----------------------
32    
33     contOCN=myparms.rhoconst*SALT-myparms.rhoconst*AB_gS;
34     contICE=myparms.SIsal0*myparms.rhoi*SIheff;
35     %
36 gforget 1.2 budgO.tend=mk3D(mygrid.RAC,contOCN).*contOCN;%g/s
37     budgI.tend=mygrid.RAC.*contICE;%g/s
38 gforget 1.1 %
39     contOCN=nansum(contOCN,3);
40     contTOT=contOCN+contICE;
41    
42     %vertical divergence (air-sea fluxes or vertical adv/dif)
43     zdivOCN=SFLUX+oceSPflx;
44     zdivICE=-zdivOCN+SRELAX;
45     %in linear surface we omit :
46     if ~myparms.useNLFS; zdivOCN=zdivOCN-myparms.rhoconst*WSLTMASS; end;
47     %working approach for real fresh water (?) and virtual salt flux
48     if ~myparms.useRFWF|~myparms.useNLFS; zdivICE=-oceSflux; end;
49     %for deep ocean layer :
50     if kBudget>1;
51     zdivOCN=-(ADVr_SLT+DFrE_SLT+DFrI_SLT)./mygrid.RAC*myparms.rhoconst;
52     zdivOCN=zdivOCN+oceSPtnd;%.*msk;
53     end;
54     zdivTOT=zdivOCN+zdivICE;
55     %
56     if test3d;
57     nr=length(mygrid.RC);
58     trWtop=-(ADVr_SLT+DFrE_SLT+DFrI_SLT)*myparms.rhoconst;
59     tmp1=mk3D(oceSPflx,oceSPtnd)-cumsum(oceSPtnd,3);
60     tmp1=tmp1.*mk3D(mygrid.RAC,tmp1);
61     trWtop(:,:,2:nr)=trWtop(:,:,2:nr)+tmp1(:,:,1:nr-1);
62     %
63     trWtop(:,:,1)=zdivOCN.*mygrid.RAC;
64     trWbot=trWtop(:,:,2:length(mygrid.RC));
65     trWbot(:,:,length(mygrid.RC))=0;
66     %
67 gforget 1.2 budgO.trWtop=trWtop;%kg/s
68     budgO.trWbot=trWbot;%kg/s
69 gforget 1.1 else;
70 gforget 1.2 budgO.trWtop=mygrid.RAC.*zdivOCN; budgO.trWbot=mygrid.RAC*0;%kg/s
71 gforget 1.1 end;
72 gforget 1.2 budgI.trWtop=0*mygrid.RAC; budgI.trWbot=budgO.trWtop(:,:,1);%kg/s
73 gforget 1.1
74     %horizontal divergence (advection and diffusion)
75     tmpUo=myparms.rhoconst*(ADVx_SLT+DFxE_SLT);
76     tmpVo=myparms.rhoconst*(ADVy_SLT+DFyE_SLT);
77     hdivOCN=calc_UV_conv(nansum(tmpUo,3),nansum(tmpVo,3));
78     tmpUi=myparms.SIsal0*(myparms.rhoi*DFxEHEFF+myparms.rhoi*ADVxHEFF);
79     tmpVi=myparms.SIsal0*(myparms.rhoi*DFyEHEFF+myparms.rhoi*ADVyHEFF);
80     hdivICE=calc_UV_conv(tmpUi,tmpVi); %no dh needed here
81     hdivTOT=hdivOCN+hdivICE;
82     %
83 gforget 1.2 budgO.trU=tmpUo; budgO.trV=tmpVo;%g/s
84     budgI.trU=tmpUi; budgI.trV=tmpVi;%g/s
85 gforget 1.1
86 gforget 1.3 %outputs:
87 gforget 1.4 if test3d;
88     tmp1=mk3D(mygrid.DRF,mygrid.hFacC).*mygrid.hFacC;
89     tmp1=mk3D(mygrid.RAC,mygrid.hFacC).*tmp1;
90     else;
91     tmp1=mygrid.RAC;
92     end;
93    
94     budgO.cont=tmp1.*contOCN;
95 gforget 1.3 budgO.hconv=hdivOCN;
96 gforget 1.4 budgO.zconv=tmp1.*zdivOCN;
97 gforget 1.3
98 gforget 1.4 budgI.cont=tmp1.*contICE;
99 gforget 1.3 budgI.hconv=hdivICE;
100 gforget 1.4 budgI.zconv=tmp1.*zdivICE;
101 gforget 1.3
102     budgOI.cont=budgO.cont+budgI.cont;
103     budgOI.hconv=budgO.hconv+budgI.hconv;
104     budgOI.zconv=budgO.zconv+budgI.zconv;
105 gforget 1.1

  ViewVC Help
Powered by ViewVC 1.1.22