1 |
function [data,time] = ... |
2 |
DiagLoadMonitor(fln,mnchandle,dad,itr,tst,SecPerYear,DiagDebug); |
3 |
|
4 |
% Read in files names. |
5 |
%files = dir([dad,'/',mnchandle]); |
6 |
filesin=ls([dad,'/',mnchandle]); |
7 |
index=1; |
8 |
while ~isempty(filesin) |
9 |
[token,filesin] = strtok(filesin); |
10 |
if ~isempty(filesin) |
11 |
files(index).name=token; index=index+1; |
12 |
end |
13 |
end |
14 |
|
15 |
|
16 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
17 |
% Read in data % |
18 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
19 |
|
20 |
% Initialize result arrays. |
21 |
if isempty(itr), |
22 |
time=[]; |
23 |
data=[]; |
24 |
else |
25 |
time=NaN.*zeros(size(itr)); |
26 |
data=NaN.*zeros(size(itr)); |
27 |
end |
28 |
|
29 |
for ifile = 1:length(files) |
30 |
|
31 |
% Open monitor file. |
32 |
if DiagDebug, disp(['Entering file: ',files(ifile).name]); end |
33 |
nc=netcdf(files(ifile).name,'read'); |
34 |
|
35 |
% Read time and data information. |
36 |
nciter=nc{'T'}; if isempty(nciter), nciter=nc{'iter'}.*tst; end |
37 |
ncdata=nc{fln}; |
38 |
if isempty(nciter), error('Monitor time axis not found!'); end |
39 |
if isempty(ncdata), error(['Monitor field not found: ',fln]); end |
40 |
|
41 |
% Load desired indecies. |
42 |
if isempty(itr) |
43 |
if isempty(time), |
44 |
time=nciter(:); |
45 |
data=ncdata(:); |
46 |
else |
47 |
index=find(~ismember(nciter(:),time)); |
48 |
if ~isempty(index) |
49 |
nciter=nciter(index); time=[time;NaN;nciter]; |
50 |
ncdata=ncdata(index); data=[data;NaN;ncdata]; |
51 |
end |
52 |
end |
53 |
else |
54 |
[test,loc]=ismember(itr,nciter(:)); |
55 |
index=find(test); |
56 |
if ~isempty(index) |
57 |
time(index)=nciter(loc(index)); |
58 |
data(index)=ncdata(loc(index)); |
59 |
end |
60 |
end |
61 |
|
62 |
close(nc); |
63 |
end |
64 |
|
65 |
% Check for missing indecies. |
66 |
% if ~isempty(find(isnan(time))) || ~isempty(find(isnan(data))) |
67 |
% error('Missing monitor data for specified indecies!'); |
68 |
% end |
69 |
|
70 |
time=time./SecPerYear; |