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

Go to the source code of this file.
Defines | |
| #define | FILE_NAME "tst_unlim_vars.nc" |
| #define | SFC_TEMP_NAME "surface_temperature" |
| #define | LAT_NAME "lat" |
| #define | LAT_LEN 2 |
| #define | LON_NAME "lon" |
| #define | LON_LEN 3 |
| #define | TIME_NAME "time" |
| #define | NUM_TIMESTEPS 4 |
| #define | NDIMS 3 |
Functions | |
| int | main (int argc, char **argv) |
|
|
Definition at line 14 of file tst_unlim_vars.c. |
|
|
Definition at line 17 of file tst_unlim_vars.c. |
|
|
Definition at line 16 of file tst_unlim_vars.c. |
|
|
Definition at line 19 of file tst_unlim_vars.c. |
|
|
Definition at line 18 of file tst_unlim_vars.c. |
|
|
Definition at line 22 of file tst_unlim_vars.c. |
|
|
Definition at line 21 of file tst_unlim_vars.c. Referenced by main(). |
|
|
Definition at line 15 of file tst_unlim_vars.c. Referenced by main(). |
|
|
Definition at line 20 of file tst_unlim_vars.c. |
|
||||||||||||
|
Definition at line 25 of file tst_unlim_vars.c. References ERR, FILE_NAME, FINAL_RESULTS, LAT_LEN, LAT_NAME, LON_LEN, LON_NAME, nc_close, nc_create, nc_def_dim, nc_def_var, NC_FLOAT, nc_get_vara_float, nc_inq, nc_inq_dim, nc_inq_var, NC_MAX_NAME, NC_NETCDF4, nc_open, nc_put_vara_float, NC_UNLIMITED, NC_WRITE, ncid, NDIMS, NUM_TIMESTEPS, SFC_TEMP_NAME, SUMMARIZE_ERR, and TIME_NAME. 00026 { 00027 int ncid, sfc_tempid; 00028 float data_out[NUM_TIMESTEPS][LAT_LEN][LON_LEN], data_in[NUM_TIMESTEPS][LAT_LEN][LON_LEN]; 00029 int lat, lon, time; 00030 int dimids[NDIMS]; 00031 nc_type xtype_in; 00032 int ndims_in, dimids_in[10], natts_in, nvars_in, unlimdimid_in; 00033 size_t len_in; 00034 char name_in[NC_MAX_NAME+1]; 00035 size_t start[NDIMS], count[NDIMS]; 00036 int d; 00037 00038 /* Set up phoney data. */ 00039 for (time = 0; time < NUM_TIMESTEPS; time++) 00040 for (lat = 0; lat < LAT_LEN; lat++) 00041 for (lon = 0; lon < LON_LEN; lon++) 00042 data_out[time][lat][lon] = 25.5 + lat + lon + time; 00043 00044 /*nc_set_log_level(5);*/ 00045 00046 printf("\n*** Testing netcdf-4 variable with unlimited dimensions.\n"); 00047 printf("*** Testing file with one var, one unlim dim..."); 00048 00049 /* Create a file with a 3D surface temp variable. */ 00050 if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; 00051 00052 /* Create three dims, one unlimited. */ 00053 if (nc_def_dim(ncid, TIME_NAME, NC_UNLIMITED, &dimids[0])) ERR; 00054 if (nc_def_dim(ncid, LAT_NAME, LAT_LEN, &dimids[1])) ERR; 00055 if (nc_def_dim(ncid, LON_NAME, LON_LEN, &dimids[2])) ERR; 00056 00057 /* Define a var. */ 00058 for (d = 0; d < NDIMS; d++) 00059 dimids[d] = d; 00060 if (nc_def_var(ncid, SFC_TEMP_NAME, NC_FLOAT, NDIMS, dimids, &sfc_tempid)) ERR; 00061 00062 /* Check some metadata. */ 00063 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00064 if (ndims_in != 3 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00065 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, 00066 &natts_in)) ERR; 00067 if (strcmp(name_in, SFC_TEMP_NAME) || xtype_in != NC_FLOAT || 00068 ndims_in != 3 || natts_in != 0) ERR; 00069 for (d = 0; d < NDIMS; d++) 00070 if (dimids_in[d] != dimids[d]) ERR; 00071 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00072 if (len_in != 0 || strcmp(name_in, TIME_NAME)) ERR; 00073 if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; 00074 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00075 if (nc_inq_dim(ncid, 2, name_in, &len_in)) ERR; 00076 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00077 00078 if (nc_close(ncid)) ERR; 00079 00080 if (nc_open(FILE_NAME, 0, &ncid)) ERR; 00081 00082 /* Check metadata. */ 00083 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00084 if (ndims_in != 3 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00085 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, 00086 &natts_in)) ERR; 00087 if (strcmp(name_in, SFC_TEMP_NAME) || xtype_in != NC_FLOAT || 00088 ndims_in != 3 || natts_in != 0) ERR; 00089 for (d = 0; d < NDIMS; d++) 00090 if (dimids_in[d] != dimids[d]) ERR; 00091 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00092 if (len_in != 0 || strcmp(name_in, TIME_NAME)) ERR; 00093 if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; 00094 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00095 if (nc_inq_dim(ncid, 2, name_in, &len_in)) ERR; 00096 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00097 00098 if (nc_close(ncid)) ERR; 00099 00100 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00101 00102 /* Check metadata. */ 00103 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00104 if (ndims_in != 3 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00105 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, 00106 &natts_in)) ERR; 00107 if (strcmp(name_in, SFC_TEMP_NAME) || xtype_in != NC_FLOAT || 00108 ndims_in != 3 || natts_in != 0) ERR; 00109 for (d = 0; d < NDIMS; d++) 00110 if (dimids_in[d] != dimids[d]) ERR; 00111 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00112 if (len_in != 0 || strcmp(name_in, TIME_NAME)) ERR; 00113 if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; 00114 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00115 if (nc_inq_dim(ncid, 2, name_in, &len_in)) ERR; 00116 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00117 00118 /* Write some data to the var.*/ 00119 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00120 for (d = 0; d < NDIMS; d++) 00121 start[d] = 0; 00122 count[0] = NUM_TIMESTEPS; 00123 count[1] = LAT_LEN; 00124 count[2] = LON_LEN; 00125 if (nc_put_vara_float(ncid, 0, start, count, (float *)data_out)) ERR; 00126 00127 /* Check metadata. */ 00128 if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; 00129 if (ndims_in != 3 || nvars_in != 1 || natts_in != 0 || unlimdimid_in != 0) ERR; 00130 if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, dimids_in, 00131 &natts_in)) ERR; 00132 if (strcmp(name_in, SFC_TEMP_NAME) || xtype_in != NC_FLOAT || 00133 ndims_in != 3 || natts_in != 0) ERR; 00134 for (d = 0; d < NDIMS; d++) 00135 if (dimids_in[d] != dimids[d]) ERR; 00136 if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; 00137 if (len_in != NUM_TIMESTEPS || strcmp(name_in, TIME_NAME)) ERR; 00138 if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; 00139 if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR; 00140 if (nc_inq_dim(ncid, 2, name_in, &len_in)) ERR; 00141 if (len_in != LON_LEN || strcmp(name_in, LON_NAME)) ERR; 00142 00143 if (nc_close(ncid)) ERR; 00144 00145 if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; 00146 00147 /* Check data. */ 00148 if (nc_get_vara_float(ncid, 0, start, count, (float *)data_in)) ERR; 00149 for (time = 0; time < NUM_TIMESTEPS; time++) 00150 for (lat = 0; lat < LAT_LEN; lat++) 00151 for (lon = 0; lon < LON_LEN; lon++) 00152 if (data_in[time][lat][lon] != data_out[time][lat][lon]) ERR; 00153 00154 if (nc_close(ncid)) ERR; 00155 SUMMARIZE_ERR; 00156 00157 FINAL_RESULTS; 00158 }
|
1.4.4