/[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.4 - (hide annotations) (download)
Wed Aug 24 21:56:05 2011 UTC (13 years, 11 months ago) by gforget
Branch: MAIN
Changes since 1.3: +8 -4 lines
- alldiag_load.m : add optional parameter to only load one field.
- cost_altimeter_disp.m : remove out of date grid_load call.

1 gforget 1.4 function [alldiag,alldiag_anom]=alldiag_load(dirMat,nameMat,timeStep,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     % timeStep is the model time step
6     %optional: nameDiag is the name of the diagnostic of interest
7    
8     if nargin>3; nameDiag=varargin{1}; else; nameDiag=''; end;
9 gforget 1.1
10     %get list of files
11 gforget 1.3 listFiles=dir([dirMat '/' nameMat]);
12 gforget 1.1 %get time steps and sort listFiles
13 gforget 1.3 listSteps=[]; for tt=1:length(listFiles);
14     nn=listFiles(tt).name; ii=strfind(nn,'_'); ii=ii(end); listSteps=[listSteps;str2num(nn(ii+1:end-4))]; end;
15 gforget 1.1 [listSteps,ii]=sort(listSteps);
16     listFiles=listFiles(ii);
17     %compute actual times
18     nTimes=length(listSteps);
19     listTimes=listSteps*timeStep/86400;
20     %initialize alldiag
21 gforget 1.3 alldiag=open([dirMat listFiles(1).name]);
22 gforget 1.1 listDiags=fieldnames(alldiag);
23 gforget 1.4 %restrict list of diags to load
24     if ~isempty(nameDiag); listDiags={nameDiag}; end;
25 gforget 1.1 %loop and concatenate
26     for tt=2:length(listSteps);
27 gforget 1.3 tmpdiag=open([dirMat listFiles(tt).name]);
28 gforget 1.1 for ii=1:length(listDiags);
29     %get data:
30     eval(['tmp1=tmpdiag.' listDiags{ii} '; tmp2=alldiag.' listDiags{ii} ';']);
31     %determine the time dimension:
32     if strcmp(class(tmp1),'gcmfaces'); nDim=size(tmp1{1}); else; nDim=size(tmp1); end;
33     if ~isempty(find(nDim==0)); nDim=0;
34     elseif nDim(end)==1; nDim=length(nDim)-1;
35     else; nDim=length(nDim);
36     end;
37     %concatenate along the time dimension:
38     if nDim>0; tmp2=cat(nDim+1,tmp2,tmp1); eval(['alldiag.' listDiags{ii} '=tmp2;']); end;
39     end;
40     end;
41     %clean empty diags up
42     for ii=1:length(listDiags);
43     eval(['tmp1=isempty(alldiag.' listDiags{ii} ');']);
44     if tmp1; alldiag=rmfield(alldiag,listDiags{ii}); end;
45     end;
46     %complement alldiag
47     alldiag.listSteps=listSteps;
48     alldiag.listTimes=listTimes;
49     alldiag.listDiags=listDiags;
50 gforget 1.2 %subtract monthly climatology:
51 gforget 1.3 if length(listSteps)>36;
52     alldiag_anom=alldiag;
53     mm=mod([1:length(listSteps)],12); mm(mm==0)=12;
54     for ii=1:length(listDiags);
55     tmp1=getfield(alldiag,listDiags{ii});
56     if strcmp(class(tmp1),'gcmfaces'); nDim=size(tmp1{1}); else; nDim=size(tmp1); end;
57     nDim=length(nDim); tt=''; for jj=1:nDim-1; tt=[tt ':,']; end;
58     eval(['tmp2=tmp1(' tt '1:12);']);
59     for jj=1:12;
60     JJ=find(mm==jj); eval(['tmp2(' tt 'jj)=mean(tmp1(' tt 'JJ),nDim);']);
61     end;
62     eval(['tmp1=tmp1-tmp2(' tt 'mm);']);
63     eval(['alldiag_anom.' listDiags{ii} '=tmp1;']);
64 gforget 1.2 end;
65 gforget 1.3 else;
66     for ii=1:length(listDiags); eval(['alldiag_anom.' listDiags{ii} '=alldiag.' listDiags{ii} ';']); end;
67 gforget 1.2 end;
68    
69 gforget 1.1
70 gforget 1.3
71    

  ViewVC Help
Powered by ViewVC 1.1.22