annotate main/netcdf/inst/private/test_netcdf_low_level_interface.m @ 11992:6f80e9b5a5cb octave-forge

add copyright (2)
author abarth93
date Tue, 30 Jul 2013 09:41:59 +0000
parents fef2bde1d412
children 21b530fbeee2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11992
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
1 %% Copyright (C) 2013 Alexander Barth
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
2 %%
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
3 %% This program is free software; you can redistribute it and/or modify
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
4 %% it under the terms of the GNU General Public License as published by
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
5 %% the Free Software Foundation; either version 2 of the License, or
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
6 %% (at your option) any later version.
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
7 %%
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
8 %% This program is distributed in the hope that it will be useful,
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
9 %% but WITHOUT ANY WARRANTY; without even the implied warranty of
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
10 %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
11 %% GNU General Public License for more details.
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
12 %%
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
13 %% You should have received a copy of the GNU General Public License
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
14 %% along with this program; If not, see <http://www.gnu.org/licenses/>.
6f80e9b5a5cb add copyright (2)
abarth93
parents: 11989
diff changeset
15
11988
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
16 function test_netcdf_low_level_interface
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
17
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
18 import_netcdf
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
19
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
20 fname = [tempname '-octave-netcdf.nc'];
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
21
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
22 ncid = netcdf.create(fname,'NC_CLOBBER');
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
23 assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC'));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
24
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
25 n = 10;
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
26 m = 5;
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
27
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
28 dimid_lon = netcdf.defDim(ncid,'lon',m);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
29 dimid = netcdf.defDim(ncid,'time',n);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
30
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
31 varidd = netcdf.defVar(ncid,'double_var','double',[dimid_lon,dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
32
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
33 varid = netcdf.defVar(ncid,'byte_var','byte',[dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
34
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
35 varidf = netcdf.defVar(ncid,'float_var','float',[dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
36
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
37 varidi = netcdf.defVar(ncid,'int_var','int',[dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
38
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
39 varids = netcdf.defVar(ncid,'short_var','short',[dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
40 assert(varidd == netcdf.inqVarID(ncid,'double_var'))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
41
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
42 [numdims, numvars, numglobalatts, unlimdimID] = netcdf.inq(ncid);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
43 assert(numvars == 5)
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
44
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
45 [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varidd);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
46 assert(strcmp(varname,'double_var'));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
47
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
48 [dimname,len] = netcdf.inqDim(ncid,dimid);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
49 assert(len == n);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
50 assert(strcmp(dimname,'time'));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
51
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
52
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
53 types = {'double','float','byte','short','int'};
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
54
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
55
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
56 for i=1:length(types)
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
57 vid{i} = netcdf.defVar(ncid,[types{i} '_variable'],types{i},[dimid_lon,dimid]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
58 end
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
59
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
60
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
61 netcdf.endDef(ncid)
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
62
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
63
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
64 z = randn(m,n);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
65 netcdf.putVar(ncid,varidd,z);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
66
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
67 varf = randn(n,1);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
68 netcdf.putVar(ncid,varidf,varf);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
69
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
70 vari = floor(randn(n,1));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
71 netcdf.putVar(ncid,varidi,vari);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
72
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
73 netcdf.putVar(ncid,varids,[1:n])
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
74
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
75 z2 = netcdf.getVar(ncid,varidd);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
76 assert(all(all(abs(z2 - z) < 1e-5)))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
77
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
78 z2 = netcdf.getVar(ncid,varidd,[0 0]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
79 assert(z2 == z(1,1))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
80
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
81 z2 = netcdf.getVar(ncid,varidd,[2 2],[3 5]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
82 assert(isequal(z2,z(3:5,3:7)))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
83
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
84 z2 = netcdf.getVar(ncid,varidd,[2 2],[3 4],[1 2]);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
85 assert(isequal(z2,z(3:5,3:2:9)))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
86
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
87
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
88 netcdf.putVar(ncid,varidd,[0 0],123.);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
89 z(1,1) = 123;
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
90 z2 = netcdf.getVar(ncid,varidd);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
91 assert(isequal(z,z2))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
92
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
93 netcdf.putVar(ncid,varidd,[2 2],[3 3],ones(3,3));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
94 z(3:5,3:5) = 1;
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
95 z2 = netcdf.getVar(ncid,varidd);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
96 assert(isequal(z,z2))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
97
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
98
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
99 netcdf.putVar(ncid,varidd,[0 0],[3 5],[2 2],zeros(3,5));
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
100 z(1:2:5,1:2:9) = 0;
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
101 z2 = netcdf.getVar(ncid,varidd);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
102 assert(isequal(z,z2))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
103
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
104
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
105 z2 = netcdf.getVar(ncid,varidf);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
106 assert(all(z2 - varf < 1e-5))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
107
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
108
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
109 vari2 = netcdf.getVar(ncid,varidi);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
110 assert(all(vari2 == vari))
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
111
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
112
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
113 netcdf.close(ncid);
2f62d37d5abc restructure test (3)
abarth93
parents:
diff changeset
114 delete(fname);