/[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.4 - (hide annotations) (download)
Sat Jan 18 23:37:46 2014 UTC (11 years, 6 months ago) by gforget
Branch: MAIN
Changes since 1.3: +8 -3 lines
- allow for 'mat/' subdirectories

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

  ViewVC Help
Powered by ViewVC 1.1.22