1 |
function aviso_addinMITprof(ncfile) |
2 |
% function aviso_addinMITprof(ncfile) |
3 |
% add MADT (Maps of Absolute Dynamic Topography) interpolated on profile |
4 |
% positions available in a MITprof netcdf file. |
5 |
% Use OpenDap, through the loaddap function. |
6 |
% |
7 |
% fileIn: path (absolute or relative) to MITprof netcdf file |
8 |
% model is a string used to select the model to be loaded |
9 |
% 'OCCA' : ECCOv4 grid + OCCA atlas |
10 |
% 'SOSE59' : SOSE59 grid + atlas |
11 |
|
12 |
gcmfaces_global; |
13 |
|
14 |
% process file name |
15 |
[pathstr, name, ext] = fileparts(ncfile); |
16 |
if isempty(pathstr) | strcmp(pathstr,'.'), pathstr=pwd; end |
17 |
if isempty(ext) | ~strcmp(ext,'.nc'), ext='.nc'; end |
18 |
ncfile=[pathstr '/' name ext]; |
19 |
|
20 |
if isempty(which('loaddap')), |
21 |
error('loaddap toolbox must be installed'); |
22 |
end |
23 |
|
24 |
% load profiles |
25 |
nc=ncopen(ncfile,'write'); |
26 |
vars=ncvars(nc); |
27 |
ncclose(nc); |
28 |
if ismember('prof_madt_aviso',vars) |
29 |
M=MITprof_load(ncfile,{'prof_date','prof_lat','prof_lon','prof_madt_aviso'}); |
30 |
madt=M.prof_madt_aviso; |
31 |
else |
32 |
fillval=double(-9999); |
33 |
nc=ncopen(ncfile,'write'); |
34 |
ncaddVar(nc,'prof_madt_aviso','double',{'iPROF'}); |
35 |
ncaddAtt(nc,'prof_madt_aviso','long_name',['MADT AVISO']); |
36 |
ncaddAtt(nc,'prof_madt_aviso','units','m'); |
37 |
ncaddAtt(nc,'prof_madt_aviso','missing_value',fillval); |
38 |
ncaddAtt(nc,'prof_madt_aviso','_FillValue',fillval); |
39 |
ncclose(nc); |
40 |
M=MITprof_load(ncfile,{'prof_date','prof_lat','prof_lon'}); |
41 |
madt=M.prof_lat*NaN; |
42 |
end |
43 |
|
44 |
% load and write data |
45 |
I=find(isnan(madt)); |
46 |
loc=[]; |
47 |
|
48 |
buffer=1000; |
49 |
for kk=1:ceil(length(I)/buffer), |
50 |
|
51 |
if myenv.verbose; |
52 |
disp([num2str(kk) ' out of ' num2str(length(I)/buffer)]); |
53 |
end |
54 |
|
55 |
% extract data |
56 |
J=I((kk-1)*buffer+1:min([length(I),kk*buffer])); |
57 |
loc.lat=M.prof_lat(J); |
58 |
loc.lon=M.prof_lon(J); |
59 |
loc.time=M.prof_date(J); |
60 |
grid_aviso=aviso_get_grid; |
61 |
madt_temp=aviso_get_madt(loc,grid_aviso); |
62 |
|
63 |
% write fields |
64 |
madt(J)=madt_temp; |
65 |
M.prof_madt_aviso=madt; |
66 |
MITprof_write(ncfile,M,{'prof_madt_aviso'}); |
67 |
|
68 |
end |
69 |
|