/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_diags/diags_driver_tex.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/matlab_class/gcmfaces_diags/diags_driver_tex.m

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


Revision 1.20 - (show annotations) (download)
Wed Dec 14 21:58:31 2016 UTC (8 years, 7 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66o, HEAD
Changes since 1.19: +4 -1 lines
- diags_grid_parms.m, diags_grid.m: update help section
- diags_display.m, diags_driver_tex.m: update grid load section

1 function []=diags_driver_tex(dirMat,setDiags,dirTex,nameTex);
2 % DIAGS_DRIVER_TEX(dirMat,setDiags,dirTex,nameTex)
3 %
4 % displays multiple sets of diagnostics (setDiags={'profiles',
5 % 'cost','A','B','C','MLD','D'} by default) from the results
6 % stored in dirMat and outputs the plots to tex
7 % ([dirTex nameTex '.tex'] and [dirTex nameTex '*.eps'])
8 %
9 % setDiags is the choice of diagnostics (cell) that may include
10 % 'profiles') model to insitu data comparison
11 % 'cost') ssh etc. cost functions
12 % 'A') trasnports
13 % 'B') air-sea fluxes
14 % 'C') state variables
15 % 'D') global and hemispheric budgets
16 % 'MLD') mixed layer depths
17 % 'SEAICE') seaice fields
18 % 'controls') control vector adjustments
19
20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21 %determine input/output params:
22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23
24 %directory names:
25 if iscell(dirMat); dirMatRef=dirMat{2}; dirMat=dirMat{1}; end;
26 dirMat=[dirMat '/'];
27 if isempty(who('dirMatRef')); dirMatRef='';
28 elseif ~isempty(dirMatRef); dirMatRef=[dirMatRef '/'];
29 end;
30 if isempty(who('dirTex')); dirTex=''; else; dirTex=[dirTex '/']; end;
31 if isempty(who('nameTex')); nameTex='myPlots'; end;
32
33 %set default setDiags and myTitle
34 if isempty(setDiags);
35 setDiags={'profiles','cost','A','B','C','MLD','D'};
36 if strcmp(nameTex,'myPlots'); nameTex='standardAnalysis'; end;
37 %
38 tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
39 myTitle={'gcmfaces','standard analysis of the solution in',tmp1};
40 else;
41 tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
42 myTitle={'gcmfaces analysis of the solution in',tmp1};
43 end;
44
45 %set fileTex and create dirTex if needed
46 if isempty(dirTex); error('dirTex must be specified'); end;
47 fileTex=[dirTex nameTex '.tex'];
48 if isempty(dir(dirTex)); mkdir(dirTex); end;
49
50 %%%%%%%%%%%%%%%%%%%%%%
51 %load grid and params:
52 %%%%%%%%%%%%%%%%%%%%%%
53
54 gcmfaces_global; global myparms;
55 test1=~isempty(dir([dirMat 'basic_diags_ecco_mygrid.mat']));
56 test2=~isempty(dir([dirMat 'diags_grid_parms.mat']));
57 if ~test1&~test2;
58 error('missing diags_grid_parms.mat')
59 elseif test2;
60 nameGrid='diags_grid_parms.mat';
61 suffDiag='diags_set_';
62 budgetList='diags_select_budget_list.mat';
63 else;
64 nameGrid='basic_diags_ecco_mygrid.mat';
65 suffDiag='basic_diags_ecco_';
66 budgetList='basic_diags_ecco_budget_list.mat';
67 end;
68
69 %reload myparms from dirMat (and mygrid if included the mat file)
70 eval(['load ' dirMat nameGrid ';']);
71
72 %reload mygrid if needed
73 if isfield(myparms,'dirGrid'); diags_grid(myparms.dirGrid,0); end;
74
75 %in case mygrid.memoryLimit=1, load the stuff that was not saved to diags_grid_parms.mat
76 if mygrid.memoryLimit==1;
77 list0={'hFacS','hFacW'};
78 for iFld=1:length(list0);
79 eval(['mygrid.' list0{iFld} '=rdmds2gcmfaces([mygrid.dirGrid ''' list0{iFld} '*'']);']);
80 end;
81 %
82 mygrid.hFacCsurf=mygrid.hFacC;
83 for ff=1:mygrid.hFacC.nFaces; mygrid.hFacCsurf{ff}=mygrid.hFacC{ff}(:,:,1); end;
84 %
85 mskC=mygrid.hFacC; mskC(mskC==0)=NaN; mskC(mskC>0)=1; mygrid.mskC=mskC;
86 mskW=mygrid.hFacW; mskW(mskW==0)=NaN; mskW(mskW>0)=1; mygrid.mskW=mskW;
87 mskS=mygrid.hFacS; mskS(mskS==0)=NaN; mskS(mskS>0)=1; mygrid.mskS=mskS;
88 %
89 gcmfaces_lines_zonal;
90 mygrid.LATS=[mygrid.LATS_MASKS.lat]';
91 [lonPairs,latPairs,names]=gcmfaces_lines_pairs;
92 gcmfaces_lines_transp(lonPairs,latPairs,names);
93 end;
94
95
96 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
97 %finalize listDiags
98 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
99
100 %determined where to display anomalies between runs
101 doAnomalies=~isempty(dirMatRef);
102
103 %check if result is here to plot
104 doBudget=~isempty(dir([dirMat suffDiag 'D_*']));
105 doBudget=~isempty(dir([dirMat suffDiag 'D_*']))|...
106 ~isempty(dir([dirMat 'diags_set_D/' suffDiag 'D_*']));
107 doProfiles=~isempty(dir([dirMat 'insitu_cost_all.mat']))|...
108 ~isempty(dir([dirMat 'cost/insitu_cost_all.mat']));
109 doCost=~isempty(dir([dirMat 'cost_altimeter_obs.mat']))|...
110 ~isempty(dir([dirMat 'cost/cost_altimeter_obs.mat']));
111 doCtrl=~isempty(dir([dirMat 'cost_xx_aqh.mat']))|...
112 ~isempty(dir([dirMat 'cost/cost_xx_aqh.mat']));
113
114 %the following have no code for diff between runs
115 if doAnomalies;
116 doProfiles=0;
117 doCost=0;
118 doCtrl=0;
119 end;
120
121 %reduce setDiags if needed:
122 doDiags=ones(1,length(setDiags));
123 %
124 for ii=1:length(setDiags);
125 if iscell(setDiags{ii});
126 if ~doBudget&strcmp(setDiags{ii}{1},'D'); doDiags(ii)=0; end;
127 elseif ~doBudget&strcmp(setDiags{ii},'D'); doDiags(ii)=0;
128 elseif ~doProfiles&strcmp(setDiags{ii},'profiles'); doDiags(ii)=0;
129 elseif ~doCost&strcmp(setDiags{ii},'cost'); doDiags(ii)=0;
130 elseif ~doCtrl&strcmp(setDiags{ii},'controls'); doDiags(ii)=0;
131 end;
132 end;
133 %
134 setDiags={setDiags{find(doDiags)}};
135
136 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137 %initialize tex file
138 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139
140 if ~isempty(dirMatRef);
141 tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
142 myTitle={'gcmfaces analysis of the solution in',tmp1};
143 tmp1=dirMatRef; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
144 myTitle={myTitle{:},' minus ',tmp1};
145 end;
146
147 if isempty(dirMatRef)&~isempty(dir([dirMat '../README']));
148 [rdm]=read_readme([dirMat '../README']);
149 else;
150 rdm=[];
151 end;
152
153 write2tex(fileTex,0,myTitle,rdm);
154
155 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
156 %augment tex file
157 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158
159 for ii=1:length(setDiags);
160
161 if iscell(setDiags{ii});
162 ttl=input('specify tex file section title:\n');
163 write2tex(fileTex,1,ttl,1);
164 diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
165
166 elseif strcmp(setDiags{ii},'profiles');
167 %in situ profiles fit
168 write2tex(fileTex,1,'fit to data',1);
169 write2tex(fileTex,1,'fit to in situ data',2);
170 insitu_diags(dirMat,0,dirTex,nameTex);
171
172 elseif strcmp(setDiags{ii},'cost');
173 if isempty(find(strcmp(setDiags,'profiles')));
174 write2tex(fileTex,1,'fit to data',1);
175 end;
176 %altimeter fit
177 if ~isempty(dir([dirMat 'cost/cost_altimeter_mod.mat']))
178 write2tex(fileTex,1,'fit to altimeter data (RADS)',2);
179 cost_altimeter_disp(dirMat,0,'etaglo',dirTex,nameTex);
180 cost_altimeter_disp(dirMat,2,'modMobs',dirTex,nameTex);
181 cost_altimeter_disp(dirMat,1,'modMobs',dirTex,nameTex);
182 cost_altimeter_disp(dirMat,3,'modMobs',dirTex,nameTex);
183 cost_altimeter_disp(dirMat,1,'obs',dirTex,nameTex);
184 cost_altimeter_disp(dirMat,1,'mod',dirTex,nameTex);
185 end;
186 %other cost terms
187 write2tex(fileTex,1,'fit to sst data',2);
188 cost_sst('',dirMat,0,dirTex,nameTex);
189 write2tex(fileTex,1,'fit to seaice data',2);
190 cost_seaicearea('',dirMat,0,dirTex,nameTex);
191
192 elseif strcmp(setDiags{ii},'A');
193 write2tex(fileTex,1,'volume, heat and salt transports',1);
194 diags_display({dirMat,dirMatRef},'A',dirTex,nameTex);
195
196 elseif strcmp(setDiags{ii},'B');
197 write2tex(fileTex,1,'mean and variance maps',1);
198 diags_display({dirMat,dirMatRef},'B',dirTex,nameTex);
199
200 elseif strcmp(setDiags{ii},'C');
201 write2tex(fileTex,1,'global, zonal, regional averages',1);
202 diags_display({dirMat,dirMatRef},'C',dirTex,nameTex);
203
204 elseif strcmp(setDiags{ii},'D');
205 budget_list=1;
206 if ~isempty(dir([dirMat budgetList]));
207 eval(['load ' dirMat budgetList ';']);
208 end;
209 for kk=budget_list;
210 if kk==1;
211 tmp1='(top to bottom)';
212 else;
213 tmp1=sprintf('(%im to bottom)',round(-mygrid.RF(kk)));
214 end;
215 write2tex(fileTex,1,['budgets : volume, heat and salt ' tmp1],1);
216 diags_display({dirMat,dirMatRef},{'D',kk},dirTex,nameTex);
217 end;
218
219 elseif strcmp(setDiags{ii},'MLD');
220 write2tex(fileTex,1,'mixed layer depth fields',1);
221 diags_display({dirMat,dirMatRef},'MLD',dirTex,nameTex);
222 elseif strcmp(setDiags{ii},'SEAICE');
223 write2tex(fileTex,1,'seaice and snow fields',1);
224 diags_display({dirMat,dirMatRef},'SEAICE',dirTex,nameTex);
225 elseif strcmp(setDiags{ii},'controls');
226 %controls
227 write2tex(fileTex,1,'controls',1);
228 cost_xx('',dirMat,0,dirTex,nameTex);
229
230 else;
231 ttl=input('specify tex file section title:\n');
232 write2tex(fileTex,1,ttl,1);
233 diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
234
235 end;%if iscell(setDiags{ii});
236 end;%for ii=1:length(setDiags);
237
238 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
239 %finalize tex file
240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
241
242 write2tex(fileTex,4);
243 %if isunix;
244 %write2tex(fileTex,5);
245 %else;
246 %fprintf(['\nUsers of pc or mac computers are left to compile the tex file :\n' fileTex '\noutside of matlab \n \n']);
247 %end;
248 fprintf(['\n Tex file is ready to be compiled :\n ' fileTex '\n']);
249
250 %%%%% get README text information
251
252 function [rdm]=read_readme(filReadme);
253
254 gcmfaces_global;
255
256 rdm=[];
257
258 fid=fopen(filReadme,'rt');
259 while ~feof(fid);
260 nn=length(rdm);
261 rdm{nn+1} = fgetl(fid);
262 end;
263 fclose(fid);
264
265

  ViewVC Help
Powered by ViewVC 1.1.22