/[MITgcm]/MITgcm_contrib/gael/matlab_class/ecco_v4/alldiag_load.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/ecco_v4/alldiag_load.m

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


Revision 1.6 - (hide annotations) (download)
Wed Apr 18 01:59:54 2012 UTC (13 years, 3 months ago) by gforget
Branch: MAIN
Changes since 1.5: +12 -25 lines
- input timeStep param (now taken from global myparms.timeStep)
- listTimes to units of years
- rm output alldiag_anom (now done in basic_diags_ecco_disp.m, more selectively)
- rm fields from alldiag output, when they are not selected

1 gforget 1.6 function [alldiag]=alldiag_load(dirMat,nameMat,varargin);
2 gforget 1.3 %object: load single record files off basic_diags_ecco, and assemble time records
3     %inputs: dirMat is the model run sub-directory where the matlab files are (e.g. 'mat/')
4 gforget 1.4 % nameMat is the mat files name (e.g. 'basic_diags_ecco_A_*.mat')
5     %optional: nameDiag is the name of the diagnostic of interest
6    
7 gforget 1.6 if nargin>2; nameDiag=varargin{1}; else; nameDiag=''; end;
8    
9     %model run paramters (from basic_diags_ecco_mygrid.mat)
10     global myparms;
11 gforget 1.1
12     %get list of files
13 gforget 1.3 listFiles=dir([dirMat '/' nameMat]);
14 gforget 1.1 %get time steps and sort listFiles
15 gforget 1.3 listSteps=[]; for tt=1:length(listFiles);
16     nn=listFiles(tt).name; ii=strfind(nn,'_'); ii=ii(end); listSteps=[listSteps;str2num(nn(ii+1:end-4))]; end;
17 gforget 1.1 [listSteps,ii]=sort(listSteps);
18     listFiles=listFiles(ii);
19 gforget 1.6 %compute approximate times (in years -- using 365.25 as year length)
20     listTimes=myparms.yearFirst(1)+listSteps*myparms.timeStep/86400/365.25;
21 gforget 1.1 %initialize alldiag
22 gforget 1.3 alldiag=open([dirMat listFiles(1).name]);
23 gforget 1.1 listDiags=fieldnames(alldiag);
24 gforget 1.4 %restrict list of diags to load
25     if ~isempty(nameDiag); listDiags={nameDiag}; end;
26 gforget 1.1 %loop and concatenate
27     for tt=2:length(listSteps);
28 gforget 1.3 tmpdiag=open([dirMat listFiles(tt).name]);
29 gforget 1.1 for ii=1:length(listDiags);
30     %get data:
31     eval(['tmp1=tmpdiag.' listDiags{ii} '; tmp2=alldiag.' listDiags{ii} ';']);
32     %determine the time dimension:
33     if strcmp(class(tmp1),'gcmfaces'); nDim=size(tmp1{1}); else; nDim=size(tmp1); end;
34     if ~isempty(find(nDim==0)); nDim=0;
35     elseif nDim(end)==1; nDim=length(nDim)-1;
36     else; nDim=length(nDim);
37     end;
38     %concatenate along the time dimension:
39     if nDim>0; tmp2=cat(nDim+1,tmp2,tmp1); eval(['alldiag.' listDiags{ii} '=tmp2;']); end;
40     end;
41     end;
42     %clean empty diags up
43     for ii=1:length(listDiags);
44     eval(['tmp1=isempty(alldiag.' listDiags{ii} ');']);
45     if tmp1; alldiag=rmfield(alldiag,listDiags{ii}); end;
46     end;
47 gforget 1.6 %remove diags that were not selected (and therefore not concatenated)
48     tmpDiags=fieldnames(alldiag);
49     for ii=1:length(tmpDiags);
50     if ~sum(sum(strcmp(tmpDiags{ii},listDiags))); alldiag=rmfield(alldiag,tmpDiags{ii}); end;
51     end;
52 gforget 1.1 %complement alldiag
53     alldiag.listSteps=listSteps;
54     alldiag.listTimes=listTimes;
55     alldiag.listDiags=listDiags;
56 gforget 1.3

  ViewVC Help
Powered by ViewVC 1.1.22