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

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

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

revision 1.1 by gforget, Thu Jan 30 17:05:12 2014 UTC revision 1.4 by gforget, Mon Feb 3 14:28:52 2014 UTC
# Line 7  function [dimOut]=write2nctiles(fileOut, Line 7  function [dimOut]=write2nctiles(fileOut,
7  %         can be provided in the form {'name',value}  %         can be provided in the form {'name',value}
8  %         those that are currently active are  %         those that are currently active are
9  %               'descr' is the file description (default '').  %               'descr' is the file description (default '').
10    %               'rdm' is the extended estimate description (default '').
11  %               'fldName' is the nc variable name for fld (default : the outside name of fldIn).  %               'fldName' is the nc variable name for fld (default : the outside name of fldIn).
12  %               'longName' is the corresponding long name (default : '').  %               'longName' is the corresponding long name (default : '').
13  %               'units' is the unit of fld (default : '(unknown)').  %               'units' is the unit of fld (default : '(unknown)').
14  %               'missval' is the missing value (default : NaN).  %               'missval' is the missing value (default : NaN).
15  %               'fillval' is the fill value (default : NaN).  %               'fillval' is the fill value (default : NaN).
16    %               'tileNo' is a map of tile indices (default is face number)
17  %netcdf dimensions : array dimensions are simply set to 'i1,i2,...'  %netcdf dimensions : array dimensions are simply set to 'i1,i2,...'
18    
19  gcmfaces_global;  gcmfaces_global;
# Line 20  doCheck=0;%set to one to print stuff to Line 22  doCheck=0;%set to one to print stuff to
22    
23  %set more optional paramaters to default values  %set more optional paramaters to default values
24  descr='';  descr='';
25    rdm='';
26  fldName=inputname(2); longName='';  fldName=inputname(2); longName='';
27  units='(unknown)'; missval=NaN; fillval=NaN;  units='(unknown)'; missval=NaN; fillval=NaN; dimIn=[];
28  dimIn=[];  tileNo=mygrid.XC; for ff=1:mygrid.nFaces; tileNo{ff}(:)=ff; end;
29    
30  %set more optional paramaters to user defined values  %set more optional paramaters to user defined values
31  for ii=1:nargin-3;  for ii=1:nargin-3;
# Line 41  for ii=1:nargin-3; Line 44  for ii=1:nargin-3;
44              '         Type ''help write2nctiles'' for details.']);              '         Type ''help write2nctiles'' for details.']);
45      else;      else;
46          if strcmp(varargin{ii}{1},'descr')|...          if strcmp(varargin{ii}{1},'descr')|...
47                    strcmp(varargin{ii}{1},'rdm')|...
48                  strcmp(varargin{ii}{1},'fldName')|...                  strcmp(varargin{ii}{1},'fldName')|...
49                  strcmp(varargin{ii}{1},'longName')|...                  strcmp(varargin{ii}{1},'longName')|...
50                  strcmp(varargin{ii}{1},'units')|...                  strcmp(varargin{ii}{1},'units')|...
51                  strcmp(varargin{ii}{1},'missval')|...                  strcmp(varargin{ii}{1},'missval')|...
52                  strcmp(varargin{ii}{1},'fillval')|...                  strcmp(varargin{ii}{1},'fillval')|...
53                    strcmp(varargin{ii}{1},'tileNo')|...
54                  strcmp(varargin{ii}{1},'dimIn');                  strcmp(varargin{ii}{1},'dimIn');
55              eval([varargin{ii}{1} '=varargin{ii}{2};']);              eval([varargin{ii}{1} '=varargin{ii}{2};']);
56          else;          else;
# Line 55  for ii=1:nargin-3; Line 60  for ii=1:nargin-3;
60      end;      end;
61  end;  end;
62    
63  for ff=1:mygrid.nFaces;  %split fldIn (if isa gcmfaces) into tiles
64    tileList=unique(convert2vector(tileNo));
65    tileList=tileList(~isnan(tileList));
66    ntile=length(tileList);
67    %
68    if isa(fldIn,'gcmfaces');
69     for ff=1:ntile;
70       tmp1=[];
71       for gg=1:mygrid.nFaces;
72         [tmpi,tmpj]=find(tileNo{gg}==ff);
73         if ~isempty(tmpi);
74           tmpi=[min(tmpi(:)):max(tmpi(:))];
75           tmpj=[min(tmpj(:)):max(tmpj(:))];
76           tmp1=fldIn{gg}(tmpi,tmpj,:,:);
77         end;
78       end;
79       fldTiles{ff}=tmp1;
80     end;
81    end;
82    
83    %start processing loop
84    for ff=1:ntile;
85    
86  if isa(fldIn,'gcmfaces');  if isa(fldIn,'gcmfaces');
87    fldTile=fldIn{ff};    fldTile=fldTiles{ff};
88    %reverse order of dimensions    %reverse order of dimensions
89    nn=length(size(fldTile));    nn=length(size(fldTile));
90    fldTile=permute(fldTile,[nn:-1:1]);    fldTile=permute(fldTile,[nn:-1:1]);
91  else;  else;
92    fldTile=fldIn;    fldTile=fldIn;
93  end;  end;
94  fileTile=[fileOut sprintf('.%03d.nc',ff)];  fileTile=[fileOut sprintf('.%04d.nc',ff)];
95    
96  %select dimensions of relevance:  %select dimensions of relevance:
97  nDim=length(size(fldTile));  nDim=length(size(fldTile));
# Line 106  dimOut{ff}=dimlist; Line 132  dimOut{ff}=dimlist;
132  if doCreate;  if doCreate;
133    %create netcdf file:    %create netcdf file:
134    %-------------------    %-------------------
135    ncid=nccreate(fileTile,'NETCDF4');  % ncid=nccreate(fileTile,'NETCDF4');%to allow for big files
136      ncid=nccreate(fileTile,'clobber');
137    
138    aa=sprintf([descr '    [file created with gcmfaces_IO/write2nctiles.m]']);    if ~isempty(rdm);
139    ncputAtt(ncid,'','description',aa);      descr2=[descr ' -- ' rdm{1}];
140      else;
141        descr2=descr;
142      end;
143      ncputAtt(ncid,'','description',descr2);
144      for pp=2:length(rdm);
145      tmp1=char(pp+63);
146      netcdf.putAtt(ncid,nc_global,tmp1,rdm{pp});
147      end;
148      %append readme
149      pp=length(rdm)+1;
150      netcdf.putAtt(ncid,nc_global,tmp1,'file created using gcmfaces_IO/write2nctiles.m');
151    ncputAtt(ncid,'','date',date);    ncputAtt(ncid,'','date',date);
152    
153    ncdefDim(ncid,'itxt',30);    ncdefDim(ncid,'itxt',30);
# Line 145  if (myenv.useNativeMatlabNetcdf); netcdf Line 183  if (myenv.useNativeMatlabNetcdf); netcdf
183  ncputvar(ncid,fldName,fldTile);  ncputvar(ncid,fldName,fldTile);
184  ncclose(ncid);  ncclose(ncid);
185    
186  end;%for ff=1:mygrid.nFaces;  end;%for ff=1:ntile;
187    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22