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

Annotation 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 - (hide 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 gforget 1.1 function []=diags_driver_tex(dirMat,setDiags,dirTex,nameTex);
2 gforget 1.17 % 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 gforget 1.1 % '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 gforget 1.17 % 'D') global and hemispheric budgets
16     % 'MLD') mixed layer depths
17 gforget 1.5 % 'SEAICE') seaice fields
18     % 'controls') control vector adjustments
19 gforget 1.1
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 gforget 1.10 %set default setDiags and myTitle
34 gforget 1.1 if isempty(setDiags);
35 gforget 1.14 setDiags={'profiles','cost','A','B','C','MLD','D'};
36 gforget 1.5 if strcmp(nameTex,'myPlots'); nameTex='standardAnalysis'; end;
37 gforget 1.10 %
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 gforget 1.1 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 gforget 1.11 if isempty(dir(dirTex)); mkdir(dirTex); end;
49 gforget 1.1
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 gforget 1.20 %reload myparms from dirMat (and mygrid if included the mat file)
70 gforget 1.1 eval(['load ' dirMat nameGrid ';']);
71    
72 gforget 1.20 %reload mygrid if needed
73     if isfield(myparms,'dirGrid'); diags_grid(myparms.dirGrid,0); end;
74    
75 gforget 1.1 %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 gforget 1.16 [lonPairs,latPairs,names]=gcmfaces_lines_pairs;
92 gforget 1.1 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 gforget 1.4 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 gforget 1.1
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 gforget 1.10 myTitle={'gcmfaces analysis of the solution in',tmp1};
143 gforget 1.1 tmp1=dirMatRef; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
144     myTitle={myTitle{:},' minus ',tmp1};
145     end;
146 gforget 1.10
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 gforget 1.1
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 gforget 1.5 write2tex(fileTex,1,'fit to data',1);
169     write2tex(fileTex,1,'fit to in situ data',2);
170 gforget 1.2 insitu_diags(dirMat,0,dirTex,nameTex);
171 gforget 1.1
172     elseif strcmp(setDiags{ii},'cost');
173 gforget 1.9 if isempty(find(strcmp(setDiags,'profiles')));
174     write2tex(fileTex,1,'fit to data',1);
175     end;
176 gforget 1.19 %altimeter fit
177     if ~isempty(dir([dirMat 'cost/cost_altimeter_mod.mat']))
178 gforget 1.9 write2tex(fileTex,1,'fit to altimeter data (RADS)',2);
179 gforget 1.14 cost_altimeter_disp(dirMat,0,'etaglo',dirTex,nameTex);
180 gforget 1.2 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 gforget 1.19 end;
186 gforget 1.1 %other cost terms
187 gforget 1.5 write2tex(fileTex,1,'fit to sst data',2);
188 gforget 1.2 cost_sst('',dirMat,0,dirTex,nameTex);
189 gforget 1.9 write2tex(fileTex,1,'fit to seaice data',2);
190 gforget 1.3 cost_seaicearea('',dirMat,0,dirTex,nameTex);
191 gforget 1.1
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 gforget 1.5 elseif strcmp(setDiags{ii},'MLD');
220 gforget 1.6 write2tex(fileTex,1,'mixed layer depth fields',1);
221 gforget 1.5 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 gforget 1.1 elseif strcmp(setDiags{ii},'controls');
226     %controls
227     write2tex(fileTex,1,'controls',1);
228 gforget 1.2 cost_xx('',dirMat,0,dirTex,nameTex);
229 gforget 1.1
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 gforget 1.15 %if isunix;
244     %write2tex(fileTex,5);
245     %else;
246 gforget 1.18 %fprintf(['\nUsers of pc or mac computers are left to compile the tex file :\n' fileTex '\noutside of matlab \n \n']);
247 gforget 1.15 %end;
248 gforget 1.18 fprintf(['\n Tex file is ready to be compiled :\n ' fileTex '\n']);
249 gforget 1.1
250 gforget 1.10 %%%%% 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