/[MITgcm]/MITgcm_contrib/gael/matlab_class/sample_analysis/example_transports.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/sample_analysis/example_transports.m

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


Revision 1.4 - (hide annotations) (download)
Mon Jan 11 17:29:58 2016 UTC (9 years, 6 months ago) by gforget
Branch: MAIN
Changes since 1.3: +47 -25 lines
- revise handing of path, grid and input files, warnings and messages:

1 gforget 1.2 function [diags]=example_transports();
2 gforget 1.4 %EXAMPLE_TRANSPORTS computes transports (and zonal averages)
3    
4     p = genpath('gcmfaces/'); addpath(p);
5     p = genpath('MITprof/'); addpath(p);
6 gforget 1.1
7     gcmfaces_global;
8     if myenv.verbose>0;
9     gcmfaces_msg('===============================================');
10     gcmfaces_msg(['*** entering example_transports ' ...
11     'that will load a set of variables form file ' ...
12     'and compute a series of derived diagnostics '],'');
13     % gcmfaces_msg('*** entering example_transports','');
14     % gcmfaces_msg('that will load a set of variables form file',' ');
15     % gcmfaces_msg('and compute a series of derived diagnostics',' ');
16     end;
17    
18     %%%%%%%%%%%%%%%%%
19 gforget 1.4 %load grid:
20 gforget 1.1 %%%%%%%%%%%%%%%%%
21    
22 gforget 1.4 if isempty(mygrid);
23     grid_load;
24 gforget 1.1 end;
25 gforget 1.2
26 gforget 1.4 myenv.nctilesdir=fullfile('release1',filesep,'nctiles_climatology',filesep);
27 gforget 1.1
28     if ~isdir(myenv.nctilesdir);
29     diags=[];
30 gforget 1.3 help gcmfaces_demo;
31 gforget 1.1 warning(['skipping example_transports (missing ' myenv.nctilesdir ')']);
32     return;
33     end;
34    
35     if myenv.verbose>0;
36     gcmfaces_msg('* call gcmfaces_lines_zonal : determine grid lines that closely follow');
37     gcmfaces_msg('parallel lines and will be used in zonal mean and overturning computations',' ');
38     end;
39 gforget 1.2 gcmfaces_lines_zonal;
40    
41 gforget 1.1 if myenv.verbose>0;
42     gcmfaces_msg('* call gcmfaces_lines_transp : determine grid lines that closely follow');
43     gcmfaces_msg('great circles and will be used to compute transsects transports',' ');
44     end;
45     % warning('skipping gcmfaces_lines_transp\n');
46 gforget 1.2 [lonPairs,latPairs,names]=line_greatC_TUV_MASKS_v4;
47 gforget 1.1 gcmfaces_lines_transp(lonPairs,latPairs,names);
48    
49     %%%%%%%%%%%%%%%%%
50     %do computations:
51     %%%%%%%%%%%%%%%%%
52    
53 gforget 1.4 listDiags={};
54    
55 gforget 1.1 % [listTimes]=diags_list_times;
56     diags.listTimes=1;
57    
58 gforget 1.4 %part 1:
59    
60     listVars={'UVELMASS','VVELMASS'};
61     missingVars={};
62     for vv=1:length(listVars);
63     tmp1=[myenv.nctilesdir listVars{vv} filesep listVars{vv} '*nc'];
64     if isempty(dir(tmp1)); missingVars={missingVars{:},tmp1}; end;
65     end;
66    
67     if ~isempty(missingVars);
68     fprintf('\n example_transports could not find the following files ---> skipping related computation!\n');
69     disp(missingVars');
70     else;
71    
72 gforget 1.1 if myenv.verbose>0; gcmfaces_msg('* call rdmds2gcmfaces : load velocity fields');end;
73 gforget 1.4
74 gforget 1.1 for vvv=1:length(listVars);
75     vv=listVars{vvv};
76     tmp1=read_nctiles([myenv.nctilesdir vv '/' vv],vv);
77     tmp1=mean(tmp1,4);
78     tmp1(mygrid.mskC==0)=NaN;
79     eval([vv '=tmp1;']);
80     end;
81    
82     UVELMASS=UVELMASS.*mygrid.mskW;
83     VVELMASS=VVELMASS.*mygrid.mskS;
84    
85 gforget 1.4 listDiags={listDiags{:},'fldBAR','gloOV','fldTRANSPORTS','gloMT_FW'};
86 gforget 1.1 if myenv.verbose>0; gcmfaces_msg('* call calc_barostream : comp. barotropic stream function');end;
87     [fldBAR]=calc_barostream(UVELMASS,VVELMASS);
88     if myenv.verbose>0; gcmfaces_msg('* call calc_overturn : comp. overturning stream function');end;
89     [gloOV]=calc_overturn(UVELMASS,VVELMASS);
90     if myenv.verbose>0; gcmfaces_msg('* call calc_transports : comp. transects transports');end;
91     [fldTRANSPORTS]=1e-6*calc_transports(UVELMASS,VVELMASS,mygrid.LINES_MASKS,{'dh','dz'});
92     if myenv.verbose>0; gcmfaces_msg('* call calc_MeridionalTransport : comp. meridional seawater transport');end;
93     [gloMT_FW]=1e-6*calc_MeridionalTransport(UVELMASS,VVELMASS,1);
94    
95 gforget 1.4 end;%if ~isempty(missingVars);
96    
97     %part 2:
98    
99 gforget 1.1 listVars={'THETA','SALT','ADVx_TH','ADVy_TH','ADVx_SLT','ADVy_SLT'};
100     listVars={listVars{:},'DFxE_TH','DFyE_TH','DFxE_SLT','DFyE_SLT'};
101 gforget 1.4
102     missingVars={};
103     for vv=1:length(listVars);
104     tmp1=[myenv.nctilesdir listVars{vv} filesep listVars{vv} '*nc'];
105     if isempty(dir(tmp1)); missingVars={missingVars{:},tmp1}; end;
106     end;
107    
108     if ~isempty(missingVars);
109     fprintf('\n example_transports could not find the following files ---> skipping related computation!\n');
110     disp(missingVars');
111     else;
112    
113     if myenv.verbose>0; gcmfaces_msg('* load tracer and transports fields');end;
114 gforget 1.1 listDiags={listDiags{:},'fldTzonmean','fldSzonmean','gloMT_H','gloMT_SLT'};
115     for vvv=1:length(listVars);
116     vv=listVars{vvv};
117     tmp1=read_nctiles([myenv.nctilesdir vv '/' vv],vv);
118     tmp1=mean(tmp1,4);
119     tmp1(mygrid.mskC==0)=NaN;
120     eval([vv '=tmp1;']);
121     end;
122    
123     if myenv.verbose>0; gcmfaces_msg('* call calc_zonmean_T : comp. zonal mean temperature');end;
124     [fldTzonmean]=calc_zonmean_T(THETA);
125     if myenv.verbose>0; gcmfaces_msg('* call calc_zonmean_T : comp. zonal mean salinity');end;
126     [fldSzonmean]=calc_zonmean_T(SALT);
127    
128     if myenv.verbose>0; gcmfaces_msg('* call calc_MeridionalTransport : comp. meridional heat transport');end;
129     tmpU=(ADVx_TH+DFxE_TH); tmpV=(ADVy_TH+DFyE_TH);
130     [gloMT_H]=1e-15*4e6*calc_MeridionalTransport(tmpU,tmpV,0);
131     if myenv.verbose>0; gcmfaces_msg('* call calc_MeridionalTransport : comp. meridional salt transport');end;
132     tmpU=(ADVx_SLT+DFxE_SLT); tmpV=(ADVy_SLT+DFyE_SLT);
133     [gloMT_SLT]=1e-6*calc_MeridionalTransport(tmpU,tmpV,0);
134    
135 gforget 1.4 end;%if ~isempty(missingVars);
136    
137     %part 3: format output
138    
139 gforget 1.1 for ddd=1:length(listDiags);
140     dd=listDiags{ddd};
141     eval(['diags.' dd '=' dd ';']);
142     end;
143    
144     if myenv.verbose>0;
145     gcmfaces_msg('*** leaving example_transports');
146     gcmfaces_msg('===============================================','');
147     end;
148    

  ViewVC Help
Powered by ViewVC 1.1.22