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

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

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


Revision 1.1 - (hide 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 enderton 1.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