/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagLoadMNC.m
ViewVC logotype

Contents of /MITgcm_contrib/enderton/Diagnostics/DiagLoadMNC.m

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


Revision 1.1 - (show annotations) (download)
Mon Jan 31 15:43:27 2005 UTC (20 years, 5 months ago) by enderton
Branch: MAIN
CVS Tags: HEAD
 o Initial check in.

1 function data = DiagLoadMNC(fln,dat,dad,grd,iter,filesuffix);
2
3 % Function: DiagLoad
4 % Author: Daniel Enderton
5 %
6 % Input Fields:
7 %
8 % Field Type (Brief) Description
9 % -----------------------------------------------------------------------
10 % fln string Field name
11 % dat string Data type ('Tav', 'Int',...)
12 % dad string Data directory.
13 % grd string Grid data directory.
14 % iter string Iterations for analysis.
15 % filesuffix string Field name suffix ('tave','',...)
16 %
17 % Output Fields:
18 %
19 % Field Type (Brief) Description
20 % -----------------------------------------------------------------------
21 % data cell array Loaded data.
22 % datatime array Model time of data in months.
23 %
24 % Descripton:
25 % This function loads MNC data. The field to load is defined by 'fln'.
26 % Typically, whatever 'fln' is set to is the fields that is read in,
27 % though the AIM physics parameters in a noteable exception to this. The
28 % data must be all located in the folder specified by 'dad', and this
29 % string must end with a '/', and similarly for the grid data.
30
31
32 % Load parameters (here only general diagnostics).
33 DiagGenParam;
34
35
36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37 % Read in data %
38 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
39
40 % Generally, the data is read in by using the 'rdmds' function (see MITgcm)
41 % with FNAME as [fln,filesuffix], and ITER = iter. There are some
42 % exceptions, such as the AIM physics parameters. Some of the fields then
43 % require some immediate manipulation. Examples are U (instantaneous) and
44 % uVel (time-averaged) which are immediately converted to a lat-lon grid
45 % because the 'U' and 'V' files of the cube-sphere do NOT correspond to the
46 % typical zonal and meridional winds. Some other fields, such as 'KEpri'
47 % require some simple calculations which are immediately done.
48
49 if isequal(dat,'Tav')
50 if isequal(fln,'phiHyd')
51 ncroot = 'phiHyd.';
52 filesuffix = '';
53 else
54 ncroot = 'tave.';
55 end
56 elseif isequal(dat,'Int')
57 ncroot = 'state.';
58 else
59 error(['Unrecognized DataType: ',dat]);
60 end
61
62 if ismember(fln,fields2D)
63 data = zeros([length(iter),hres,faces*hres]);
64 elseif ismember(fln,fields3D)
65 if ismember(fln,{'U','uVel'})
66 data = zeros([length(iter),vres,hres,faces*hres+1]);
67 elseif ismember(fln,{'V','vVel'})
68 data = zeros([length(iter),vres,hres+1,faces*hres]);
69 else
70 data = zeros([length(iter),vres,hres,faces*hres]);
71 end
72 else
73 error(['Unrecognized field name: ',fln]);
74 end
75
76 ncdir = dir(dad);
77 datafound = zeros(size(iter));
78 for ifile = 1:length(ncdir)
79 ncfile = ncdir(ifile).name;
80 if ~isempty(strfind(ncfile,ncroot))
81 nc=netcdf([dad,ncfile],'read');
82 it = nc{'iter'}(:);
83 face = nc.('tile_number')(:);
84 xindex = [hres*(face-1)+1:hres*face];
85 [mncindex,dataindex] = ismember(it,iter);
86 if sum(mncindex) > 0
87 dataindex = dataindex(find(dataindex));
88 mncindex = find(mncindex);
89 datafound(dataindex) = datafound(dataindex) + 1;
90 mncdata = nc{[fln,filesuffix]};
91 if ismember(fln,fields2D)
92 data(dataindex,:,xindex) = mncdata(mncindex,1:hres,1:hres);
93 elseif ismember(fln,fields3D)
94 if ismember(fln,{'U','uVel'})
95 data = zeros([length(iter),vres,hres,faces*(hres+1)]);
96 data(dataindex,:,:,xindex) = mncdata(mncindex,:,1:hres,1:hres);
97 elseif ismember(fln,{'V','vVel'})
98 data(dataindex,:,:,xindex) = mncdata(mncindex,:,:,:);
99 else
100 data(dataindex,:,:,xindex) = mncdata(mncindex,:,1:hres,1:hres);
101 end
102 end
103 end
104 close(nc);
105 end
106 end
107
108
109 if ~( isequal(datafound, faces*ones(size(iter))) | ...
110 isequal(datafound,2*faces*ones(size(iter))) ) % Embarassing fix!!!
111 disp(['Iterations desired: ',mat2str(iter)]);
112 disp(['Faces per iteration: ',mat2str(datafound)]);
113 error(['Missing Data! (See output above for details).']);
114 end
115
116 data = permute(data,[length(size(data)):-1:1]);

  ViewVC Help
Powered by ViewVC 1.1.22