source: issm/trunk-jpl/src/m/io/structtonc.m@ 14611

Last change on this file since 14611 was 14611, checked in by Mathieu Morlighem, 12 years ago

CHG: netcdf(md) now writes results too

File size: 2.0 KB
Line 
1function [var_id,counter] = structtonc(ncid,fieldname,field,depth,var_id,counter,step);
2%STRUCTTONC- fill nc file with structure fields
3%
4% WARNING: Do not use this function, this function is called
5% by netcdf(model);
6%
7
8%update counter
9counter = counter+1;
10
11%Datatype dependent switch
12if isa(field,'double') & numel(field)==1,
13 if step==1,
14 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[]);
15 else
16 netcdf.putVar(ncid,var_id(counter),field);
17 end
18elseif isa(field,'double') & size(field,2)==1,
19 if step==1,
20 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
21 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id);
22 else
23 netcdf.putVar(ncid,var_id(counter),field);
24 end
25elseif isa(field,'double') & size(field,2)>1,
26 if step==1,
27 dim1_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
28 dim2_id = netcdf.defDim(ncid,[fieldname '_size2'],size(field,2));
29 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[dim2_id dim1_id]);
30 else
31 netcdf.putVar(ncid,var_id(counter),transpose(field));
32 end
33elseif isa(field,'char') & ~isempty(field),
34 if step==1,
35 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
36 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
37 else
38 netcdf.putVar(ncid,var_id(counter),transpose(field));
39 end
40elseif isa(field,'logical') & numel(field)==1,
41 if step==1,
42 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_BYTE',[]);
43 else
44 netcdf.putVar(ncid,var_id(counter),int8(field));
45 end
46elseif isa(field,'struct'),
47 subfields = fields(field);
48 for i=1:length(subfields),
49 [var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step);
50 end
51elseif isobject(field),
52 subfields = fields(field);
53 for i=1:length(subfields),
54 [var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step);
55 end
56else
57 disp(['skipping ' fieldname '...']);
58end
Note: See TracBrowser for help on using the repository browser.