22 #include "InternalErr.h"
30 BESDEBUG(
"h4",
"Coming to HDFSPArrayAddCVField read "<<endl);
44 if(dtype != DFNT_FLOAT32) {
45 throw InternalErr (__FILE__, __LINE__,
46 "The Height datatype of TRMM CSH product should be float.");
50 throw InternalErr (__FILE__, __LINE__,
51 "The number of elements should be 19.");
54 vector<float>total_val;
55 total_val.resize(tnumelm);
57 for (
int i = 1; i<tnumelm;i++)
58 total_val[i] = (
float)i;
61 if (nelms == tnumelm) {
62 set_value ((dods_float32 *) &total_val[0], nelms);
69 for (
int i = 0; i < nelms; i++)
70 val[i] = total_val[offset[0] + step[0] * i];
71 set_value ((dods_float32 *) &val[0], nelms);
78 if(dtype != DFNT_FLOAT32) {
79 throw InternalErr (__FILE__, __LINE__,
80 "The Height datatype of TRMM CSH product should be float.");
84 Obtain_trmm_v7_layer(nelms,offset,step,count);
86 Obtain_trmml3s_v7_nthrash(nelms,offset,step,count);
88 throw InternalErr (__FILE__, __LINE__,
89 "This special coordinate variable is not supported.");
97 if(dtype != DFNT_FLOAT32) {
98 throw InternalErr (__FILE__, __LINE__,
99 "The Height datatype of TRMM CSH product should be float.");
102 if(tnumelm == 28 && name ==
"nlayer")
103 Obtain_trmm_v7_layer(nelms,offset,step,count);
105 throw InternalErr (__FILE__, __LINE__,
106 "This special coordinate variable is not supported.");
118 throw InternalErr (__FILE__, __LINE__,
119 "The number of elements should be 19.");
122 vector<float>total_val;
123 total_val.resize(tnumelm);
124 for (
int i = 0; i<20;i++)
125 total_val[i] = 0.5*(i+1);
127 for (
int i = 20; i<28;i++)
128 total_val[i] = total_val[19]+(i-19);
135 if (nelms == tnumelm) {
136 set_value ((dods_float32 *) &total_val[0], nelms);
143 for (
int i = 0; i < nelms; i++)
144 val[i] = total_val[offset[0] + step[0] * i];
145 set_value ((dods_float32 *) &val[0], nelms);
152 void HDFSPArrayAddCVField:: Obtain_trmm_v7_layer(
int nelms, vector<int>&offset,vector<int>&step,vector<int>&count) {
155 vector<float>total_val;
156 total_val.resize(tnumelm);
157 for (
int i = 0; i<20;i++)
158 total_val[i] = 0.5*(i+1);
160 for (
int i = 20; i<28;i++)
161 total_val[i] = total_val[19]+(i-19);
168 if (nelms == tnumelm) {
169 set_value ((dods_float32 *) &total_val[0], nelms);
176 for (
int i = 0; i < nelms; i++)
177 val[i] = total_val[offset[0] + step[0] * i];
178 set_value ((dods_float32 *) &val[0], nelms);
183 void HDFSPArrayAddCVField:: Obtain_trmml3s_v7_nthrash(
int nelms, vector<int>&offset,vector<int>&step,vector<int>&count) {
185 vector<float>total_val;
186 total_val.resize(tnumelm);
188 if(name ==
"nthrshZO") {
198 else if (name ==
"nthrshHB") {
205 total_val[5] = 0.9999;
208 else if(name ==
"nthrshSRT") {
219 throw InternalErr (__FILE__, __LINE__,
220 "Unsupported coordinate variable names.");
225 if (nelms == tnumelm) {
226 set_value ((dods_float32 *) &total_val[0], nelms);
233 for (
int i = 0; i < nelms; i++)
234 val[i] = total_val[offset[0] + step[0] * i];
235 set_value ((dods_float32 *) &val[0], nelms);
249 Dim_iter p = dim_begin ();
251 while (p != dim_end ()) {
253 int start = dimension_start (p,
true);
254 int stride = dimension_stride (p,
true);
255 int stop = dimension_stop (p,
true);
259 if (stride < 0 || start < 0 || stop < 0 || start > stop) {
262 oss <<
"Array/Grid hyperslab indices are bad: [" << start <<
263 ":" << stride <<
":" << stop <<
"]";
264 throw Error (malformed_expr, oss.str ());
268 if (start == 0 && stop == 0 && stride == 0) {
269 start = dimension_start (p,
false);
270 stride = dimension_stride (p,
false);
271 stop = dimension_stop (p,
false);
276 count[id] = ((stop - start) / stride) + 1;
280 "=format_constraint():"
281 <<
"id=" <<
id <<
" offset=" << offset[
id]
282 <<
" step=" << step[
id]
283 <<
" count=" << count[
id]
#define BESDEBUG(x, y)
macro used to send debug information to the debug stream
int format_constraint(int *cor, int *step, int *edg)