/[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.8 - (hide annotations) (download)
Fri Jan 31 21:53:03 2014 UTC (11 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
Changes since 1.7: +43 -13 lines
- alldiag_load.m : extend time dimension, fix for nameDiag iscell.
- v4_rebin_ll1x1.m : remove hard-coded specs.

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.8 alldiag=load([dirMat listFiles(1).name]);
25 gforget 1.1 listDiags=fieldnames(alldiag);
26 gforget 1.4 %restrict list of diags to load
27 gforget 1.8 if ~isempty(nameDiag);
28     if iscell(nameDiag); listDiags=nameDiag;
29     else; listDiags={nameDiag};
30     end;
31     end;
32 gforget 1.7 %restrict list of times
33     if ~isempty(subListTimes);
34     listSteps=listSteps(subListTimes);
35     listTimes=listTimes(subListTimes);
36     listFiles=listFiles(subListTimes);
37 gforget 1.8 alldiag=load([dirMat listFiles(1).name]);
38     end;
39     %extend time dimension
40     listNdim=ones(1,length(listDiags));
41     listTT={};
42     listDD='';
43     for ii=1:length(listDiags);
44     %list diags in text string
45     listDD=[listDD listDiags{ii} ''','''];
46     %get data:
47     eval(['tmp1=alldiag.' listDiags{ii} ';']);
48     %determine the time dimension:
49     if strcmp(class(tmp1),'gcmfaces'); nDim=size(tmp1{1}); else; nDim=size(tmp1); end;
50     if ~isempty(find(nDim==0)); nDim=0;
51     elseif nDim(end)==1; nDim=length(nDim)-1;
52     else; nDim=length(nDim);
53     end;
54     %store nDim for use below
55     listNdim(ii)=nDim;
56     tt=''; for jj=1:nDim; tt=[tt ':,']; end;
57     listTT{ii}=['(' tt 'tt)'];
58     %extend time dimension:
59     if nDim>0;
60     tmp2=ones(1,nDim+1); tmp2(end)=length(listSteps);
61     tmp2=repmat(tmp1,tmp2);
62     eval(['alldiag.' listDiags{ii} '=tmp2;']);
63     end;
64 gforget 1.7 end;
65 gforget 1.8 %finalize text-list of variables to load
66     listDD=['''' listDD(1:end-2)];
67 gforget 1.1 %loop and concatenate
68     for tt=2:length(listSteps);
69 gforget 1.8 eval(['tmpdiag=load([dirMat listFiles(tt).name],' listDD ');']);
70 gforget 1.1 for ii=1:length(listDiags);
71 gforget 1.8 nDim=listNdim(ii);
72     if nDim>0;
73     eval(['alldiag.' listDiags{ii} listTT{ii} '=tmpdiag.' listDiags{ii} ';']);
74 gforget 1.1 end;
75     end;
76     end;
77     %clean empty diags up
78     for ii=1:length(listDiags);
79     eval(['tmp1=isempty(alldiag.' listDiags{ii} ');']);
80     if tmp1; alldiag=rmfield(alldiag,listDiags{ii}); end;
81     end;
82 gforget 1.6 %remove diags that were not selected (and therefore not concatenated)
83     tmpDiags=fieldnames(alldiag);
84     for ii=1:length(tmpDiags);
85     if ~sum(sum(strcmp(tmpDiags{ii},listDiags))); alldiag=rmfield(alldiag,tmpDiags{ii}); end;
86     end;
87 gforget 1.1 %complement alldiag
88     alldiag.listSteps=listSteps;
89     alldiag.listTimes=listTimes;
90     alldiag.listDiags=listDiags;
91 gforget 1.8 %squeeze
92     for ii=1:length(alldiag.listDiags);
93     eval(['alldiag.' listDiags{ii} '=squeeze(alldiag.' listDiags{ii} ');']);
94     end;
95 gforget 1.3

  ViewVC Help
Powered by ViewVC 1.1.22