/[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.15 - (hide annotations) (download)
Mon Jan 11 21:28:30 2016 UTC (9 years, 6 months ago) by gforget
Branch: MAIN
Changes since 1.14: +7 -5 lines
- diags_driver.m: add MLD in default list.
- diags_driver_tex.m: issue message about compiling tex.
- diags_grid_parms.m: treat case when nctiles_grid is used.
- diags_set_A.m: skip Atl., Pac., Ind. computation if
  basin_masks_eccollc_90x50.bin is not found by v4_basin.
- diags_set_C.m: fix nctiles, climatology case.

1 gforget 1.1 function []=diags_driver_tex(dirMat,setDiags,dirTex,nameTex);
2     %object: build tex file from a set of diagnostics
3     %input: dirMat is the directory where diagnozed .mat files are.
4     % dirMat is usually specified as a chararcter string, but
5     % user can also specify dirMat as {dirMat,dirMatRef}
6     % in order to plot the dirMat-dirMatRef anlomalies.
7     % setDiags is the choice of diagnostics set. The default
8 gforget 1.14 % is {'profiles','cost','A','B','C','MLD','D'} where
9 gforget 1.1 % 'profiles') model to insitu data comparison
10     % 'cost') ssh etc. cost functions
11     % 'A') trasnports
12     % 'B') air-sea fluxes
13     % 'C') state variables
14     % 'D') global and regional budgets
15 gforget 1.5 % 'MLD') mixed layer depth fields
16     % 'SEAICE') seaice fields
17     % 'controls') control vector adjustments
18 gforget 1.1 % dirTex is the directory where tex and figures files are created
19     % nameTex is the tex file name (default : 'myPlots')
20     %note: e.g. to plot just the budgets setDiags={'D'}, and
21     % to plot just the subsurface budgets setDiags={{'D',11}}
22    
23     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24     %determine input/output params:
25     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26    
27     %directory names:
28     if iscell(dirMat); dirMatRef=dirMat{2}; dirMat=dirMat{1}; end;
29     dirMat=[dirMat '/'];
30     if isempty(who('dirMatRef')); dirMatRef='';
31     elseif ~isempty(dirMatRef); dirMatRef=[dirMatRef '/'];
32     end;
33     if isempty(who('dirTex')); dirTex=''; else; dirTex=[dirTex '/']; end;
34     if isempty(who('nameTex')); nameTex='myPlots'; end;
35    
36 gforget 1.10 %set default setDiags and myTitle
37 gforget 1.1 if isempty(setDiags);
38 gforget 1.14 setDiags={'profiles','cost','A','B','C','MLD','D'};
39 gforget 1.5 if strcmp(nameTex,'myPlots'); nameTex='standardAnalysis'; end;
40 gforget 1.10 %
41     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
42     myTitle={'gcmfaces','standard analysis of the solution in',tmp1};
43     else;
44     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
45     myTitle={'gcmfaces analysis of the solution in',tmp1};
46 gforget 1.1 end;
47    
48     %set fileTex and create dirTex if needed
49     if isempty(dirTex); error('dirTex must be specified'); end;
50     fileTex=[dirTex nameTex '.tex'];
51 gforget 1.11 if isempty(dir(dirTex)); mkdir(dirTex); end;
52 gforget 1.1
53     %%%%%%%%%%%%%%%%%%%%%%
54     %load grid and params:
55     %%%%%%%%%%%%%%%%%%%%%%
56    
57     gcmfaces_global; global myparms;
58     test1=~isempty(dir([dirMat 'basic_diags_ecco_mygrid.mat']));
59     test2=~isempty(dir([dirMat 'diags_grid_parms.mat']));
60     if ~test1&~test2;
61     error('missing diags_grid_parms.mat')
62     elseif test2;
63     nameGrid='diags_grid_parms.mat';
64     suffDiag='diags_set_';
65     budgetList='diags_select_budget_list.mat';
66     else;
67     nameGrid='basic_diags_ecco_mygrid.mat';
68     suffDiag='basic_diags_ecco_';
69     budgetList='basic_diags_ecco_budget_list.mat';
70     end;
71    
72     %here we always reload the grid from dirMat to make sure the same one is used throughout
73     eval(['load ' dirMat nameGrid ';']);
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]=line_greatC_TUV_MASKS_v4;
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 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     %altimeter fit
174 gforget 1.9 if isempty(find(strcmp(setDiags,'profiles')));
175     write2tex(fileTex,1,'fit to data',1);
176     end;
177     write2tex(fileTex,1,'fit to altimeter data (RADS)',2);
178 gforget 1.14 cost_altimeter_disp(dirMat,0,'etaglo',dirTex,nameTex);
179 gforget 1.2 cost_altimeter_disp(dirMat,2,'modMobs',dirTex,nameTex);
180     cost_altimeter_disp(dirMat,1,'modMobs',dirTex,nameTex);
181     cost_altimeter_disp(dirMat,3,'modMobs',dirTex,nameTex);
182     cost_altimeter_disp(dirMat,1,'obs',dirTex,nameTex);
183     cost_altimeter_disp(dirMat,1,'mod',dirTex,nameTex);
184 gforget 1.1
185     %other cost terms
186 gforget 1.5 write2tex(fileTex,1,'fit to sst data',2);
187 gforget 1.2 cost_sst('',dirMat,0,dirTex,nameTex);
188 gforget 1.9 write2tex(fileTex,1,'fit to grace r4 data',2);
189 gforget 1.2 cost_bp('',dirMat,0,dirTex,nameTex);
190 gforget 1.9 write2tex(fileTex,1,'fit to seaice data',2);
191 gforget 1.3 cost_seaicearea('',dirMat,0,dirTex,nameTex);
192 gforget 1.1
193     elseif strcmp(setDiags{ii},'A');
194     write2tex(fileTex,1,'volume, heat and salt transports',1);
195     diags_display({dirMat,dirMatRef},'A',dirTex,nameTex);
196    
197     elseif strcmp(setDiags{ii},'B');
198     write2tex(fileTex,1,'mean and variance maps',1);
199     diags_display({dirMat,dirMatRef},'B',dirTex,nameTex);
200    
201     elseif strcmp(setDiags{ii},'C');
202     write2tex(fileTex,1,'global, zonal, regional averages',1);
203     diags_display({dirMat,dirMatRef},'C',dirTex,nameTex);
204    
205     elseif strcmp(setDiags{ii},'D');
206     budget_list=1;
207     if ~isempty(dir([dirMat budgetList]));
208     eval(['load ' dirMat budgetList ';']);
209     end;
210     for kk=budget_list;
211     if kk==1;
212     tmp1='(top to bottom)';
213     else;
214     tmp1=sprintf('(%im to bottom)',round(-mygrid.RF(kk)));
215     end;
216     write2tex(fileTex,1,['budgets : volume, heat and salt ' tmp1],1);
217     diags_display({dirMat,dirMatRef},{'D',kk},dirTex,nameTex);
218     end;
219    
220 gforget 1.5 elseif strcmp(setDiags{ii},'MLD');
221 gforget 1.6 write2tex(fileTex,1,'mixed layer depth fields',1);
222 gforget 1.5 diags_display({dirMat,dirMatRef},'MLD',dirTex,nameTex);
223     elseif strcmp(setDiags{ii},'SEAICE');
224     write2tex(fileTex,1,'seaice and snow fields',1);
225     diags_display({dirMat,dirMatRef},'SEAICE',dirTex,nameTex);
226 gforget 1.1 elseif strcmp(setDiags{ii},'controls');
227     %controls
228     write2tex(fileTex,1,'controls',1);
229 gforget 1.2 cost_xx('',dirMat,0,dirTex,nameTex);
230 gforget 1.1
231     else;
232     ttl=input('specify tex file section title:\n');
233     write2tex(fileTex,1,ttl,1);
234     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
235    
236     end;%if iscell(setDiags{ii});
237     end;%for ii=1:length(setDiags);
238    
239     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
240     %finalize tex file
241     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
242    
243     write2tex(fileTex,4);
244 gforget 1.15 %if isunix;
245     %write2tex(fileTex,5);
246     %else;
247     %fullTex=[dirTex fileTex '.tex'];
248     %fprintf(['\nUsers of pc or mac computers are left to compile the tex file :\n' fullTex '\noutside of matlab \n \n']);
249     %end;
250 gforget 1.13 fullTex=[dirTex fileTex '.tex'];
251 gforget 1.15 fprintf(['\n Tex file is ready to be compiled :\n ' fullTex '\n']);
252 gforget 1.1
253 gforget 1.10 %%%%% get README text information
254    
255     function [rdm]=read_readme(filReadme);
256    
257     gcmfaces_global;
258    
259     rdm=[];
260    
261     fid=fopen(filReadme,'rt');
262     while ~feof(fid);
263     nn=length(rdm);
264     rdm{nn+1} = fgetl(fid);
265     end;
266     fclose(fid);
267    
268    

  ViewVC Help
Powered by ViewVC 1.1.22