/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagLoad.m
ViewVC logotype

Diff of /MITgcm_contrib/enderton/Diagnostics/DiagLoad.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.7 by molod, Tue Mar 1 20:09:11 2005 UTC revision 1.9 by molod, Tue Jul 5 18:57:48 2005 UTC
# Line 1  Line 1 
1  function [data,xax,yax,time,pltslc] = ...  function [data,xax,yax,time,pltslc] = ...
2      DiagLoad(fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,avg,slc,pst,...      DiagLoad(fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,avg,slc,pst,...
3               LoadGridData,DiagDebug,GridSuffix,ZcordFile,Index,Dim,...               LoadGridData,DiagDebug,GridSuffix,ZcordFile,Index,Dim,Vector,Mate,...
4               Grads,Year0Iter,SecPerYear,Months);               Grads,Year0Iter,SecPerYear,Months,FieldName);
5    
6    
7  % Load parameters.  % Load parameters.
# Line 105  elseif ismember(fln,aimparameters) Line 105  elseif ismember(fln,aimparameters)
105      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
106      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
107          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
108                    ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
109    
110  % Load coupled fields.  Like AIM, the data is all stuffed into one file  % Load coupled fields.  Like AIM, the data is all stuffed into one file
111  % called either 'cplFld.*' (MDS) or 'cpl_tave.*' (MNC).  Variables within  % called either 'cplFld.*' (MDS) or 'cpl_tave.*' (MNC).  Variables within
# Line 138  elseif ismember(fln,cplparameters) Line 138  elseif ismember(fln,cplparameters)
138      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
139      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
140          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
141                    ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);               ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
142    
143  % Load ice parameters.  Note that as the ice variable names appear to be in  % Load ice parameters.  Note that as the ice variable names appear to be in
144  % constant flux, this part quickly becomes out of date.  % constant flux, this part quickly becomes out of date.
# Line 153  elseif ismember(fln,iceparameters) Line 153  elseif ismember(fln,iceparameters)
153      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
154      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
155          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
156                    ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
157    
158  % Load generic fields where no modifications are needed.  % Load generic fields where no modifications are needed.
159  elseif ismember(fln,{'S','T','Temp','aim_RH','phiHyd','Conv'})  elseif ismember(fln,{'S','T','Temp','aim_RH','phiHyd','Conv'})
# Line 161  elseif ismember(fln,{'S','T','Temp','aim Line 161  elseif ismember(fln,{'S','T','Temp','aim
161      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
162      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
163          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
164                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
165    
166  % Read vertical velocities, eta.  Convert from [P] to [hPa] in atmosphere.  % Read vertical velocities, eta.  Convert from [P] to [hPa] in atmosphere.
167  elseif ismember(fln,{'W','wVel','Eta','ETA'})  elseif ismember(fln,{'W','wVel','Eta','ETA'})
# Line 170  elseif ismember(fln,{'W','wVel','Eta','E Line 170  elseif ismember(fln,{'W','wVel','Eta','E
170      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
171      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
172          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
173                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
174            
175  % Load horizontal velocities, convert to lat-lon grid.  % Load horizontal velocities, convert to lat-lon grid.
176  elseif ismember(fln,{'U','V','uVel','vVel','fizhi_U','fizhi_V'})  elseif ismember(fln,{'U','V','uVel','vVel','fizhi_U','fizhi_V'})
# Line 197  elseif ismember(fln,{'U','V','uVel','vVe Line 197  elseif ismember(fln,{'U','V','uVel','vVe
197      end      end
198      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
199          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
200                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
201    
202  % Meridional overturning.  % Meridional overturning.
203  elseif ismember(fln,{'Bol','Psi','Res'})  elseif ismember(fln,{'Bol','Psi','Res'})
# Line 280  elseif ismember(fln,{'ActT','ThetaEc'}) Line 280  elseif ismember(fln,{'ActT','ThetaEc'})
280      end      end
281      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
282          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,...
283                    avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
284    
285                                
286  % Read in variabilities.  Here we must make some simple calculations.  For  % Read in variabilities.  Here we must make some simple calculations.  For
# Line 296  elseif isequal(fln,'ETAstd') Line 296  elseif isequal(fln,'ETAstd')
296      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
297      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
298          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
299                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
300  elseif isequal(fln,'Tstd')  elseif isequal(fln,'Tstd')
301      T  = DiagLoad_Local('T' ,dat,dad,grd,itr,ddf,filesuffix,mnchandle);      T  = DiagLoad_Local('T' ,dat,dad,grd,itr,ddf,filesuffix,mnchandle);
302      TT = DiagLoad_Local('TT',dat,dad,grd,itr,ddf,filesuffix,mnchandle);      TT = DiagLoad_Local('TT',dat,dad,grd,itr,ddf,filesuffix,mnchandle);
# Line 304  elseif isequal(fln,'Tstd') Line 304  elseif isequal(fln,'Tstd')
304      data = DiagAverage(data,fln,avg,months,ddf,Dim);      data = DiagAverage(data,fln,avg,months,ddf,Dim);
305      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
306          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
307                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
308  elseif isequal(fln,'KEpri')  elseif isequal(fln,'KEpri')
309      U  = DiagLoad_Local('uVel',dat,dad,grd,itr,ddf,filesuffix,mnchandle);      U  = DiagLoad_Local('uVel',dat,dad,grd,itr,ddf,filesuffix,mnchandle);
310      V  = DiagLoad_Local('vVel',dat,dad,grd,itr,ddf,filesuffix,mnchandle);      V  = DiagLoad_Local('vVel',dat,dad,grd,itr,ddf,filesuffix,mnchandle);
# Line 323  elseif isequal(fln,'KEpri') Line 323  elseif isequal(fln,'KEpri')
323      data = sqrt(abs((U.*U + V.*V) - (UU + VV)));      data = sqrt(abs((U.*U + V.*V) - (UU + VV)));
324      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
325          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
326                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
327                        
328  % If the field is not recognized, try best to try and open it.  % If the field is not recognized, try best to try and open it.
329  else  else
330      disp(['  Unknown field, attempting to load.']);      disp(['  Unknown field, attempting to load.']);
331      data  = DiagLoad_Local(fln,dat,dad,grd,itr,ddf,filesuffix,mnchandle);      data  = DiagLoad_Local(fln,dat,dad,grd,itr,ddf,filesuffix,mnchandle);
332      if DiagDebug, disp(['  Debug -- ''data'' size after load:  ',mat2str(size(data))]); end      if DiagDebug, disp(['  Debug -- ''data'' size after load:  ',mat2str(size(data))]); end
333      if ~isequal(Index,0)      if isequal(Vector,1) | isequal(Vector,2) | isequal(Vector,3)
334         if isequal(Vector,1) | isequal(Vector,3)
335          if ~isequal(Index,0)
336              if     isequal(Dim,2), U = squeeze(data(:,:,Index,:));
337              elseif isequal(Dim,3), U = squeeze(data(:,:,:,Index,:)); end
338          end
339          if ~isequal(Mate,0)
340              if     isequal(Dim,2), V = squeeze(data(:,:,Mate,:));
341              elseif isequal(Dim,3), V = squeeze(data(:,:,:,Mate,:)); end
342          end
343         elseif isequal(Vector,2)
344          if ~isequal(Index,0)
345              if     isequal(Dim,2), V = squeeze(data(:,:,Index,:));
346              elseif isequal(Dim,3), V = squeeze(data(:,:,:,Index,:)); end
347          end
348          if ~isequal(Mate,0)
349              if     isequal(Dim,2), U = squeeze(data(:,:,Mate,:));
350              elseif isequal(Dim,3), U = squeeze(data(:,:,:,Mate,:)); end
351          end
352         end
353         U = DiagAverage(U,fln,avg,months,ddf,Dim);
354         V = DiagAverage(V,fln,avg,months,ddf,Dim);
355            [XC,XG,YC,YG,Ylat,ZC,ZG,RAC,drC,drF,HFacC,HFacW,HFacS,dxG,dyG,dxC,dyC] = ...
356            DiagLoadGridData(LoadGridData,grd,gdf,flu,GridSuffix,ZcordFile);
357         if isequal(Vector,1) | isequal(Vector,2)
358            [U,V]=uvcube2latlon(XC,YC,U,V,XL,YL);
359         end
360         if isequal(Vector,1)
361          data = U;
362         elseif isequal(Vector,2)
363          data = V;
364         elseif isequal(Vector,3)
365          if isequal(flu,'A'),     delM = - 1000*drF ./ g;
366          elseif isequal(flu,'O'), delM = drF;             end
367          [psiavg,mskG,ylat]=calc_PsiCube(delM,U.*HFacW,V.*HFacS,dxG,dyG);
368          data = psiavg(2:end-1,:)';
369          if isequal(flu,'A'), data = data./1e6; end
370          xax = ylat; yax = ZG; pltslc = 'lathgt';
371         end
372         if DiagDebug, disp(['  Debug -- ''data'' size after vector manipulation:  ',mat2str(size(data))]); end
373        else
374    % Sequence here for Vector = 0
375         if ~isequal(Index,0)
376          if     isequal(Dim,2), data = squeeze(data(:,:,Index,:));          if     isequal(Dim,2), data = squeeze(data(:,:,Index,:));
377          elseif isequal(Dim,3), data = squeeze(data(:,:,:,Index,:)); end          elseif isequal(Dim,3), data = squeeze(data(:,:,:,Index,:)); end
378         end
379         if DiagDebug, disp(['  Debug -- ''data'' size after indexing:  ',mat2str(size(data))]); end
380         data = DiagAverage(data,fln,avg,months,ddf,Dim);
381    %  Actual Temperature -- When the FieldName says ActT we assume that
382    %  the field that is pointed to in Index is potential temperature
383         if isequal(FieldName,'ActT')
384            [XC,XG,YC,YG,Ylat,ZC,ZG,RAC,drC,drF,HFacC,HFacW,HFacS,dxG,dyG,dxC,dyC] = ...
385            DiagLoadGridData(LoadGridData,grd,gdf,flu,GridSuffix,ZcordFile);
386          pres = NaN.*zeros(size(data));
387          for iz=1:length(ZC), pres(:,:,iz)=ZC(iz); end
388          temp=data.*(pres./presrefA).^(RdA/cpA);
389          data=temp;
390         end
391    
392         if DiagDebug, disp(['  Debug -- ''data'' size after average:  ',mat2str(size(data))]); end
393      end      end
394      if DiagDebug, disp(['  Debug -- ''data'' size after indexing:  ',mat2str(size(data))]); end      if ~isequal(Vector,3)
     data = DiagAverage(data,fln,avg,months,ddf,Dim);  
     if DiagDebug, disp(['  Debug -- ''data'' size after average:  ',mat2str(size(data))]); end  
