/[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.7 - (hide annotations) (download)
Thu Apr 26 23:59:24 2012 UTC (13 years, 3 months ago) by gforget
Branch: MAIN
Changes since 1.6: +9 -0 lines
- alldiag_load.m : add optional param subListTimes to reduce listTimes to listTimes(subListTimes)
- onediag_cat.m : concatenate a diagnostic time series (from consecutive runs typically)

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

  ViewVC Help
Powered by ViewVC 1.1.22