/[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.7 - (hide annotations) (download)
Wed Feb 10 15:05:40 2016 UTC (9 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65t
Changes since 1.6: +2 -2 lines
- adopt upward>0 sign convention for trWtop and trWbot

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 gforget 1.5 budgO.tend=myparms.rhoconst*SALT-myparms.rhoconst*AB_gS;
34     budgI.tend=myparms.SIsal0*myparms.rhoi*SIheff;
35 gforget 1.1 %
36 gforget 1.5 budgO.tend=mk3D(mygrid.RAC,budgO.tend).*budgO.tend;%g/s
37     budgI.tend=mygrid.RAC.*budgI.tend;%g/s
38 gforget 1.1 %
39 gforget 1.5 budgO.tend=nansum(budgO.tend,3);
40     budgOI.tend=budgO.tend+budgI.tend;
41 gforget 1.1
42     %vertical divergence (air-sea fluxes or vertical adv/dif)
43 gforget 1.5 budgO.zconv=SFLUX+oceSPflx;
44     budgI.zconv=-budgO.zconv+SRELAX;
45 gforget 1.1 %in linear surface we omit :
46 gforget 1.5 if ~myparms.useNLFS; budgO.zconv=budgO.zconv-myparms.rhoconst*WSLTMASS; end;
47 gforget 1.1 %working approach for real fresh water (?) and virtual salt flux
48 gforget 1.5 if ~myparms.useRFWF|~myparms.useNLFS; budgI.zconv=-oceSflux; end;
49 gforget 1.6 %
50     budgO.zdia=budgO.zconv;
51 gforget 1.1 %for deep ocean layer :
52     if kBudget>1;
53 gforget 1.5 budgO.zconv=-(ADVr_SLT+DFrE_SLT+DFrI_SLT)./mygrid.RAC*myparms.rhoconst;
54     budgO.zconv=budgO.zconv+oceSPtnd;%.*msk;
55 gforget 1.6 budgO.zdia=-(DFrE_SLT+DFrI_SLT)./mygrid.RAC*myparms.rhoconst;
56     budgO.zdia=budgO.zdia+oceSPtnd;%.*msk;
57 gforget 1.1 end;
58     %
59     if test3d;
60     nr=length(mygrid.RC);
61     trWtop=-(ADVr_SLT+DFrE_SLT+DFrI_SLT)*myparms.rhoconst;
62     tmp1=mk3D(oceSPflx,oceSPtnd)-cumsum(oceSPtnd,3);
63     tmp1=tmp1.*mk3D(mygrid.RAC,tmp1);
64     trWtop(:,:,2:nr)=trWtop(:,:,2:nr)+tmp1(:,:,1:nr-1);
65     %
66 gforget 1.5 trWtop(:,:,1)=budgO.zconv.*mygrid.RAC;
67 gforget 1.1 trWbot=trWtop(:,:,2:length(mygrid.RC));
68     trWbot(:,:,length(mygrid.RC))=0;
69     %
70 gforget 1.5 budgO.fluxes.trWtop=trWtop;%kg/s
71     budgO.fluxes.trWbot=trWbot;%kg/s
72 gforget 1.1 else;
73 gforget 1.7 budgO.fluxes.trWtop=-mygrid.RAC.*budgO.zconv;
74 gforget 1.5 budgO.fluxes.trWbot=mygrid.RAC*0;%kg/s
75 gforget 1.7 budgO.fluxes.diaWtop=-mygrid.RAC.*budgO.zdia;
76 gforget 1.6 budgO.fluxes.diaWbot=mygrid.RAC*0;%kg/s
77 gforget 1.1 end;
78 gforget 1.5 budgI.fluxes.trWtop=0*mygrid.RAC;
79     budgI.fluxes.trWbot=budgO.fluxes.trWtop(:,:,1);%kg/s
80     %
81     budgO.zconv=mk3D(mygrid.RAC,budgO.zconv).*budgO.zconv;%Watt
82     budgI.zconv=mygrid.RAC.*budgI.zconv;%Watt
83     budgOI.zconv=budgO.zconv+budgI.zconv;
84 gforget 1.1
85     %horizontal divergence (advection and diffusion)
86     tmpUo=myparms.rhoconst*(ADVx_SLT+DFxE_SLT);
87     tmpVo=myparms.rhoconst*(ADVy_SLT+DFyE_SLT);
88 gforget 1.5 budgO.hconv=calc_UV_conv(nansum(tmpUo,3),nansum(tmpVo,3));
89 gforget 1.6 %
90     tmpUoD=myparms.rhoconst*(DFxE_SLT);
91     tmpVoD=myparms.rhoconst*(DFyE_SLT);
92     budgO.hdia=calc_UV_conv(nansum(tmpUoD,3),nansum(tmpVoD,3));
93     %
94 gforget 1.1 tmpUi=myparms.SIsal0*(myparms.rhoi*DFxEHEFF+myparms.rhoi*ADVxHEFF);
95     tmpVi=myparms.SIsal0*(myparms.rhoi*DFyEHEFF+myparms.rhoi*ADVyHEFF);
96 gforget 1.5 budgI.hconv=calc_UV_conv(tmpUi,tmpVi); %no dh needed here
97     budgOI.hconv=budgO.hconv+budgI.hconv;
98 gforget 1.1 %
99 gforget 1.5 budgO.fluxes.trU=tmpUo; budgO.fluxes.trV=tmpVo;%g/s
100 gforget 1.6 budgO.fluxes.diaU=tmpUoD; budgO.fluxes.diaV=tmpVoD;%g/s
101 gforget 1.5 budgI.fluxes.trU=tmpUi; budgI.fluxes.trV=tmpVi;%g/s
102 gforget 1.1

  ViewVC Help
Powered by ViewVC 1.1.22