#include <netcdf.h>#include <nc_tests.h>Include dependency graph for tst_dims.c:

Go to the source code of this file.
Defines | |
| #define | FILE_NAME "tst_dims.nc" |
| #define | LAT_NAME "lat" |
| #define | LON_NAME "lon" |
| #define | LEVEL_NAME "level" |
| #define | TIME_NAME "time" |
| #define | DIM5_NAME "twilight_zone" |
| #define | DIM_NAME "dim" |
| #define | LAT_LEN 1 |
| #define | LON_LEN 2 |
| #define | LEVEL_LEN 3 |
| #define | TIME_LEN 4 |
| #define | DIM5_LEN 5 |
| #define | LAT_DIMID 0 |
| #define | LON_DIMID 1 |
| #define | LEVEL_DIMID 2 |
| #define | TIME_DIMID 3 |
| #define | LAT_VARID 0 |
| #define | LON_VARID 1 |
| #define | PRES_VARID 2 |
| #define | ELEV_VARID 3 |
| #define | HP_VARID 4 |
| #define | PRES_NAME "pressure" |
| #define | ELEV_NAME "Elevation" |
| #define | HP_NAME "Number_of_Harry_Potter_Books" |
| #define | BUBBA "Bubba" |
| #define | A_NAME "a" |
| #define | B_NAME "b" |
| #define | A_LEN 50 |
| #define | B_LEN 92 |
| #define | A_DIMID 1 |
| #define | B_DIMID 0 |
Functions | |
| int | main (int argc, char **argv) |
|
|
Referenced by main(). |
|
|
Referenced by main(). |
|
|
Referenced by main(). |
|
|
Referenced by main(). |
|
|
Referenced by main(). |
|
|
Referenced by main(). |
|
|
Definition at line 37 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 24 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 18 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 19 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 35 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 32 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 13 of file tst_dims.c. |
|
|
Definition at line 36 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 33 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 25 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 20 of file tst_dims.c. Referenced by main(), test_system_assign(), and test_transform_assign(). |
|
|
Definition at line 14 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 29 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 27 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 22 of file tst_dims.c. Referenced by main(), test_system_assign(), and test_transform_assign(). |
|
|
Definition at line 16 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 26 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 21 of file tst_dims.c. Referenced by main(), test_system_assign(), and test_transform_assign(). |
|
|
Definition at line 15 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 30 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 34 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 31 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 28 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 23 of file tst_dims.c. Referenced by main(). |
|
|
Definition at line 17 of file tst_dims.c. Referenced by main(). |
|
||||||||||||
|
Definition at line 40 of file tst_dims.c. References A_DIMID, A_LEN, A_NAME, B_DIMID, B_LEN, B_NAME, BUBBA, DIM5_LEN, DIM5_NAME, ELEV_NAME, ELEV_VARID, ERR, FILE_NAME, FINAL_RESULTS, HP_NAME, HP_VARID, LAT_DIMID, LAT_LEN, LAT_NAME, LAT_VARID, LEVEL_DIMID, LEVEL_LEN, LEVEL_NAME, LON_DIMID, LON_LEN, LON_NAME, LON_VARID, natts, nc_close, nc_create, nc_def_dim, nc_def_var, NC_DOUBLE, NC_EINVALCOORDS, NC_FLOAT, nc_get_var(), nc_get_var1_ushort(), nc_get_var_double, nc_get_var_float, nc_get_var_ulonglong(), nc_get_var_ushort(), nc_inq, nc_inq_dim, nc_inq_dimid, nc_inq_dimids(), nc_inq_dimlen, nc_inq_dimname, nc_inq_unlimdim, nc_inq_unlimdims(), nc_inq_var, nc_inq_varid, nc_inq_varname, NC_INT64, NC_MAX_NAME, NC_NETCDF4, NC_NOWRITE, nc_open, nc_put_var_double, nc_put_var_float, nc_put_var_ulonglong(), nc_put_var_ushort(), nc_put_vara, nc_put_vara_ulonglong(), nc_rename_dim, NC_UINT64, NC_UNLIMITED, NC_USHORT, NC_WRITE, ncid, ndims, nvars, PRES_NAME, PRES_VARID, SUMMARIZE_ERR, TIME_DIMID, TIME_LEN, and TIME_NAME. 00041 { 00042 int ncid, dimid, dimids[5]; 00043 int lat_dimid, lat_varid, lon_dimid, lon_varid, pres_varid; 00044 int level_varid, dim5_varid, hp_varid; 00045 int natts_in, ndims_in, dimids_in[5]; 00046 nc_type xtype_in; 00047 size_t len_in; 00048 char name_in[NC_MAX_NAME + 1]; 00049 float lat[LAT_LEN], lon[LON_LEN]; 00050 float lat_in[LAT_LEN], lon_in[LON_LEN]; 00051 double pres[LAT_LEN][LON_LEN], pres_in[LAT_LEN][LON_LEN]; 00052 int unlimdimid_in; 00053 size_t start[5], count[5], index[5]; 00054 int varid_in, nvars_in, nunlimdims_in; 00055 int i, j; 00056 unsigned long long uint64_data[1] = {42}; 00057 00058 /* Lats and lons suitable for some South American data. */ 00059 for (lat[0] = 40.0, i = 1; i < LAT_LEN; i++) 00060 lat[i] = lat[i - 1] + .5; 00061 for (lon[0] = 20.0, i = 1; i < LON_LEN; i++) 00062 lon[i] = lon[i - 1] + 1.5; 00063 00064 /* Some phoney 2D pressure data. */ 00065 for (i = 0; i < LAT_LEN; i++) 00066 for (j = 0; j < LON_LEN; j++) 00067 pres[i][j] = 1013.1 + j; 00068 00069 printf("\n*** Testing netcdf-4 dimensions.\n"); 00070 00071 /*nc_set_log_level(3);*/ 00072 00073 printf("*** Testing file with just one dimension..."); 00074 { 00075 /* Create a file with one dim and nothing else. */ 00076 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00077 if (nc_def_dim(ncid, LAT_NAME, LAT_LEN, &dimid)) ERR; 00078 00079 /* Check out what we've got. */ 00080 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00081 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00082 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00083 if (ndims_in != 1) ERR; 00084 if (nc_inq_dimid(ncid, LAT_NAME, &varid_in)) ERR; 00085 if (varid_in != 0) ERR; 00086 if (nc_inq_dimname(ncid, 0, name_in)) ERR; 00087 if (strcmp(name_in, LAT_NAME)) ERR; 00088 if (nc_inq_dimlen(ncid, 0, &len_in)) ERR; 00089 if (len_in != LAT_LEN) ERR; 00090 if (nc_close(ncid)) ERR; 00091 00092 /* Reopen and check it out again. */ 00093 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00094 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00095 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00096 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00097 if (ndims_in != 1) ERR; 00098 if (nc_inq_dimid(ncid, LAT_NAME, &varid_in)) ERR; 00099 if (varid_in != 0) ERR; 00100 if (nc_inq_dimname(ncid, 0, name_in)) ERR; 00101 if (strcmp(name_in, LAT_NAME)) ERR; 00102 if (nc_inq_dimlen(ncid, 0, &len_in)) ERR; 00103 if (len_in != LAT_LEN) ERR; 00104 if (nc_close(ncid)) ERR; 00105 } 00106 00107 SUMMARIZE_ERR; 00108 printf("*** Testing renaming of one dimension..."); 00109 { 00110 /* Reopen the file with one dim, and change the name of the dim. */ 00111 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00112 if (nc_rename_dim(ncid, 0, BUBBA)) ERR; 00113 00114 /* Check out what we've got. */ 00115 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00116 if (len_in != LAT_LEN || strcmp(name_in, BUBBA)) ERR; 00117 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00118 if (ndims_in != 1) ERR; 00119 if (dimids_in[0] != 0) ERR; 00120 if (nc_inq_dimid(ncid, BUBBA, &varid_in)) ERR; 00121 if (varid_in != 0) ERR; 00122 if (nc_inq_dimname(ncid, 0, name_in)) ERR; 00123 if (strcmp(name_in, BUBBA)) ERR; 00124 if (nc_inq_dimlen(ncid, 0, &len_in)) ERR; 00125 if (len_in != LAT_LEN) ERR; 00126 if (nc_close(ncid)) ERR; 00127 00128 /* Reopen and check out what we've got again. */ 00129 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00130 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00131 if (len_in != LAT_LEN || strcmp(name_in, BUBBA)) ERR; 00132 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00133 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00134 if (nc_inq_dimid(ncid, BUBBA, &varid_in)) ERR; 00135 if (varid_in != 0) ERR; 00136 if (nc_inq_dimname(ncid, 0, name_in)) ERR; 00137 if (strcmp(name_in, BUBBA)) ERR; 00138 if (nc_inq_dimlen(ncid, 0, &len_in)) ERR; 00139 if (len_in != LAT_LEN) ERR; 00140 if (nc_close(ncid)) ERR; 00141 } 00142 00143 SUMMARIZE_ERR; 00144 printf("*** Testing file with just one unlimited dimension..."); 00145 { 00146 /* Create a file with one unlimied dim and nothing else. */ 00147 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00148 if (nc_def_dim(ncid, LEVEL_NAME, NC_UNLIMITED, &dimid)) ERR; 00149 00150 /* Check it out before the enddef. */ 00151 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00152 if (len_in != NC_UNLIMITED || strcmp(name_in, LEVEL_NAME)) ERR; 00153 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00154 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00155 if (nc_inq_unlimdim(ncid, &unlimdimid_in)) ERR; 00156 if (unlimdimid_in != 0) ERR; 00157 if (nc_inq_unlimdims(ncid, &nunlimdims_in, &unlimdimid_in)) ERR; 00158 if (nunlimdims_in != 1 || unlimdimid_in != 0) ERR; 00159 00160 /* Automatically enddef and close. */ 00161 if (nc_close(ncid)) ERR; 00162 00163 /* Reopen and check it out. */ 00164 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00165 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00166 if (len_in != NC_UNLIMITED || strcmp(name_in, LEVEL_NAME)) ERR; 00167 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00168 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00169 if (nc_inq_unlimdim(ncid, &unlimdimid_in)) ERR; 00170 if (unlimdimid_in != 0) ERR; 00171 if (nc_inq_unlimdims(ncid, &nunlimdims_in, &unlimdimid_in)) ERR; 00172 if (nunlimdims_in != 1 || unlimdimid_in != 0) ERR; 00173 if (unlimdimid_in != 0) ERR; 00174 if (nc_close(ncid)) ERR; 00175 } 00176 00177 SUMMARIZE_ERR; 00178 printf("*** Testing ordering of dimensions..."); 00179 { 00180 #define A_NAME "a" 00181 #define B_NAME "b" 00182 #define A_LEN 50 00183 #define B_LEN 92 00184 #define A_DIMID 1 00185 #define B_DIMID 0 00186 00187 int dimid_a, dimid_b; 00188 00189 /* Create a file with two dims and nothing else. */ 00190 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00191 if (nc_def_dim(ncid, B_NAME, B_LEN, &dimid_b)) ERR; 00192 if (nc_def_dim(ncid, A_NAME, A_LEN, &dimid_a)) ERR; 00193 if (dimid_b != B_DIMID || dimid_a != A_DIMID) ERR; 00194 00195 /* Check out what we've got. */ 00196 if (nc_inq_dim(ncid, dimid_a, name_in, &len_in)) ERR; 00197 if (len_in != A_LEN || strcmp(name_in, A_NAME)) ERR; 00198 if (nc_inq_dim(ncid, dimid_b, name_in, &len_in)) ERR; 00199 if (len_in != B_LEN || strcmp(name_in, B_NAME)) ERR; 00200 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00201 if (ndims_in != 2 || dimids_in[0] != 0 || dimids_in[1] != 1) ERR; 00202 00203 if (nc_close(ncid)) ERR; 00204 00205 /* Reopen and check it out again. */ 00206 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00207 00208 if (nc_inq_dim(ncid, B_DIMID, name_in, &len_in)) ERR; 00209 if (len_in != B_LEN || strcmp(name_in, B_NAME)) ERR; 00210 if (nc_inq_dim(ncid, A_DIMID, name_in, &len_in)) ERR; 00211 if (len_in != A_LEN || strcmp(name_in, A_NAME)) ERR; 00212 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00213 if (ndims_in != 2 || dimids_in[0] != 0 || 00214 dimids_in[1] != 1) ERR; 00215 if (nc_close(ncid)) ERR; 00216 } 00217 00218 SUMMARIZE_ERR; 00219 printf("*** Testing file with just one unlimited dimension and one var..."); 00220 { 00221 /* Create a file with one unlimied dim and nothing else. */ 00222 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00223 if (nc_def_dim(ncid, LEVEL_NAME, NC_UNLIMITED, &dimid)) ERR; 00224 if (dimid != 0) ERR; 00225 dimids[0] = dimid; 00226 if (nc_def_var(ncid, LEVEL_NAME, NC_UINT64, 1, dimids, 00227 &level_varid)) ERR; 00228 if (level_varid != 0) ERR; 00229 00230 /* Check it out before enddef. */ 00231 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00232 if (len_in != 0 || strcmp(name_in, LEVEL_NAME)) ERR; 00233 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00234 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00235 if (nc_inq_unlimdim(ncid, &unlimdimid_in)) ERR; 00236 if (unlimdimid_in != 0) ERR; 00237 if (nc_inq_unlimdims(ncid, &nunlimdims_in, &unlimdimid_in)) ERR; 00238 if (nunlimdims_in != 1 || unlimdimid_in != 0) ERR; 00239 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00240 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00241 if (nc_inq_varid(ncid, LEVEL_NAME, &varid_in)) ERR; 00242 if (varid_in != 0) ERR; 00243 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00244 if (strcmp(name_in, LEVEL_NAME) || xtype_in != NC_UINT64 || ndims_in != 1 || 00245 dimids_in[0] != 0 || natts_in != 0) ERR; 00246 if (nc_inq_varname(ncid, 0, name_in)) ERR; 00247 if (strcmp(name_in, LEVEL_NAME)) ERR; 00248 00249 /* Now write one record of data to the var. */ 00250 start[0] = 0; 00251 count[0] = 1; 00252 if (nc_put_vara_ulonglong(ncid, 0, start, count, uint64_data)) ERR; 00253 00254 /* Check dimension informaiton again. Now the length of this 00255 * dimension should be one. */ 00256 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00257 if (len_in != 1 || strcmp(name_in, LEVEL_NAME)) ERR; 00258 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00259 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00260 if (nc_inq_dimlen(ncid, 0, &len_in)) ERR; 00261 if (len_in != 1) ERR; 00262 if (nc_inq_unlimdim(ncid, &unlimdimid_in)) ERR; 00263 if (unlimdimid_in != 0) ERR; 00264 if (nc_inq_unlimdims(ncid, &nunlimdims_in, &unlimdimid_in)) ERR; 00265 if (nunlimdims_in != 1 || unlimdimid_in != 0) ERR; 00266 if (unlimdimid_in != 0) ERR; 00267 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00268 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00269 if (nc_inq_varid(ncid, LEVEL_NAME, &varid_in)) ERR; 00270 if (varid_in != 0) ERR; 00271 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00272 if (strcmp(name_in, LEVEL_NAME) || xtype_in != NC_UINT64 || ndims_in != 1 || 00273 dimids_in[0] != 0 || natts_in != 0) ERR; 00274 if (nc_inq_varname(ncid, 0, name_in)) ERR; 00275 if (strcmp(name_in, LEVEL_NAME)) ERR; 00276 00277 /* Close the file. */ 00278 if (nc_close(ncid)) ERR; 00279 00280 /* Check it out. */ 00281 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00282 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00283 if (len_in != 1 || strcmp(name_in, LEVEL_NAME)) ERR; 00284 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00285 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00286 if (nc_inq_unlimdim(ncid, &unlimdimid_in)) ERR; 00287 if (unlimdimid_in != 0) ERR; 00288 if (nc_inq_unlimdims(ncid, &nunlimdims_in, &unlimdimid_in)) ERR; 00289 if (nunlimdims_in != 1 || unlimdimid_in != 0) ERR; 00290 if (unlimdimid_in != 0) ERR; 00291 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00292 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00293 if (nc_inq_varid(ncid, LEVEL_NAME, &varid_in)) ERR; 00294 if (varid_in != 0) ERR; 00295 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00296 if (strcmp(name_in, LEVEL_NAME) || xtype_in != NC_UINT64 || ndims_in != 1 || 00297 dimids_in[0] != 0 || natts_in != 0) ERR; 00298 if (nc_inq_varname(ncid, 0, name_in)) ERR; 00299 if (strcmp(name_in, LEVEL_NAME)) ERR; 00300 if (nc_close(ncid)) ERR; 00301 } 00302 00303 SUMMARIZE_ERR; 00304 printf("*** Testing adding a coordinate var to file with dimension..."); 00305 { 00306 /* Create a file with one dim and nothing else. */ 00307 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00308 if (nc_def_dim(ncid, DIM5_NAME, DIM5_LEN, &dimid)) ERR; 00309 00310 /* Check out what we've got. */ 00311 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00312 if (ndims_in != 1 || nvars_in != 0 || natts_in != 0 || 00313 unlimdimid_in != -1) ERR; 00314 if (nc_inq_dim(ncid, dimid, name_in, &len_in)) ERR; 00315 if (len_in != DIM5_LEN || strcmp(name_in, DIM5_NAME)) ERR; 00316 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00317 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00318 00319 if (nc_close(ncid)) ERR; 00320 00321 /* Reopen and check it out again. */ 00322 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00323 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00324 if (ndims_in != 1 || nvars_in != 0 || natts_in != 0 || 00325 unlimdimid_in != -1) ERR; 00326 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00327 if (len_in != DIM5_LEN || strcmp(name_in, DIM5_NAME)) ERR; 00328 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00329 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00330 00331 /* Add a coordinate var for this dimension. */ 00332 dimids[0] = 0; 00333 if (nc_def_var(ncid, DIM5_NAME, NC_FLOAT, 1, dimids, &dim5_varid)) ERR; 00334 00335 /* Check it out. */ 00336 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00337 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || 00338 unlimdimid_in != -1) ERR; 00339 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00340 if (len_in != DIM5_LEN || strcmp(name_in, DIM5_NAME)) ERR; 00341 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00342 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00343 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00344 if (strcmp(name_in, DIM5_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00345 dimids_in[0] != 0 || natts_in != 0) ERR; 00346 00347 if (nc_close(ncid)) ERR; 00348 00349 /* Reopen and check it out again. */ 00350 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00351 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00352 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || 00353 unlimdimid_in != -1) ERR; 00354 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00355 if (len_in != DIM5_LEN || strcmp(name_in, DIM5_NAME)) ERR; 00356 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00357 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00358 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00359 if (strcmp(name_in, DIM5_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00360 dimids_in[0] != 0 || natts_in != 0) ERR; 00361 00362 if (nc_close(ncid)) ERR; 00363 } 00364 00365 SUMMARIZE_ERR; 00366 printf("*** Testing adding a coordinate var to file with unlimited dimension..."); 00367 { 00368 unsigned short data[2] = {42, 24}, data_in[2]; 00369 00370 /* Create a file with one dim and one var. This time make 00371 * it an unlimited dim. */ 00372 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00373 if (nc_def_dim(ncid, DIM5_NAME, NC_UNLIMITED, &dimid)) ERR; 00374 if (dimid != 0) ERR; 00375 dimids[0] = dimid; 00376 if (nc_def_var(ncid, HP_NAME, NC_USHORT, 1, dimids, &hp_varid)) ERR; 00377 if (hp_varid != 0) ERR; 00378 00379 /* Check out what we've got. */ 00380 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00381 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || 00382 unlimdimid_in != 0) ERR; 00383 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00384 if (len_in != 0 || strcmp(name_in, DIM5_NAME)) ERR; 00385 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00386 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00387 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00388 if (strcmp(name_in, HP_NAME) || xtype_in != NC_USHORT || ndims_in != 1 || 00389 dimids_in[0] != 0 || natts_in != 0) ERR; 00390 00391 /* Add a record to the HP variable. */ 00392 start[0] = 0; 00393 count[0] = 1; 00394 if (nc_put_vara(ncid, hp_varid, start, count, data)) ERR; 00395 00396 /* Check to ensure dimension grew. */ 00397 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00398 if (len_in != 1 || strcmp(name_in, DIM5_NAME)) ERR; 00399 00400 /* Reread the value just written. */ 00401 index[0] = 0; 00402 if (nc_get_var1_ushort(ncid, hp_varid, index, data_in)) ERR; 00403 if (data_in[0] != data[0]) ERR; 00404 00405 if (nc_close(ncid)) ERR; 00406 00407 /* Reopen and check it out again. */ 00408 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00409 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00410 if (ndims_in != 1 || nvars_in != 1 || natts_in != 0 || 00411 unlimdimid_in != 0) ERR; 00412 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00413 if (len_in != 1 || strcmp(name_in, DIM5_NAME)) ERR; 00414 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00415 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00416 00417 /* Add a coordinate var for this dimension. */ 00418 dimids[0] = 0; 00419 if (nc_def_var(ncid, DIM5_NAME, NC_FLOAT, 1, dimids, &dim5_varid)) ERR; 00420 00421 /* Check it out. */ 00422 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00423 if (ndims_in != 1 || nvars_in != 2 || natts_in != 0 || 00424 unlimdimid_in != 0) ERR; 00425 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00426 if (len_in != 1 || strcmp(name_in, DIM5_NAME)) ERR; 00427 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00428 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00429 if (nc_inq_var(ncid, dim5_varid, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00430 if (strcmp(name_in, DIM5_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00431 dimids_in[0] != 0 || natts_in != 0) ERR; 00432 00433 if (nc_close(ncid)) ERR; 00434 00435 /* Reopen and check it out again. */ 00436 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00437 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00438 if (ndims_in != 1 || nvars_in != 2 || natts_in != 0 || 00439 unlimdimid_in != 0) ERR; 00440 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00441 if (len_in != 1 || strcmp(name_in, DIM5_NAME)) ERR; 00442 if (nc_inq_dimids(ncid, &ndims_in, dimids_in)) ERR; 00443 if (ndims_in != 1 || dimids_in[0] != 0) ERR; 00444 if (nc_inq_var(ncid, dim5_varid, name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; 00445 if (strcmp(name_in, DIM5_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00446 dimids_in[0] != 0 || natts_in != 0) ERR; 00447 00448 if (nc_close(ncid)) ERR; 00449 } 00450 00451 SUMMARIZE_ERR; 00452 printf("*** Creating file with 1 data var, 2 dims, and 2 coord. vars..."); 00453 00454 { 00455 /* Create a file. */ 00456 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00457 00458 /* Define lat and lon dimensions, with associated variables. */ 00459 if (nc_def_dim(ncid, LAT_NAME, LAT_LEN, &lat_dimid)) ERR; 00460 dimids[0] = lat_dimid; 00461 if (nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, dimids, &lat_varid)) ERR; 00462 if (nc_def_dim(ncid, LON_NAME, LON_LEN, &lon_dimid)) ERR; 00463 dimids[0] = lon_dimid; 00464 if (nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, dimids, &lon_varid)) ERR; 00465 00466 /* Define a 2D variable called pressure, with NC_DOUBLE on a lat 00467 * lon grid. */ 00468 dimids[0] = lat_dimid; 00469 dimids[1] = lon_dimid; 00470 if (nc_def_var(ncid, PRES_NAME, NC_DOUBLE, 2, dimids, &pres_varid)) ERR; 00471 00472 /* Check our dimensions. */ 00473 if (nc_inq_dim(ncid, lat_dimid, name_in, &len_in)) ERR; 00474 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00475 if (nc_inq_dim(ncid, lon_dimid, name_in, &len_in)) ERR; 00476 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00477 if (nc_inq_var(ncid, lat_varid, name_in, &xtype_in, &ndims_in, 00478 dimids_in, &natts_in)) ERR; 00479 if (strcmp(name_in, LAT_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00480 dimids_in[0] != lat_dimid || natts_in != 0) ERR; 00481 if (nc_inq_var(ncid, lon_varid, name_in, &xtype_in, &ndims_in, 00482 dimids_in, &natts_in)) ERR; 00483 if (strcmp(name_in, LON_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00484 dimids_in[0] != lon_dimid || natts_in != 0) ERR; 00485 00486 /* Check our data variable. */ 00487 if (nc_inq_var(ncid, pres_varid, name_in, &xtype_in, &ndims_in, 00488 dimids_in, &natts_in)) ERR; 00489 if (strcmp(name_in, PRES_NAME) || xtype_in != NC_DOUBLE || ndims_in != 2 || 00490 dimids_in[0] != lat_dimid || dimids_in[1] != lon_dimid || natts_in != 0) ERR; 00491 00492 /* Write our latitude and longitude values. This writes all 00493 * metadata to disk too. */ 00494 if (nc_put_var_float(ncid, lat_varid, lat)) ERR; 00495 if (nc_put_var_float(ncid, lon_varid, lon)) ERR; 00496 00497 /* Write our 2D pressure values. */ 00498 if (nc_put_var_double(ncid, pres_varid, (double *)pres)) ERR; 00499 00500 /* Check our latitude and longitude values. */ 00501 if (nc_get_var(ncid, lat_varid, lat_in)) ERR; 00502 for (i = 0; i < LAT_LEN; i++) 00503 if (lat[i] != lat_in[i]) ERR; 00504 if (nc_get_var_float(ncid, lon_varid, lon_in)) ERR; 00505 for (i = 0; i < LON_LEN; i++) 00506 if (lon[i] != lon_in[i]) ERR; 00507 00508 /* Check our pressure values. */ 00509 if (nc_get_var_double(ncid, pres_varid, (double *)pres_in)) ERR; 00510 for (i = 0; i < LAT_LEN; i++) 00511 for (j = 0; j < LON_LEN; j++) 00512 if (pres[i][j] != pres_in[i][j]) ERR; 00513 00514 /* Close the file. */ 00515 if (nc_close(ncid)) ERR; 00516 } 00517 00518 SUMMARIZE_ERR; 00519 printf("*** Checking file with 1 data var, 2 dims, and 2 coord. vars..."); 00520 00521 { 00522 /* Reopen the file and check it out again. */ 00523 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00524 00525 /* Check our dimensions. */ 00526 if (nc_inq_dim(ncid, lat_dimid, name_in, &len_in)) ERR; 00527 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00528 if (nc_inq_dim(ncid, lon_dimid, name_in, &len_in)) ERR; 00529 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00530 if (nc_inq_var(ncid, lat_varid, name_in, &xtype_in, &ndims_in, 00531 dimids_in, &natts_in)) ERR; 00532 if (strcmp(name_in, LAT_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00533 dimids_in[0] != lat_dimid || natts_in != 0) ERR; 00534 if (nc_inq_var(ncid, lon_varid, name_in, &xtype_in, &ndims_in, 00535 dimids_in, &natts_in)) ERR; 00536 if (strcmp(name_in, LON_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00537 dimids_in[0] != lon_dimid || natts_in != 0) ERR; 00538 00539 /* Check our data variable. */ 00540 if (nc_inq_var(ncid, pres_varid, name_in, &xtype_in, &ndims_in, 00541 dimids_in, &natts_in)) ERR; 00542 if (strcmp(name_in, PRES_NAME) || xtype_in != NC_DOUBLE || ndims_in != 2 || 00543 dimids_in[0] != lat_dimid || dimids_in[1] != lon_dimid || natts_in != 0) ERR; 00544 00545 /* Check our latitude and longitude values. */ 00546 if (nc_get_var(ncid, lat_varid, lat_in)) ERR; 00547 for (i = 0; i < LAT_LEN; i++) 00548 if (lat[i] != lat_in[i]) ERR; 00549 if (nc_get_var_float(ncid, lon_varid, lon_in)) ERR; 00550 for (i = 0; i < LON_LEN; i++) 00551 if (lon[i] != lon_in[i]) ERR; 00552 00553 /* Check our pressure values. */ 00554 if (nc_get_var_double(ncid, pres_varid, (double *)pres_in)) ERR; 00555 for (i = 0; i < LAT_LEN; i++) 00556 for (j = 0; j < LON_LEN; j++) 00557 if (pres[i][j] != pres_in[i][j]) ERR; 00558 00559 if (nc_close(ncid)) ERR; 00560 } 00561 00562 SUMMARIZE_ERR; 00563 printf("*** Creating file with 3 data vars, 4 dims, and 2 coord. vars..."); 00564 00565 { 00566 int level_dimid, time_dimid, elev_varid; 00567 double pres[LAT_LEN][LON_LEN][LEVEL_LEN][TIME_LEN]; 00568 double pres_in[LAT_LEN][LON_LEN][LEVEL_LEN][TIME_LEN]; 00569 unsigned short hp[LAT_LEN][LON_LEN][TIME_LEN]; 00570 unsigned short hp_in[LAT_LEN][LON_LEN][TIME_LEN]; 00571 unsigned long long elev[LAT_LEN][LON_LEN], elev_in[LAT_LEN][LON_LEN]; 00572 size_t start[4], count[4]; 00573 int k, l; 00574 00575 /* Some phoney 4D pressure data. */ 00576 for (i = 0; i < LAT_LEN; i++) 00577 for (j = 0; j < LON_LEN; j++) 00578 for (k = 0; k < LEVEL_LEN; k++) 00579 for (l = 0; l <TIME_LEN; l++) 00580 pres[i][j][k][l] = 1013.1 + j; 00581 00582 /* Some phoney 3D hp data. */ 00583 for (i = 0; i < LAT_LEN; i++) 00584 for (j = 0; j < LON_LEN; j++) 00585 for (l = 0; l <TIME_LEN; l++) 00586 hp[i][j][l] = 100 + l; 00587 00588 /* Some phoney 2D elevaton data. */ 00589 for (i = 0; i < LAT_LEN; i++) 00590 for (j = 0; j < LON_LEN; j++) 00591 elev[i][j] = 1010101022223333ULL + i + j; 00592 00593 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00594 00595 /* Define lat, lon, level, and timestep dimensions, with 00596 * associated coordinate variables for lat and lon only. Time is 00597 * an unlimited dimension. */ 00598 if (nc_def_dim(ncid, LAT_NAME, LAT_LEN, &lat_dimid)) ERR; 00599 if (lat_dimid != LAT_DIMID) ERR; 00600 dimids[0] = lat_dimid; 00601 if (nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, dimids, &lat_varid)) ERR; 00602 if (lat_varid != LAT_VARID) ERR; 00603 if (nc_def_dim(ncid, LON_NAME, LON_LEN, &lon_dimid)) ERR; 00604 if (lon_dimid != LON_DIMID) ERR; 00605 dimids[0] = lon_dimid; 00606 if (nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, dimids, &lon_varid)) ERR; 00607 if (lon_varid != LON_VARID) ERR; 00608 if (nc_def_dim(ncid, LEVEL_NAME, LEVEL_LEN, &level_dimid)) ERR; 00609 if (level_dimid != LEVEL_DIMID) ERR; 00610 if (nc_def_dim(ncid, TIME_NAME, NC_UNLIMITED, &time_dimid)) ERR; 00611 if (time_dimid != TIME_DIMID) ERR; 00612 00613 /* Define a 4D NC_DOUBLE variable called pressure. */ 00614 dimids[0] = lat_dimid; 00615 dimids[1] = lon_dimid; 00616 dimids[2] = level_dimid; 00617 dimids[3] = time_dimid; 00618 if (nc_def_var(ncid, PRES_NAME, NC_DOUBLE, 4, dimids, &pres_varid)) ERR; 00619 if (pres_varid != PRES_VARID) ERR; 00620 00621 /* Define a 2D variable for surface elevation. Use NC_INT64 00622 * because our units for this is Angstroms from Earth's 00623 * Center. */ 00624 if (nc_def_var(ncid, ELEV_NAME, NC_INT64, 2, dimids, &elev_varid)) ERR; 00625 if (elev_varid != ELEV_VARID) ERR; 00626 00627 /* Define a 3D NC_USHORT variable to store the number of Harry 00628 * Potter books in this grid square at this time (ignore HP 00629 * books in airplanes, dirigibles, hot air balloons, space 00630 * capsules, hang-gliders, parachutes, and flying on brooms). */ 00631 dimids[2] = time_dimid; 00632 if (nc_def_var(ncid, HP_NAME, NC_USHORT, 3, dimids, &hp_varid)) ERR; 00633 if (hp_varid != HP_VARID) ERR; 00634 00635 /* Did all our stuff make it into the internal metadata model 00636 * intact? */ 00637 /* Check our dimensions. */ 00638 if (nc_inq_dim(ncid, LAT_DIMID, name_in, &len_in)) ERR; 00639 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00640 if (nc_inq_dim(ncid, LON_DIMID, name_in, &len_in)) ERR; 00641 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00642 if (nc_inq_dim(ncid, LEVEL_DIMID, name_in, &len_in)) ERR; 00643 if (len_in != LEVEL_LEN || strcmp(name_in, LEVEL_NAME)) ERR; 00644 if (nc_inq_dim(ncid, TIME_DIMID, name_in, &len_in)) ERR; 00645 if (len_in != 0 || strcmp(name_in, TIME_NAME)) ERR; 00646 00647 /* Check our coordinate variables. */ 00648 if (nc_inq_var(ncid, LAT_VARID, name_in, &xtype_in, &ndims_in, 00649 dimids_in, &natts_in)) ERR; 00650 if (strcmp(name_in, LAT_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00651 dimids_in[0] != LAT_DIMID || natts_in != 0) ERR; 00652 if (nc_inq_var(ncid, LON_VARID, name_in, &xtype_in, &ndims_in, 00653 dimids_in, &natts_in)) ERR; 00654 if (strcmp(name_in, LON_NAME) || xtype_in != NC_FLOAT || ndims_in != 1 || 00655 dimids_in[0] != LON_DIMID || natts_in != 0) ERR; 00656 00657 /* Check our data variables. */ 00658 if (nc_inq_var(ncid, PRES_VARID, name_in, &xtype_in, &ndims_in, 00659 dimids_in, &natts_in)) ERR; 00660 if (strcmp(name_in, PRES_NAME) || xtype_in != NC_DOUBLE || ndims_in != 4 || 00661 dimids_in[0] != LAT_DIMID || dimids_in[1] != LON_DIMID || 00662 dimids_in[2] != LEVEL_DIMID || dimids_in[3] != TIME_DIMID || 00663 natts_in != 0) ERR; 00664 if (nc_inq_var(ncid, ELEV_VARID, name_in, &xtype_in, &ndims_in, 00665 dimids_in, &natts_in)) ERR; 00666 if (strcmp(name_in, ELEV_NAME) || xtype_in != NC_INT64 || ndims_in != 2 || 00667 dimids_in[0] != LAT_DIMID || dimids_in[1] != LON_DIMID || 00668 natts_in != 0) ERR; 00669 if (nc_inq_var(ncid, HP_VARID, name_in, &xtype_in, &ndims_in, 00670 dimids_in, &natts_in)) ERR; 00671 if (strcmp(name_in, HP_NAME) || xtype_in != NC_USHORT || ndims_in != 3 || 00672 dimids_in[0] != LAT_DIMID || dimids_in[1] != LON_DIMID || 00673 dimids_in[2] != TIME_DIMID || natts_in != 0) ERR; 00674 00675 /* Write our latitude and longitude values. This writes all 00676 * metadata to disk too. */ 00677 if (nc_put_var_float(ncid, lat_varid, lat)) ERR; 00678 if (nc_put_var_float(ncid, lon_varid, lon)) ERR; 00679 00680 /* Write our 4D pressure, elevation, and hp data. But this 00681 * should do nothing for pressure and hp, because these are 00682 * record vars, and nc_put_var_* doesn't do anything to record 00683 * vars, because it doesn't know how big the var is supposed to 00684 * be. */ 00685 if (nc_put_var_double(ncid, pres_varid, (double *)pres)) ERR; 00686 if (nc_put_var_ulonglong(ncid, elev_varid, (unsigned long long *)elev)) ERR; 00687 if (nc_put_var_ushort(ncid, hp_varid, (unsigned short *)hp)) ERR; 00688 00689 /* Check our latitude and longitude values. */ 00690 if (nc_get_var(ncid, lat_varid, lat_in)) ERR; 00691 for (i = 0; i < LAT_LEN; i++) 00692 if (lat[i] != lat_in[i]) ERR; 00693 if (nc_get_var_float(ncid, lon_varid, lon_in)) ERR; 00694 for (i = 0; i < LON_LEN; i++) 00695 if (lon[i] != lon_in[i]) ERR; 00696 00697 /* Make sure our pressure and hp variables are still 00698 * empty. get_var calls will return no error, but fetch no 00699 * data. */ 00700 if (nc_inq_var(ncid, pres_varid, name_in, &xtype_in, &ndims_in, 00701 dimids_in, &natts_in)) ERR; 00702 if (nc_inq_dim(ncid, dimids_in[3], NULL, &len_in)) ERR; 00703 if (len_in != 0) ERR; 00704 if (nc_get_var_double(ncid, pres_varid, (double *)pres_in) != 00705 NC_EINVALCOORDS) ERR; 00706 if (nc_inq_var(ncid, hp_varid, NULL, NULL, &ndims_in, 00707 dimids_in, NULL)) ERR; 00708 if (nc_inq_dim(ncid, dimids_in[2], NULL, &len_in)) ERR; 00709 if (len_in != 0) ERR; 00710 if (nc_get_var_ushort(ncid, hp_varid, (unsigned short *)hp_in) != 00711 NC_EINVALCOORDS) ERR; 00712 00713 /* Now use nc_put_vara to really write pressure and hp 00714 * data. Write TIME_LEN (4) records of each. */ 00715 start[0] = start[1] = start[2] = start[3] = 0; 00716 count[0] = LAT_LEN; 00717 count[1] = LON_LEN; 00718 count[2] = LEVEL_LEN; 00719 count[3] = TIME_LEN; 00720 if (nc_put_vara(ncid, pres_varid, start, count, 00721 (double *)pres)) ERR; 00722 count[2] = TIME_LEN; 00723 if (nc_put_vara(ncid, hp_varid, start, count, 00724 (double *)hp)) ERR; 00725 00726 /* Check our pressure values. */ 00727 if (nc_get_var_double(ncid, pres_varid, (double *)pres_in)) ERR; 00728 for (i = 0; i < LAT_LEN; i++) 00729 for (j = 0; j < LON_LEN; j++) 00730 for (k = 0; k < LEVEL_LEN; k++) 00731 for (l = 0; l <TIME_LEN; l++) 00732 if (pres[i][j][k][l] != pres_in[i][j][k][l]) ERR; 00733 00734 /* Check our elevation values. */ 00735 if (nc_get_var_ulonglong(ncid, elev_varid, (unsigned long long *)elev_in)) ERR; 00736 for (i = 0; i < LAT_LEN; i++) 00737 for (j = 0; j < LON_LEN; j++) 00738 if (elev[i][j] != elev_in[i][j]) ERR; 00739 00740 /* Check our hp values. */ 00741 if (nc_get_var_ushort(ncid, hp_varid, (unsigned short *)hp_in)) ERR; 00742 for (i = 0; i < LAT_LEN; i++) 00743 for (j = 0; j < LON_LEN; j++) 00744 for (l = 0; l <TIME_LEN; l++) 00745 if (hp[i][j][l] != hp_in[i][j][l]) ERR; 00746 00747 /* Close the file. */ 00748 if (nc_close(ncid)) ERR; 00749 } 00750 00751 SUMMARIZE_ERR; 00752 printf("*** Checking file with 3 data var, 4 dims, and 2 coord. vars..."); 00753 00754 { 00755 int nvars, ndims, natts, unlimdimid; 00756 00757 /* Reopen the file and check it out again. At the moment, we 00758 * can't count on the varids and dimids being the same. */ 00759 if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; 00760 if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; 00761 if (ndims != 4 || nvars != 5 || natts != 0) ERR; 00762 if (nc_close(ncid)) ERR; 00763 } 00764 SUMMARIZE_ERR; 00765 00766 FINAL_RESULTS; 00767 }
|
1.4.4