/[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.3 - (hide annotations) (download)
Wed Apr 3 14:08:36 2013 UTC (12 years, 3 months ago) by gforget
Branch: MAIN
Changes since 1.2: +2 -0 lines
- add cost_seaicearea display.

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     doProfiles=~isempty(dir([dirMat 'insitu_cost_all.mat']));
97     doCost=~isempty(dir([dirMat 'cost_altimeter_obs.mat']));
98     doCtrl=~isempty(dir([dirMat 'cost_xx_aqh.mat']));
99    
100     %the following have no code for diff between runs
101     if doAnomalies;
102     doProfiles=0;
103     doCost=0;
104     doCtrl=0;
105     end;
106    
107     %reduce setDiags if needed:
108     doDiags=ones(1,length(setDiags));
109     %
110     for ii=1:length(setDiags);
111     if iscell(setDiags{ii});
112     if ~doBudget&strcmp(setDiags{ii}{1},'D'); doDiags(ii)=0; end;
113     elseif ~doBudget&strcmp(setDiags{ii},'D'); doDiags(ii)=0;
114     elseif ~doProfiles&strcmp(setDiags{ii},'profiles'); doDiags(ii)=0;
115     elseif ~doCost&strcmp(setDiags{ii},'cost'); doDiags(ii)=0;
116     elseif ~doCtrl&strcmp(setDiags{ii},'controls'); doDiags(ii)=0;
117     end;
118     end;
119     %
120     setDiags={setDiags{find(doDiags)}};
121    
122     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123     %initialize tex file
124     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
125    
126     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
127     myTitle={'my standard analysis of the solution in',tmp1};
128     if ~isempty(dirMatRef);
129     tmp1=dirMat; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
130     myTitle={'my standard analysis of the solution in',tmp1};
131     tmp1=dirMatRef; tmp2=strfind(tmp1,'_'); tmp1(tmp2)=' ';
132     myTitle={myTitle{:},' minus ',tmp1};
133     end;
134     write2tex(fileTex,0,myTitle);
135    
136     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137     %augment tex file
138     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139    
140     for ii=1:length(setDiags);
141    
142     if iscell(setDiags{ii});
143     ttl=input('specify tex file section title:\n');
144     write2tex(fileTex,1,ttl,1);
145     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
146    
147     elseif strcmp(setDiags{ii},'profiles');
148     %in situ profiles fit
149     write2tex(fileTex,1,'fit to in situ data',1);
150 gforget 1.2 insitu_diags(dirMat,0,dirTex,nameTex);
151 gforget 1.1
152     elseif strcmp(setDiags{ii},'cost');
153     %altimeter fit
154     write2tex(fileTex,1,'fit to altimeter data',1);
155 gforget 1.2 cost_altimeter_disp(dirMat,2,'modMobs',dirTex,nameTex);
156     cost_altimeter_disp(dirMat,1,'modMobs',dirTex,nameTex);
157     cost_altimeter_disp(dirMat,3,'modMobs',dirTex,nameTex);
158     cost_altimeter_disp(dirMat,1,'obs',dirTex,nameTex);
159     cost_altimeter_disp(dirMat,1,'mod',dirTex,nameTex);
160 gforget 1.1
161     %other cost terms
162     write2tex(fileTex,1,'fit to sst data',1);
163 gforget 1.2 cost_sst('',dirMat,0,dirTex,nameTex);
164 gforget 1.1 write2tex(fileTex,1,'fit to grace data',1);
165 gforget 1.2 cost_bp('',dirMat,0,dirTex,nameTex);
166 gforget 1.3 write2tex(fileTex,1,'fit to nsidc data',1);
167     cost_seaicearea('',dirMat,0,dirTex,nameTex);
168 gforget 1.1
169     elseif strcmp(setDiags{ii},'A');
170     write2tex(fileTex,1,'volume, heat and salt transports',1);
171     diags_display({dirMat,dirMatRef},'A',dirTex,nameTex);
172    
173     elseif strcmp(setDiags{ii},'B');
174     write2tex(fileTex,1,'mean and variance maps',1);
175     diags_display({dirMat,dirMatRef},'B',dirTex,nameTex);
176    
177     elseif strcmp(setDiags{ii},'C');
178     write2tex(fileTex,1,'global, zonal, regional averages',1);
179     diags_display({dirMat,dirMatRef},'C',dirTex,nameTex);
180    
181     elseif strcmp(setDiags{ii},'D');
182     budget_list=1;
183     if ~isempty(dir([dirMat budgetList]));
184     eval(['load ' dirMat budgetList ';']);
185     end;
186     for kk=budget_list;
187     if kk==1;
188     tmp1='(top to bottom)';
189     else;
190     tmp1=sprintf('(%im to bottom)',round(-mygrid.RF(kk)));
191     end;
192     write2tex(fileTex,1,['budgets : volume, heat and salt ' tmp1],1);
193     diags_display({dirMat,dirMatRef},{'D',kk},dirTex,nameTex);
194     end;
195    
196     elseif strcmp(setDiags{ii},'controls');
197     %controls
198     write2tex(fileTex,1,'controls',1);
199 gforget 1.2 cost_xx('',dirMat,0,dirTex,nameTex);
200 gforget 1.1
201     else;
202     ttl=input('specify tex file section title:\n');
203     write2tex(fileTex,1,ttl,1);
204     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
205    
206     end;%if iscell(setDiags{ii});
207     end;%for ii=1:length(setDiags);
208    
209     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210     %finalize tex file
211     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
212    
213     write2tex(fileTex,4);
214     %write2tex(fileTex,5);
215    

  ViewVC Help
Powered by ViewVC 1.1.22