File: test_var2.cpp

package info (click to toggle)
netcdf-cxx 4.3.1-5
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,456 kB
  • sloc: cpp: 8,506; sh: 4,548; ansic: 4,251; xml: 173; makefile: 145
file content (193 lines) | stat: -rw-r--r-- 7,118 bytes parent folder | download | duplicates (5)
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
191
192
193
// Purpose: Converts ida3 format xma data to netcdf4
// Usage:   xma2netcdf <shot number>


#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <netcdf>
#include <iomanip>
#include "test_utilities.h"
using namespace std;
using namespace netCDF;
using namespace netCDF::exceptions;

int main()
{
  try
    {
      NcFile ncFile("firstFile.cdf",NcFile::replace);

      NcGroup groupA(ncFile.addGroup("groupA"));
      NcGroup groupA0(ncFile.addGroup("groupA0"));
      NcGroup groupB(groupA.addGroup("groupB"));
      NcGroup groupC(groupA.addGroup("groupC"));

      NcDim dim1 = ncFile.addDim("dim1",10);
      NcDim dim2 = ncFile.addDim("dim2");
      NcDim dim3 = ncFile.addDim("dim3",13);
      NcDim dim4 = groupB.addDim("dim4",14);
      NcDim dim5 = groupB.addDim("dim5",15);
      NcDim dim6 = groupB.addDim("dim6",16);
      NcDim dim7 = groupB.addDim("dim7",17);


      NcVar var_1   = ncFile.addVar("var_1",   ncInt,dim1);
      NcVar var_2   = ncFile.addVar("var_2",   ncInt,dim1);
      NcVar var_3   = ncFile.addVar("var_3",   ncInt,dim1);
      NcVar var_4   = ncFile.addVar("var_4",   ncInt,dim1);
      NcVar var_5   = ncFile.addVar("var_5",   ncInt,dim1);
      NcVar var_6   = ncFile.addVar("var_6",   ncInt,dim1);
      NcVar var_7   = ncFile.addVar("var_7",   ncInt,dim1);
      NcVar var_8   = ncFile.addVar("var_8",   ncInt,dim1);
      NcVar var_9   = ncFile.addVar("var_9",   ncInt,dim1);
      NcVar varA_1  = groupA.addVar("varA_1",  ncByte,dim1);
      NcVar varA_2  = groupA.addVar("varA_2",  ncByte,dim1);
      NcVar varA0_1 = groupA0.addVar("varA0_1",ncByte,dim1);
      NcVar varA0_2 = groupA0.addVar("varA0_2",ncByte,dim1);
      NcVar varA0_3 = groupA0.addVar("varA0_3",ncByte,dim1);
      NcVar varB_1  = groupB.addVar("varB_1",  ncByte,dim1);
      NcVar varB_2  = groupB.addVar("varB_2",  ncByte,dim1);
      NcVar varB_3  = groupB.addVar("varB_3",  ncByte,dim1);
      NcVar varB_4  = groupB.addVar("varB_4",  ncByte,dim1);
      NcVar varC_1  = groupC.addVar("varC_1",  ncByte,dim1);
      NcVar varC_2  = groupC.addVar("varC_2",  ncByte,dim1);
      NcVar varC_3  = groupC.addVar("varC_3",  ncByte,dim1);
      NcVar varC_4  = groupC.addVar("varC_4",  ncByte,dim1);
      NcVar varC_5  = groupC.addVar("varC_5",  ncByte,dim1);


      vector<short>  a1(10),b1(10);
      vector<int>  a2(10),b2(10);
      vector<float>  a3(10),b3(10);
      vector<double>  a4(10),b4(10);
      vector<unsigned short>  a5(10),b5(10);
      vector<unsigned int>  a6(10),b6(10);
      vector<long long>  a7(10),b7(10);
      vector<unsigned long long>  a8(10),b8(10);
      vector<double>  a9(10),b9(10);
      initializeVector(a1);
      initializeVector(a2);
      initializeVector(a3);
      initializeVector(a4);
      initializeVector(a5);
      initializeVector(a6);
      initializeVector(a7);
      initializeVector(a8);
      initializeVector(a9);
      for(size_t  i=0; i<a1.size(); i++) {
	a1[i] *= 1;
	a2[i] *= 2;
	a3[i] *= 3;
	a4[i] *= 4;
	a5[i] *= 5;
	a6[i] *= 6;
	a7[i] *= 7;
	a8[i] *= 8;
	a9[i] *= .9;
      }

      bool fillMode;
      int bFill=13;
      var_2.setFill(true,bFill);
      var_2.setChecksum(NcVar::nc_NOCHECKSUM);
      vector<size_t> bb(1); bb[0]=5;
      var_2.setChunking(NcVar::nc_CHUNKED,bb);
      var_2.setEndianness(NcVar::nc_ENDIAN_LITTLE);
      var_2.setCompression(false,true,9);

      // put variables of different type into the same variable type: requires conversion.
      var_1.putVar(&a1[0]);
      var_2.putVar(&a2[0]);
      var_3.putVar(&a3[0]);
      var_4.putVar(&a4[0]);
      var_5.putVar(&a5[0]);
      var_6.putVar(&a6[0]);
      var_7.putVar(&a7[0]);
      var_8.putVar(&a8[0]);
      var_9.putVar(&a9[0]);

      // get variable out
      vector<size_t> index(1);index[0]=5;
      vector<size_t> index2(1);index2[0]=4;
      var_1.getVar(&b1[0]);
      //      var_2.getVar(&b2[0]);
      //      var_2.getVar(index,&b2[0]);
      var_2.getVar(index,index2,&b2[0]);
      for(size_t  i=0; i<b2.size(); i++) {
	cout << "i ="<<i<<" vector="<<b2[i]<<endl;
      }

      int bFill2;
      var_2.getFillModeParameters(fillMode,(void*)&bFill2);
      netCDF::NcVar::ChecksumMode  aa=var_2.getChecksum();
      vector<size_t> cc2(1);
      netCDF::NcVar::ChunkMode cc1;
      var_2.getChunkingParameters(cc1,cc2);
      cout<< fillMode<<endl;
      bool shuffleFilterEnabled,deflateFilterEnabled;
      int deflateLevel;
      var_2.getCompressionParameters(shuffleFilterEnabled,deflateFilterEnabled,deflateLevel);
      cout << "fill parameter ="<<bFill2<<endl;
      cout << "checksum  ="<<aa<<endl;
      cout << "chunking parameters: chunk mode="<<cc1<<"    Chunk sizes="<<cc2[0]<<endl;
      cout << "endianness ="<<var_2.getEndianness()<<endl;
      cout << "shuffleFilterEnabled = "<<shuffleFilterEnabled <<endl;
      cout << "deflateFilterEnabled = "<<deflateFilterEnabled <<endl;
      cout << "deflateLevel = "<<deflateLevel <<endl;
      cout << "parentGroup ="<<var_2.getParentGroup().getName()<<endl;
      cout << "name ="<<var_2.getName()<<endl;
      cout << "dimCount ="<<var_2.getDimCount()<<endl;
      cout << "dimName ="<<var_2.getDim(0).getName()<<endl;
      cout << "nctypeName ="<<var_2.getType().getName()<<endl;



      const string b("abc");
      //      NcVarAtt att4  = var_2.putAtt("att4",ncChar,size_t(2), b.c_str());
      //const char* c(b.c_str());
      //NcVarAtt att12 = var_2.putAtt("att12",ncString,size_t(1), &c);
      vector<short>  a1x(10);
      initializeVector(a1x);
      NcVarAtt attA7_1  = var_2.putAtt("att7_1",ncUint,size_t(10),    &a1x[0]);

      cout << "varAtt variable name ="<<attA7_1.getParentVar().getName()<<endl;



      var_3.getVar(&b3[0]);
      var_4.getVar(&b4[0]);
      var_5.getVar(&b5[0]);
      var_6.getVar(&b6[0]);
      var_7.getVar(&b7[0]);
      var_8.getVar(&b8[0]);
      var_9.getVar(&b9[0]);

      /*
	if(a1 != b1)  throw NcException("NcException","Error in test 1.1",__FILE__,__LINE__);
	if(a2 != b2)  throw NcException("NcException","Error in test 1.2",__FILE__,__LINE__);
	if(a3 != b3)  throw NcException("NcException","Error in test 1.3",__FILE__,__LINE__);
	if(a4 != b4)  throw NcException("NcException","Error in test 1.4",__FILE__,__LINE__);
	if(a5 != b5)  throw NcException("NcException","Error in test 1.5",__FILE__,__LINE__);
	if(a6 != b6)  throw NcException("NcException","Error in test 1.6",__FILE__,__LINE__);
	if(a7 != b7)  throw NcException("NcException","Error in test 1.7",__FILE__,__LINE__);
	if(a8 != b8)  throw NcException("NcException","Error in test 1.8",__FILE__,__LINE__);
	if(a9 != b9)  throw NcException("NcException","Error in test 1.9",__FILE__,__LINE__);
      */

      //   check writing out too much or too little data!!!!
      // put in documentation that for the put() and get() you must be sure that      // you get the variables correctly sized
      //   implement....
      //  putVars(variable, numbr of elements)
      //  putVar(variable)

    }
  catch (NcException& e)
    {
      cout << "unknown error"<<endl;
      e.what();
      return e.errorCode();
    }
}