/[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.7 - (hide annotations) (download)
Fri Jan 31 03:28:12 2014 UTC (11 years, 5 months ago) by heimbach
Branch: MAIN
Changes since 1.6: +2 -2 lines
Few more unit edits.

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.5 % is {'profiles','cost','A','B','C','D','MLD'} 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     %set default setDiags
37     if isempty(setDiags);
38 gforget 1.5 setDiags={'profiles','cost','A','B','C','D','MLD'};
39     if strcmp(nameTex,'myPlots'); nameTex='standardAnalysis'; end;
40    
41 gforget 1.1 end;
42    
43     %set fileTex and create dirTex if needed
44     if isempty(dirTex); error('dirTex must be specified'); end;
45     fileTex=[dirTex nameTex '.tex'];
46     if isempty(dir(dirTex)); eval(['!mkdir ' dirTex ';']); end;
47    
48     %%%%%%%%%%%%%%%%%%%%%%
49     %load grid and params:
50     %%%%%%%%%%%%%%%%%%%%%%
51    
52     gcmfaces_global; global myparms;
53     test1=~isempty(dir([dirMat 'basic_diags_ecco_mygrid.mat']));
54     test2=~isempty(dir([dirMat 'diags_grid_parms.mat']));
55     if ~test1&~test2;
56     error('missing diags_grid_parms.mat')
57     elseif test2;
58     nameGrid='diags_grid_parms.mat';
59     suffDiag='diags_set_';
60     budgetList='diags_select_budget_list.mat';
61     else;
62     nameGrid='basic_diags_ecco_mygrid.mat';
63     suffDiag='basic_diags_ecco_';
64     budgetList='basic_diags_ecco_budget_list.mat';
65     end;
66    
67     %here we always reload the grid from dirMat to make sure the same one is used throughout
68     eval(['load ' dirMat nameGrid ';']);
69    
70     %in case mygrid.memoryLimit=1, load the stuff that was not saved to diags_grid_parms.mat
71     if mygrid.memoryLimit==1;
72     list0={'hFacS','hFacW'};
73     for iFld=1:length(list0);
74     eval(['mygrid.' list0{iFld} '=rdmds2gcmfaces([mygrid.dirGrid ''' list0{iFld} '*'']);']);
75     end;
76     %
77     mygrid.hFacCsurf=mygrid.hFacC;
78     for ff=1:mygrid.hFacC.nFaces; mygrid.hFacCsurf{ff}=mygrid.hFacC{ff}(:,:,1); end;
79     %
80     mskC=mygrid.hFacC; mskC(mskC==0)=NaN; mskC(mskC>0)=1; mygrid.mskC=mskC;
81     mskW=mygrid.hFacW; mskW(mskW==0)=NaN; mskW(mskW>0)=1; mygrid.mskW=mskW;
82     mskS=mygrid.hFacS; mskS(mskS==0)=NaN; mskS(mskS>0)=1; mygrid.mskS=mskS;
83     %
84     gcmfaces_lines_zonal;
85     mygrid.LATS=[mygrid.LATS_MASKS.lat]';
86     [lonPairs,latPairs,names]=line_greatC_TUV_MASKS_v4;
87     gcmfaces_lines_transp(lonPairs,latPairs,names);
88     end;
89    
90    
91     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
92     %finalize listDiags
93     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
94    
95     %determined where to display anomalies between runs
96     doAnomalies=~isempty(dirMatRef);
97    
98     %check if result is here to plot
99     doBudget=~isempty(dir([dirMat suffDiag 'D_*']));
100 gforget 1.4 doBudget=~isempty(dir([dirMat suffDiag 'D_*']))|...
101     ~isempty(dir([dirMat 'diags_set_D/' suffDiag 'D_*']));
102     doProfiles=~isempty(dir([dirMat 'insitu_cost_all.mat']))|...
103     ~isempty(dir([dirMat 'cost/insitu_cost_all.mat']));
104     doCost=~isempty(dir([dirMat 'cost_altimeter_obs.mat']))|...
105     ~isempty(dir([dirMat 'cost/cost_altimeter_obs.mat']));
106     doCtrl=~isempty(dir([dirMat 'cost_xx_aqh.mat']))|...
107     ~isempty(dir([dirMat 'cost/cost_xx_aqh.mat']));
108 gforget 1.1
109     %the following have no code for diff between runs
110     if doAnomalies;
111     doProfiles=0;
112     doCost=0;
113     doCtrl=0;
114     end;
115    
116     %reduce setDiags if needed:
117     doDiags=ones(1,length(setDiags));
118     %
119     for ii=1:length(setDiags);
120     if iscell(setDiags{ii});
121     if ~doBudget&strcmp(setDiags{ii}{1},'D'); doDiags(ii)=0; end;
122     elseif ~doBudget&strcmp(setDiags{ii},'D'); doDiags(ii)=0;
123     elseif ~doProfiles&strcmp(setDiags{ii},'profiles'); doDiags(ii)=0;
124     elseif ~doCost&strcmp(setDiags{ii},'cost'); doDiags(ii)=0;
125     elseif ~doCtrl&strcmp(setDiags{ii},'controls'); doDiags(ii)=0;
126     end;
127     end;
128     %
129     setDiags={setDiags{find(doDiags)}};
130    
131     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
132     %initialize tex file
133     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
134    
135     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
136 heimbach 1.7 myTitle={'standard analysis of the solution in',tmp1};
137 gforget 1.1 if ~isempty(dirMatRef);
138     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
139 heimbach 1.7 myTitle={'standard analysis of the solution in',tmp1};
140 gforget 1.1 tmp1=dirMatRef; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
141     myTitle={myTitle{:},' minus ',tmp1};
142     end;
143     write2tex(fileTex,0,myTitle);
144    
145     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
146     %augment tex file
147     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
148    
149     for ii=1:length(setDiags);
150    
151     if iscell(setDiags{ii});
152     ttl=input('specify tex file section title:\n');
153     write2tex(fileTex,1,ttl,1);
154     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
155    
156     elseif strcmp(setDiags{ii},'profiles');
157     %in situ profiles fit
158 gforget 1.5 write2tex(fileTex,1,'fit to data',1);
159     write2tex(fileTex,1,'fit to in situ data',2);
160 gforget 1.2 insitu_diags(dirMat,0,dirTex,nameTex);
161 gforget 1.1
162     elseif strcmp(setDiags{ii},'cost');
163     %altimeter fit
164 gforget 1.5 write2tex(fileTex,1,'fit to altimeter data',2);
165 gforget 1.2 cost_altimeter_disp(dirMat,2,'modMobs',dirTex,nameTex);
166     cost_altimeter_disp(dirMat,1,'modMobs',dirTex,nameTex);
167     cost_altimeter_disp(dirMat,3,'modMobs',dirTex,nameTex);
168     cost_altimeter_disp(dirMat,1,'obs',dirTex,nameTex);
169     cost_altimeter_disp(dirMat,1,'mod',dirTex,nameTex);
170 gforget 1.1
171     %other cost terms
172 gforget 1.5 write2tex(fileTex,1,'fit to sst data',2);
173 gforget 1.2 cost_sst('',dirMat,0,dirTex,nameTex);
174 gforget 1.5 write2tex(fileTex,1,'fit to grace data',2);
175 gforget 1.2 cost_bp('',dirMat,0,dirTex,nameTex);
176 gforget 1.5 write2tex(fileTex,1,'fit to nsidc data',2);
177 gforget 1.3 cost_seaicearea('',dirMat,0,dirTex,nameTex);
178 gforget 1.1
179     elseif strcmp(setDiags{ii},'A');
180     write2tex(fileTex,1,'volume, heat and salt transports',1);
181     diags_display({dirMat,dirMatRef},'A',dirTex,nameTex);
182    
183     elseif strcmp(setDiags{ii},'B');
184     write2tex(fileTex,1,'mean and variance maps',1);
185     diags_display({dirMat,dirMatRef},'B',dirTex,nameTex);
186    
187     elseif strcmp(setDiags{ii},'C');
188     write2tex(fileTex,1,'global, zonal, regional averages',1);
189     diags_display({dirMat,dirMatRef},'C',dirTex,nameTex);
190    
191     elseif strcmp(setDiags{ii},'D');
192     budget_list=1;
193     if ~isempty(dir([dirMat budgetList]));
194     eval(['load ' dirMat budgetList ';']);
195     end;
196     for kk=budget_list;
197     if kk==1;
198     tmp1='(top to bottom)';
199     else;
200     tmp1=sprintf('(%im to bottom)',round(-mygrid.RF(kk)));
201     end;
202     write2tex(fileTex,1,['budgets : volume, heat and salt ' tmp1],1);
203     diags_display({dirMat,dirMatRef},{'D',kk},dirTex,nameTex);
204     end;
205    
206 gforget 1.5 elseif strcmp(setDiags{ii},'MLD');
207 gforget 1.6 write2tex(fileTex,1,'mixed layer depth fields',1);
208 gforget 1.5 diags_display({dirMat,dirMatRef},'MLD',dirTex,nameTex);
209     elseif strcmp(setDiags{ii},'SEAICE');
210     write2tex(fileTex,1,'seaice and snow fields',1);
211     diags_display({dirMat,dirMatRef},'SEAICE',dirTex,nameTex);
212 gforget 1.1 elseif strcmp(setDiags{ii},'controls');
213     %controls
214     write2tex(fileTex,1,'controls',1);
215 gforget 1.2 cost_xx('',dirMat,0,dirTex,nameTex);
216 gforget 1.1
217     else;
218     ttl=input('specify tex file section title:\n');
219     write2tex(fileTex,1,ttl,1);
220     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
221    
222     end;%if iscell(setDiags{ii});
223     end;%for ii=1:length(setDiags);
224    
225     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
226     %finalize tex file
227     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
228    
229     write2tex(fileTex,4);
230     %write2tex(fileTex,5);
231    

  ViewVC Help
Powered by ViewVC 1.1.22