/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_IO/process2nctiles.m
ViewVC logotype

Diff of /MITgcm_contrib/gael/matlab_class/gcmfaces_IO/process2nctiles.m

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

revision 1.5 by gforget, Mon Feb 3 19:47:50 2014 UTC revision 1.9 by gforget, Sun Aug 3 19:49:58 2014 UTC
# Line 20  gcmfaces_global; Line 20  gcmfaces_global;
20  %listFiles={'trsp_3d_set1','trsp_3d_set2','trsp_3d_set3'};  %listFiles={'trsp_3d_set1','trsp_3d_set2','trsp_3d_set3'};
21  %for ff=1:length(listFiles); process2nctiles('iter12/',listFiles{ff},[],[90 90]); end;  %for ff=1:length(listFiles); process2nctiles('iter12/',listFiles{ff},[],[90 90]); end;
22    
23    %replace time series with monthly climatology?
24    doClim=0;
25    
26  %directory names  %directory names
27  listDirs={'STATE/','TRSP/'};  listDirs={'STATE/','TRSP/'};
28  filAvailDiag=[dirModel 'available_diagnostics.log'];  filAvailDiag=[dirModel 'available_diagnostics.log'];
29  filReadme=[dirModel 'README'];  filReadme=[dirModel 'README'];
30  dirOut=[dirModel 'nctiles/'];  dirOut=[dirModel 'nctiles_tmp/'];
31  if ~isdir(dirOut); mkdir(dirOut); end;  if ~isdir(dirOut); mkdir(dirOut); end;
32    
33  %seacrh in subdirectories  %search in subdirectories
34  subDir=[];  subDir=[];
35  for ff=1:length(listDirs);  for ff=1:length(listDirs);
36  tmp1=dir([dirModel 'diags/' listDirs{ff} fileModel '*']);  tmp1=dir([dirModel 'diags/' listDirs{ff} fileModel '*']);
# Line 72  if length(irec)~=1; error('field not in Line 75  if length(irec)~=1; error('field not in
75  %read time series  %read time series
76  myDiag=rdmds2gcmfaces([dirIn fileModel '*'],NaN,'rec',irec);  myDiag=rdmds2gcmfaces([dirIn fileModel '*'],NaN,'rec',irec);
77    
78    %replace time series with monthly climatology
79    if doClim; myDiag=compClim(myDiag); end;
80    
81  %set ancilliary time variable  %set ancilliary time variable
82  nn=length(size(myDiag{1}));  nn=length(size(myDiag{1}));
83  nn=size(myDiag{1},nn);  nn=size(myDiag{1},nn);
# Line 80  tim=[1992*ones(nn,1) [1:nn]' 15*ones(nn, Line 86  tim=[1992*ones(nn,1) [1:nn]' 15*ones(nn,
86  tim=datenum(tim)-datenum([1992 1 0]);  tim=datenum(tim)-datenum([1992 1 0]);
87  timUnits='days since 1992-1-1 0:0:0';  timUnits='days since 1992-1-1 0:0:0';
88    
89    %get time step axis
90    [listTimes]=diags_list_times({[dirModel 'diags/STATE/']},{'state_2d_set1'});
91    
92  %get units and long name from available_diagnostics.log  %get units and long name from available_diagnostics.log
93  [avail_diag]=read_avail_diag(filAvailDiag,nameDiag);  [avail_diag]=read_avail_diag(filAvailDiag,nameDiag);
94    
# Line 97  myFile=[myFile '/' nameDiag];%second ins Line 106  myFile=[myFile '/' nameDiag];%second ins
106    
107  %apply mask, and convert to land mask  %apply mask, and convert to land mask
108  msk=grid_diag.msk;  msk=grid_diag.msk;
109  msk=repmat(msk,[1 1 size(myDiag{1},3) size(myDiag{1},4)]);  if length(size(myDiag{1}))==3;
110  myDiag=myDiag.*msk;    msk=repmat(msk,[1 1 size(myDiag{1},3)]);
111    end;
112    for kk=1:size(myDiag{1},4);
113      myDiag(:,:,:,kk)=myDiag(:,:,:,kk).*msk;
114    end;
115  clear msk;  clear msk;
116  %  %
117  land=isnan(grid_diag.msk);  land=isnan(grid_diag.msk);
# Line 110  else; Line 123  else;
123    coord='lon lat tim';    coord='lon lat tim';
124  end;  end;
125    
126    %replace time series with monthly climatology
127    if doClim;
128      listTimes=listTimes(1:12);
129      timUnits='days since year-1-1 0:0:0';
130      avail_diag.longNameDiag=[avail_diag.longNameDiag ' (climatology) '];
131    end;
132    
133  %create netcdf file using write2nctiles (works only with old matlab, thus far ...)  %create netcdf file using write2nctiles (works only with old matlab, thus far ...)
134  doCreate=1;  doCreate=1;
135  dimlist=write2nctiles(myFile,myDiag,doCreate,{'tileNo',tileNo},...  dimlist=write2nctiles(myFile,myDiag,doCreate,{'tileNo',tileNo},...
# Line 136  doCreate=0; Line 156  doCreate=0;
156  write2nctiles(myFile,tim,doCreate,{'tileNo',tileNo},...  write2nctiles(myFile,tim,doCreate,{'tileNo',tileNo},...
157    {'fldName','tim'},{'longName','time'},...    {'fldName','tim'},{'longName','time'},...
158    {'units',timUnits},{'dimIn',dim.tim});    {'units',timUnits},{'dimIn',dim.tim});
159    write2nctiles(myFile,listTimes,doCreate,{'tileNo',tileNo},...
160      {'fldName','step'},{'longName','final time step number'},...
161      {'units','1'},{'dimIn',dim.tim});
162  write2nctiles(myFile,grid_diag.lon,doCreate,{'tileNo',tileNo},...  write2nctiles(myFile,grid_diag.lon,doCreate,{'tileNo',tileNo},...
163    {'fldName','lon'},{'units','degrees_east'},{'dimIn',dim.twoD});    {'fldName','lon'},{'units','degrees_east'},{'dimIn',dim.twoD});
164  write2nctiles(myFile,grid_diag.lat,doCreate,{'tileNo',tileNo},...  write2nctiles(myFile,grid_diag.lat,doCreate,{'tileNo',tileNo},...
# Line 157  function [meta]=read_meta(fileName); Line 180  function [meta]=read_meta(fileName);
180    
181  %read meta file  %read meta file
182  tmp1=dir([fileName '*.meta']); tmp1=tmp1(1).name;  tmp1=dir([fileName '*.meta']); tmp1=tmp1(1).name;
183  tmp2=strfind(fileName,'/');  tmp2=strfind(fileName,filesep);
184  if ~isempty(tmp2); tmp2=tmp2(end); else; tmp2=0; end;  if ~isempty(tmp2); tmp2=tmp2(end); else; tmp2=0; end;
185  tmp1=[fileName(1:tmp2) tmp1]; fid=fopen(tmp1);  tmp1=[fileName(1:tmp2) tmp1]; fid=fopen(tmp1);
186  while 1;  while 1;
# Line 268  if avail_diag.nr~=1; Line 291  if avail_diag.nr~=1;
291      grid_diag.dep=reshape(grid_diag.dep,[1 1 avail_diag.nr]);      grid_diag.dep=reshape(grid_diag.dep,[1 1 avail_diag.nr]);
292      grid_diag.dz=reshape(grid_diag.dz,[1 1 avail_diag.nr]);      grid_diag.dz=reshape(grid_diag.dz,[1 1 avail_diag.nr]);
293  end;  end;
294    
295    %%replace time series with monthly climatology
296    function [FLD]=compClim(fld);
297    
298    gcmfaces_global;
299    
300    ndim=length(size(fld{1}));
301    nyear=size(fld{1},ndim)/12;
302    
303    if ndim==3; FLD=NaN*fld(:,:,1:12); end;
304    if ndim==4; FLD=NaN*fld(:,:,:,1:12); end;
305    
306    for mm=1:12;
307    if ndim==3; FLD(:,:,mm)=mean(fld(:,:,mm:12:12*nyear),ndim); end;
308    if ndim==4; FLD(:,:,:,mm)=mean(fld(:,:,:,mm:12:12*nyear),ndim); end;
309    end;
310    

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

  ViewVC Help
Powered by ViewVC 1.1.22