395      [data,xax,yax,pltslc] = ...      [data,xax,yax,pltslc] = ...
396          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...          DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
397                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);                    flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile,Vector,FieldName);
398      if DiagDebug, disp(['  Debug -- ''data'' size after slice:  ',mat2str(size(data))]); end      if DiagDebug, disp(['  Debug -- ''data'' size after slice:  ',mat2str(size(data))]); end
399      if DiagDebug, disp(['  Debug -- ''xax'' size:  ',mat2str(size(xax))]); end      if DiagDebug, disp(['  Debug -- ''xax'' size:  ',mat2str(size(xax))]); end
400      if DiagDebug, disp(['  Debug -- ''yax'' size:  ',mat2str(size(yax))]); end      if DiagDebug, disp(['  Debug -- ''yax'' size:  ',mat2str(size(yax))]); end
401      if DiagDebug, disp(['  Debug -- ''pltslc'':  ',pltslc]); end      if DiagDebug, disp(['  Debug -- ''pltslc'':  ',pltslc]); end
402        end
403  end  end
404    
   
405  %-------------------------------------------------------------------------%  %-------------------------------------------------------------------------%
406  %                            Local functions                              %  %                            Local functions                              %
407  %-------------------------------------------------------------------------%  %-------------------------------------------------------------------------%

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22