/[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.1 - (hide annotations) (download)
Sat Dec 29 17:55:18 2012 UTC (12 years, 6 months ago) by gforget
Branch: MAIN
- add display components to gcmfaces_diags :
    diags_display.m : display a set of diagnostics
    diags_driver_tex.m : build tex file from a set of diagnostics

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     insitu_diags('',dirMat,0,dirTex);
151    
152     elseif strcmp(setDiags{ii},'cost');
153     %altimeter fit
154     write2tex(fileTex,1,'fit to altimeter data',1);
155     cost_altimeter_disp(dirMat,2,'modMobs',dirTex);
156     cost_altimeter_disp(dirMat,1,'modMobs',dirTex);
157     cost_altimeter_disp(dirMat,3,'modMobs',dirTex);
158     cost_altimeter_disp(dirMat,1,'obs',dirTex);
159     cost_altimeter_disp(dirMat,1,'mod',dirTex);
160    
161     %other cost terms
162     write2tex(fileTex,1,'fit to sst data',1);
163     cost_sst('',dirMat,0,dirTex);
164     write2tex(fileTex,1,'fit to grace data',1);
165     cost_bp('',dirMat,0,dirTex);
166    
167     elseif strcmp(setDiags{ii},'A');
168     write2tex(fileTex,1,'volume, heat and salt transports',1);
169     diags_display({dirMat,dirMatRef},'A',dirTex,nameTex);
170    
171     elseif strcmp(setDiags{ii},'B');
172     write2tex(fileTex,1,'mean and variance maps',1);
173     diags_display({dirMat,dirMatRef},'B',dirTex,nameTex);
174    
175     elseif strcmp(setDiags{ii},'C');
176     write2tex(fileTex,1,'global, zonal, regional averages',1);
177     diags_display({dirMat,dirMatRef},'C',dirTex,nameTex);
178    
179     elseif strcmp(setDiags{ii},'D');
180     budget_list=1;
181     if ~isempty(dir([dirMat budgetList]));
182     eval(['load ' dirMat budgetList ';']);
183     end;
184     for kk=budget_list;
185     if kk==1;
186     tmp1='(top to bottom)';
187     else;
188     tmp1=sprintf('(%im to bottom)',round(-mygrid.RF(kk)));
189     end;
190     write2tex(fileTex,1,['budgets : volume, heat and salt ' tmp1],1);
191     diags_display({dirMat,dirMatRef},{'D',kk},dirTex,nameTex);
192     end;
193    
194     elseif strcmp(setDiags{ii},'controls');
195     %controls
196     write2tex(fileTex,1,'controls',1);
197     cost_xx('',dirMat,0,dirTex);
198    
199     else;
200     ttl=input('specify tex file section title:\n');
201     write2tex(fileTex,1,ttl,1);
202     diags_display({dirMat,dirMatRef},setDiags{ii},dirTex,nameTex);
203    
204     end;%if iscell(setDiags{ii});
205     end;%for ii=1:length(setDiags);
206    
207     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
208     %finalize tex file
209     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210    
211     write2tex(fileTex,4);
212     %write2tex(fileTex,5);
213    

  ViewVC Help
Powered by ViewVC 1.1.22