author | A.M. Thurnherr <athurnherr@yahoo.com> |
Fri, 04 Sep 2015 06:37:43 +0000 | |
changeset 17 | f5a63c03d9c8 |
parent 11 | d71acdec556a |
child 18 | 6e7c8d592f7f |
permissions | -rw-r--r-- |
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
1 |
%====================================================================== |
17 | 2 |
% L A D C P 2 C D F _ V 2 . M |
3 |
% doc: Fri Jul 24 09:31:43 2015 |
|
4 |
% dlm: Mon Jul 27 15:47:29 2015 |
|
5 |
% (c) 2015 A.M. Thurnherr |
|
6 |
% uE-Info: 21 0 NIL 0 0 72 2 2 8 NIL ofnI |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
7 |
%====================================================================== |
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
8 |
|
17 | 9 |
% HISTORY: |
10 |
% Jul 24, 2015: - created, losely based on code provided by D. Cardoso |
|
11 |
% Jul 27, 2015: - reverted to Martin's original dimensions as requested |
|
12 |
% by E. Firing |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
13 |
|
17 | 14 |
function [] = ladcp2cdf(fname,dr,da,p,ps,f,att); |
15 |
netcdfile = deblank(fname); |
|
16 |
if exist(netcdfile,'file'), delete(netcdfile); end |
|
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
17 |
|
17 | 18 |
add_dr_struct(netcdfile,'dr',dr,att) |
19 |
add_struct(netcdfile,'da',da) |
|
20 |
add_struct(netcdfile,'p',p) |
|
21 |
add_struct(netcdfile,'ps',ps) |
|
22 |
add_struct(netcdfile,'f',f) |
|
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
23 |
end |
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
24 |
|
17 | 25 |
%---------------------------------------------------------------------- |
26 |
||
27 |
function [] = addatts(ncf,fnm,att) |
|
28 |
as = getfield(att,fnm); |
|
29 |
an = fieldnames(as); |
|
30 |
for i=1:length(an) |
|
31 |
ncwriteatt(ncf,sprintf('dr.%s',fnm),char(an(i)),char(getfield(as,char(an(i))))); |
|
32 |
end |
|
33 |
end |
|
34 |
||
35 |
function [] = add_dr_struct(ncf,snm,dr,att) |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
36 |
|
17 | 37 |
% scalars & misc dims |
38 |
nccreate(ncf,'dr.name','Datatype','char','Dimensions',{'dr.name' length(dr.name)}); |
|
39 |
ncwrite(ncf,'dr.name',dr.name,[1]); |
|
40 |
addatts(ncf,'name',att); |
|
41 |
nccreate(ncf,'dr.date','Datatype','int32','Dimensions',{'dr.date' length(dr.date)}); |
|
42 |
ncwrite(ncf,'dr.date',dr.date,[1]); |
|
43 |
addatts(ncf,'date',att); |
|
44 |
nccreate(ncf,'dr.lat','Datatype','double'); |
|
45 |
ncwrite(ncf,'dr.lat',dr.lat); |
|
46 |
addatts(ncf,'lat',att); |
|
47 |
nccreate(ncf,'dr.lon','Datatype','double'); |
|
48 |
ncwrite(ncf,'dr.lon',dr.lon); |
|
49 |
addatts(ncf,'lon',att); |
|
50 |
nccreate(ncf,'dr.ubar','Datatype','double'); |
|
51 |
ncwrite(ncf,'dr.ubar',dr.ubar); |
|
52 |
addatts(ncf,'ubar',att); |
|
53 |
nccreate(ncf,'dr.vbar','Datatype','double'); |
|
54 |
ncwrite(ncf,'dr.vbar',dr.vbar); |
|
55 |
addatts(ncf,'vbar',att); |
|
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
56 |
|
17 | 57 |
% zbot dim |
58 |
nccreate(ncf,'dr.zbot','Datatype','double','Dimensions',{'zbot' length(dr.zbot)}); |
|
59 |
ncwrite(ncf,'dr.zbot',dr.zbot,[1]); |
|
60 |
addatts(ncf,'zbot',att); |
|
61 |
nccreate(ncf,'dr.ubot','Datatype','double','Dimensions',{'zbot'}); |
|
62 |
ncwrite(ncf,'dr.ubot',dr.ubot,[1]); |
|
63 |
addatts(ncf,'ubot',att); |
|
64 |
nccreate(ncf,'dr.vbot','Datatype','double','Dimensions',{'zbot'}); |
|
65 |
ncwrite(ncf,'dr.vbot',dr.vbot,[1]); |
|
66 |
addatts(ncf,'vbot',att); |
|
67 |
nccreate(ncf,'dr.uerrbot','Datatype','double','Dimensions',{'zbot'}); |
|
68 |
ncwrite(ncf,'dr.uerrbot',dr.uerrbot,[1]); |
|
69 |
addatts(ncf,'uerrbot',att); |
|
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
70 |
|
17 | 71 |
% z_sadcp dim |
72 |
nccreate(ncf,'dr.z_sadcp','Datatype','double','Dimensions',{'z_sadcp' length(dr.z_sadcp)}); |
|
73 |
ncwrite(ncf,'dr.z_sadcp',dr.z_sadcp,[1]); |
|
74 |
addatts(ncf,'z_sadcp',att); |
|
75 |
nccreate(ncf,'dr.u_sadcp','Datatype','double','Dimensions',{'z_sadcp'}); |
|
76 |
ncwrite(ncf,'dr.u_sadcp',dr.u_sadcp,[1]); |
|
77 |
addatts(ncf,'u_sadcp',att); |
|
78 |
nccreate(ncf,'dr.v_sadcp','Datatype','double','Dimensions',{'z_sadcp'}); |
|
79 |
ncwrite(ncf,'dr.v_sadcp',dr.v_sadcp,[1]); |
|
80 |
addatts(ncf,'v_sadcp',att); |
|
81 |
nccreate(ncf,'dr.uerr_sadcp','Datatype','double','Dimensions',{'z_sadcp'}); |
|
82 |
ncwrite(ncf,'dr.uerr_sadcp',dr.uerr_sadcp,[1]); |
|
83 |
addatts(ncf,'uerr_sadcp',att); |
|
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
84 |
|
17 | 85 |
% z dim |
86 |
nccreate(ncf,'dr.z','Datatype','double','Dimensions',{'z' length(dr.z)}); |
|
87 |
ncwrite(ncf,'dr.z',dr.z,[1]); |
|
88 |
addatts(ncf,'z',att); |
|
89 |
nccreate(ncf,'dr.u','Datatype','double','Dimensions',{'z'}); |
|
90 |
ncwrite(ncf,'dr.u',dr.u,[1]); |
|
91 |
addatts(ncf,'u',att); |
|
92 |
nccreate(ncf,'dr.v','Datatype','double','Dimensions',{'z'}); |
|
93 |
ncwrite(ncf,'dr.v',dr.v,[1]); |
|
94 |
addatts(ncf,'v',att); |
|
95 |
nccreate(ncf,'dr.nvel','Datatype','double','Dimensions',{'z'}); |
|
96 |
ncwrite(ncf,'dr.nvel',dr.nvel,[1]); |
|
97 |
addatts(ncf,'nvel',att); |
|
98 |
nccreate(ncf,'dr.uerr','Datatype','double','Dimensions',{'z'}); |
|
99 |
ncwrite(ncf,'dr.uerr',dr.uerr,[1]); |
|
100 |
addatts(ncf,'uerr',att); |
|
101 |
nccreate(ncf,'dr.range','Datatype','double','Dimensions',{'z'}); |
|
102 |
ncwrite(ncf,'dr.range',dr.range,[1]); |
|
103 |
addatts(ncf,'range',att); |
|
104 |
nccreate(ncf,'dr.range_do','Datatype','double','Dimensions',{'z'}); |
|
105 |
ncwrite(ncf,'dr.range_do',dr.range_do,[1]); |
|
106 |
addatts(ncf,'range_do',att); |
|
107 |
nccreate(ncf,'dr.range_up','Datatype','double','Dimensions',{'z'}); |
|
108 |
ncwrite(ncf,'dr.range_up',dr.range_up,[1]); |
|
109 |
addatts(ncf,'range_up',att); |
|
110 |
nccreate(ncf,'dr.ts','Datatype','double','Dimensions',{'z'}); |
|
111 |
ncwrite(ncf,'dr.ts',dr.ts,[1]); |
|
112 |
addatts(ncf,'ts',att); |
|
113 |
nccreate(ncf,'dr.ts_out','Datatype','double','Dimensions',{'z'}); |
|
114 |
ncwrite(ncf,'dr.ts_out',dr.ts_out,[1]); |
|
115 |
addatts(ncf,'ts_out',att); |
|
116 |
nccreate(ncf,'dr.p','Datatype','double','Dimensions',{'z'}); |
|
117 |
ncwrite(ncf,'dr.p',dr.p,[1]); |
|
118 |
addatts(ncf,'p',att); |
|
119 |
nccreate(ncf,'dr.ctd_t','Datatype','double','Dimensions',{'z'}); |
|
120 |
ncwrite(ncf,'dr.ctd_t',dr.ctd_t,[1]); |
|
121 |
addatts(ncf,'ctd_t',att); |
|
122 |
nccreate(ncf,'dr.ctd_s','Datatype','double','Dimensions',{'z'}); |
|
123 |
ncwrite(ncf,'dr.ctd_s',dr.ctd_s,[1]); |
|
124 |
addatts(ncf,'ctd_s',att); |
|
125 |
nccreate(ncf,'dr.u_do','Datatype','double','Dimensions',{'z'}); |
|
126 |
ncwrite(ncf,'dr.u_do',dr.u_do,[1]); |
|
127 |
addatts(ncf,'u_do',att); |
|
128 |
nccreate(ncf,'dr.v_do','Datatype','double','Dimensions',{'z'}); |
|
129 |
ncwrite(ncf,'dr.v_do',dr.v_do,[1]); |
|
130 |
addatts(ncf,'v_do',att); |
|
131 |
nccreate(ncf,'dr.u_up','Datatype','double','Dimensions',{'z'}); |
|
132 |
ncwrite(ncf,'dr.u_up',dr.u_up,[1]); |
|
133 |
addatts(ncf,'u_up',att); |
|
134 |
nccreate(ncf,'dr.v_up','Datatype','double','Dimensions',{'z'}); |
|
135 |
ncwrite(ncf,'dr.v_up',dr.v_up,[1]); |
|
136 |
addatts(ncf,'v_up',att); |
|
137 |
nccreate(ncf,'dr.ensemble_vel_err','Datatype','double','Dimensions',{'z'}); |
|
138 |
ncwrite(ncf,'dr.ensemble_vel_err',dr.ensemble_vel_err,[1]); |
|
139 |
addatts(ncf,'ensemble_vel_err',att); |
|
140 |
nccreate(ncf,'dr.u_shear_method','Datatype','double','Dimensions',{'z'}); |
|
141 |
ncwrite(ncf,'dr.u_shear_method',dr.u_shear_method,[1]); |
|
142 |
addatts(ncf,'u_shear_method',att); |
|
143 |
nccreate(ncf,'dr.v_shear_method','Datatype','double','Dimensions',{'z'}); |
|
144 |
ncwrite(ncf,'dr.v_shear_method',dr.v_shear_method,[1]); |
|
145 |
addatts(ncf,'v_shear_method',att); |
|
146 |
nccreate(ncf,'dr.w_shear_method','Datatype','double','Dimensions',{'z'}); |
|
147 |
ncwrite(ncf,'dr.w_shear_method',dr.w_shear_method,[1]); |
|
148 |
if existf(dr,'ctd_ss') |
|
149 |
nccreate(ncf,'dr.ctd_ss','Datatype','double','Dimensions',{'z'}); |
|
150 |
ncwrite(ncf,'dr.ctd_ss',dr.ctd_ss,[1]); |
|
151 |
addatts(ncf,'ctd_ss',att); |
|
152 |
end |
|
153 |
if existf(dr,'ctd_N2') |
|
154 |
nccreate(ncf,'dr.ctd_N2','Datatype','double','Dimensions',{'z'}); |
|
155 |
ncwrite(ncf,'dr.ctd_N2',dr.ctd_N2,[1]); |
|
156 |
addatts(ncf,'ctd_N2',att); |
|
157 |
end |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
158 |
|
17 | 159 |
% tim dim |
160 |
nccreate(ncf,'dr.tim','Datatype','double','Dimensions',{'tim' length(dr.tim)}); |
|
161 |
ncwrite(ncf,'dr.tim',dr.tim,[1]); |
|
162 |
addatts(ncf,'tim',att); |
|
163 |
nccreate(ncf,'dr.tim_hour','Datatype','double','Dimensions',{'tim'}); |
|
164 |
ncwrite(ncf,'dr.tim_hour',dr.tim_hour,[1]); |
|
165 |
addatts(ncf,'tim_hour',att); |
|
166 |
nccreate(ncf,'dr.shiplon','Datatype','double','Dimensions',{'tim'}); |
|
167 |
ncwrite(ncf,'dr.shiplon',dr.shiplon,[1]); |
|
168 |
addatts(ncf,'shiplon',att); |
|
169 |
nccreate(ncf,'dr.shiplat','Datatype','double','Dimensions',{'tim'}); |
|
170 |
ncwrite(ncf,'dr.shiplat',dr.shiplat,[1]); |
|
171 |
addatts(ncf,'shiplat',att); |
|
172 |
nccreate(ncf,'dr.xship','Datatype','double','Dimensions',{'tim'}); |
|
173 |
ncwrite(ncf,'dr.xship',dr.xship,[1]); |
|
174 |
addatts(ncf,'xship',att); |
|
175 |
nccreate(ncf,'dr.yship','Datatype','double','Dimensions',{'tim'}); |
|
176 |
ncwrite(ncf,'dr.yship',dr.yship,[1]); |
|
177 |
addatts(ncf,'yship',att); |
|
178 |
nccreate(ncf,'dr.uship','Datatype','double','Dimensions',{'tim'}); |
|
179 |
ncwrite(ncf,'dr.uship',dr.uship,[1]); |
|
180 |
addatts(ncf,'uship',att); |
|
181 |
nccreate(ncf,'dr.vship','Datatype','double','Dimensions',{'tim'}); |
|
182 |
ncwrite(ncf,'dr.vship',dr.vship,[1]); |
|
183 |
addatts(ncf,'vship',att); |
|
184 |
nccreate(ncf,'dr.zctd','Datatype','double','Dimensions',{'tim'}); |
|
185 |
ncwrite(ncf,'dr.zctd',dr.zctd,[1]); |
|
186 |
addatts(ncf,'zctd',att); |
|
187 |
nccreate(ncf,'dr.wctd','Datatype','double','Dimensions',{'tim'}); |
|
188 |
ncwrite(ncf,'dr.wctd',dr.wctd,[1]); |
|
189 |
addatts(ncf,'wctd',att); |
|
190 |
nccreate(ncf,'dr.uctd','Datatype','double','Dimensions',{'tim'}); |
|
191 |
ncwrite(ncf,'dr.uctd',dr.uctd,[1]); |
|
192 |
addatts(ncf,'uctd',att); |
|
193 |
nccreate(ncf,'dr.vctd','Datatype','double','Dimensions',{'tim'}); |
|
194 |
ncwrite(ncf,'dr.vctd',dr.vctd,[1]); |
|
195 |
addatts(ncf,'vctd',att); |
|
196 |
nccreate(ncf,'dr.xctd','Datatype','double','Dimensions',{'tim'}); |
|
197 |
ncwrite(ncf,'dr.xctd',dr.xctd,[1]); |
|
198 |
addatts(ncf,'xctd',att); |
|
199 |
nccreate(ncf,'dr.yctd','Datatype','double','Dimensions',{'tim'}); |
|
200 |
ncwrite(ncf,'dr.yctd',dr.yctd,[1]); |
|
201 |
addatts(ncf,'yctd',att); |
|
202 |
nccreate(ncf,'dr.uctderr','Datatype','double','Dimensions',{'tim'}); |
|
203 |
ncwrite(ncf,'dr.uctderr',dr.uctderr,[1]); |
|
204 |
addatts(ncf,'uctderr',att); |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
205 |
end % function |
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
206 |
|
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
207 |
%---------------------------------------------------------------------- |
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
208 |
|
17 | 209 |
function [] = add_struct(ncf,snm,struct) |
210 |
||
211 |
fname = fieldnames(struct); |
|
212 |
for i=1:length(fname) |
|
213 |
fns = char(fname(i)); |
|
214 |
vnm = sprintf('%s.%s',snm,fns); |
|
215 |
||
216 |
f = getfield(struct,fns); |
|
217 |
if isstruct(f) |
|
218 |
error(sprintf('ladcp2cdf:add_struct(%s) substructures are not allowed',vnm)); |
|
219 |
end |
|
220 |
||
221 |
if ischar(f), type = 'char'; % define data type |
|
222 |
elseif isnumeric(f), type = 'double'; |
|
223 |
elseif islogical(f), type = 'int8'; if f, f=1; else, f=0; end; % logical -> int |
|
224 |
else, error(sprintf('ladcp2cdf:create_var(%s) unsupported type',vnm)); |
|
225 |
end |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
226 |
|
17 | 227 |
[nr nc] = size(f); % define variable |
228 |
if (nr*nc < 2) % scalar |
|
229 |
nccreate(ncf,vnm,'Datatype',type); |
|
230 |
elseif (nr==1 || nc==1) % vector |
|
231 |
nccreate(ncf,vnm,'Datatype',type,'Dimensions',{vnm nr*nc}); |
|
232 |
else % matrix |
|
233 |
nccreate(ncf,vnm,'Datatype',type,'Dimensions',{sprintf('%s_c',vnm) nc sprintf('%s_r',vnm) nr}); |
|
234 |
end |
|
235 |
||
236 |
if (nr*nc == 1) % write data: scalar |
|
237 |
%disp(sprintf('Writing one %s value to %s...',type,vnm)); |
|
238 |
ncwrite(ncf,vnm,f); |
|
239 |
elseif (nr==1 || nc==1) % vector |
|
240 |
%disp(sprintf('Writing %d %s values to %s...',nr*nc,type,vnm)); |
|
241 |
ncwrite(ncf,vnm,f,[1]); |
|
242 |
elseif (nr*nc > 1) % matrix |
|
243 |
%disp(sprintf('Writing %dx%d %s values to %s...',nr,nc,type,vnm)); |
|
244 |
ncwrite(ncf,vnm,f',[1 1]); |
|
245 |
end % if |
|
246 |
end % for |
|
11
d71acdec556a
10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
247 |
end % function |
0
0a450563f904
VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff
changeset
|
248 |
|
17 | 249 |
|
250 |