File: ref_ctest_special_atts_4.c

package info (click to toggle)
netcdf-parallel 1%3A4.7.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 105,352 kB
  • sloc: ansic: 229,114; sh: 11,180; yacc: 2,561; makefile: 1,390; lex: 1,173; xml: 173; awk: 2
file content (190 lines) | stat: -rw-r--r-- 7,916 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#include <stdio.h>
#include <stdlib.h>
#include <netcdf.h>


typedef struct obs_t {
    signed char obs_t_PERIOD_day;
    short obs_t_PERIOD_elev;
    int obs_t_PERIOD_count;
    float obs_t_PERIOD_relhum;
    double obs_t_PERIOD_time;
    unsigned char obs_t_PERIOD_category;
    unsigned short obs_t_PERIOD_id;
    unsigned int obs_t_PERIOD_particularity;
    signed long long obs_t_PERIOD_attention_span;
} obs_t;

static size_t var2_chunksizes[2] = {6, 7} ;
static size_t var3_chunksizes[3] = {6, 7, 8} ;
static size_t var4_chunksizes[3] = {6, 7, 8} ;
static size_t var5_chunksizes[1] = {6} ;

void
check_err(const int stat, const int line, const char *file) {
    if (stat != NC_NOERR) {
        (void)fprintf(stderr,"line %d of %s: %s\n", line, file, nc_strerror(stat));
        fflush(stderr);
        exit(1);
    }
}

int
main() {/* create ref_tst_special_atts.nc */

    int  stat;  /* return status */
    int  ncid;  /* netCDF id */

    /* group ids */
    int tst_special_atts_grp;

    /* type ids */
    int obs_t_typ;

    /* dimension ids */
    int dim1_dim;
    int dim2_dim;
    int dim3_dim;

    /* dimension lengths */
    size_t dim1_len = 10;
    size_t dim2_len = 20;
    size_t dim3_len = 30;

    /* variable ids */
    int var1_id;
    int var2_id;
    int var3_id;
    int var4_id;
    int var5_id;
    int var6_id;
    int var7_id;

    /* rank (number of dimensions) for each variable */
#   define RANK_var1 1
#   define RANK_var2 2
#   define RANK_var3 3
#   define RANK_var4 3
#   define RANK_var5 1
#   define RANK_var6 1
#   define RANK_var7 0

    /* variable shapes */
    int var1_dims[RANK_var1];
    int var2_dims[RANK_var2];
    int var3_dims[RANK_var3];
    int var4_dims[RANK_var4];
    int var5_dims[RANK_var5];
    int var6_dims[RANK_var6];

    /* enter define mode */
    stat = nc_create("ref_tst_special_atts.nc", NC_CLOBBER|NC_NETCDF4, &ncid);
    check_err(stat,__LINE__,__FILE__);
    tst_special_atts_grp = ncid;

    stat = nc_def_compound(tst_special_atts_grp, sizeof(obs_t), "obs_t", &obs_t_typ);    check_err(stat,__LINE__,__FILE__);
    {
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "day", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_day), NC_BYTE);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "elev", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_elev), NC_SHORT);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "count", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_count), NC_INT);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "relhum", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_relhum), NC_FLOAT);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "time", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_time), NC_DOUBLE);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "category", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_category), NC_UBYTE);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "id", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_id), NC_USHORT);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "particularity", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_particularity), NC_UINT);    check_err(stat,__LINE__,__FILE__);
    stat = nc_insert_compound(tst_special_atts_grp, obs_t_typ, "attention_span", NC_COMPOUND_OFFSET(obs_t,obs_t_PERIOD_attention_span), NC_INT64);    check_err(stat,__LINE__,__FILE__);
    }


    /* define dimensions */
    stat = nc_def_dim(tst_special_atts_grp, "dim1", dim1_len, &dim1_dim);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_dim(tst_special_atts_grp, "dim2", dim2_len, &dim2_dim);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_dim(tst_special_atts_grp, "dim3", dim3_len, &dim3_dim);
    check_err(stat,__LINE__,__FILE__);

    /* define variables */

    var1_dims[0] = dim1_dim;
    stat = nc_def_var(tst_special_atts_grp, "var1", NC_INT, RANK_var1, var1_dims, &var1_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var1_id, NC_CONTIGUOUS, NULL);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var1_id, NC_ENDIAN_LITTLE);
    check_err(stat,__LINE__,__FILE__);

    var2_dims[0] = dim1_dim;
    var2_dims[1] = dim2_dim;
    stat = nc_def_var(tst_special_atts_grp, "var2", NC_INT, RANK_var2, var2_dims, &var2_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var2_id, NC_CHUNKED, var2_chunksizes);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_fletcher32(tst_special_atts_grp, var2_id, 1);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var2_id, NC_ENDIAN_BIG);
    check_err(stat,__LINE__,__FILE__);

    var3_dims[0] = dim1_dim;
    var3_dims[1] = dim2_dim;
    var3_dims[2] = dim3_dim;
    stat = nc_def_var(tst_special_atts_grp, "var3", NC_INT, RANK_var3, var3_dims, &var3_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var3_id, NC_CHUNKED, var3_chunksizes);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_deflate(tst_special_atts_grp, var3_id, NC_NOSHUFFLE, 1, 2);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var3_id, NC_ENDIAN_LITTLE);
    check_err(stat,__LINE__,__FILE__);

    var4_dims[0] = dim1_dim;
    var4_dims[1] = dim2_dim;
    var4_dims[2] = dim3_dim;
    stat = nc_def_var(tst_special_atts_grp, "var4", NC_INT, RANK_var4, var4_dims, &var4_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var4_id, NC_CHUNKED, var4_chunksizes);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_deflate(tst_special_atts_grp, var4_id, NC_SHUFFLE, 1, 2);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var4_id, NC_ENDIAN_LITTLE);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_fill(tst_special_atts_grp, var4_id, NC_NOFILL, NULL);
    check_err(stat,__LINE__,__FILE__);

    var5_dims[0] = dim1_dim;
    stat = nc_def_var(tst_special_atts_grp, "var5", obs_t_typ, RANK_var5, var5_dims, &var5_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var5_id, NC_CHUNKED, var5_chunksizes);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_fletcher32(tst_special_atts_grp, var5_id, 1);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_deflate(tst_special_atts_grp, var5_id, NC_SHUFFLE, 1, 2);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_fill(tst_special_atts_grp, var5_id, NC_NOFILL, NULL);
    check_err(stat,__LINE__,__FILE__);

    var6_dims[0] = dim1_dim;
    stat = nc_def_var(tst_special_atts_grp, "var6", NC_INT, RANK_var6, var6_dims, &var6_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var6_id, NC_COMPACT, NULL);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var6_id, NC_ENDIAN_LITTLE);
    check_err(stat,__LINE__,__FILE__);

    stat = nc_def_var(tst_special_atts_grp, "var7", NC_INT, RANK_var7, 0, &var7_id);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_chunking(tst_special_atts_grp, var7_id, NC_COMPACT, NULL);
    check_err(stat,__LINE__,__FILE__);
    stat = nc_def_var_endian(tst_special_atts_grp, var7_id, NC_ENDIAN_LITTLE);
    check_err(stat,__LINE__,__FILE__);

    /* leave define mode */
    stat = nc_enddef (tst_special_atts_grp);
    check_err(stat,__LINE__,__FILE__);

    /* assign variable data */

    stat = nc_close(tst_special_atts_grp);
    check_err(stat,__LINE__,__FILE__);
    return 0;
}