mirror of https://github.com/ecmwf/eccodes.git
Add better error/debug messages
This commit is contained in:
parent
8ffaf277db
commit
ef24c8f947
|
@ -98,6 +98,7 @@ static void init_class(grib_iterator_class* c)
|
||||||
}
|
}
|
||||||
/* END_CLASS_IMP */
|
/* END_CLASS_IMP */
|
||||||
|
|
||||||
|
#define ITER "Regular grid Geoiterator"
|
||||||
|
|
||||||
static int next(grib_iterator* iter, double* lat, double* lon, double* val)
|
static int next(grib_iterator* iter, double* lat, double* lon, double* val)
|
||||||
{
|
{
|
||||||
|
@ -148,7 +149,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args)
|
||||||
|
|
||||||
long Ni; /* Number of points along a parallel = Nx */
|
long Ni; /* Number of points along a parallel = Nx */
|
||||||
long Nj; /* Number of points along a meridian = Ny */
|
long Nj; /* Number of points along a meridian = Ny */
|
||||||
double idir, lon1, lon2;
|
double idir, idir_coded, lon1, lon2;
|
||||||
long loi;
|
long loi;
|
||||||
|
|
||||||
const char* s_lon1 = grib_arguments_get_name(h, args, self->carg++);
|
const char* s_lon1 = grib_arguments_get_name(h, args, self->carg++);
|
||||||
|
@ -163,22 +164,23 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args)
|
||||||
return ret;
|
return ret;
|
||||||
if ((ret = grib_get_double_internal(h, s_idir, &idir))) // can be GRIB_MISSING_DOUBLE
|
if ((ret = grib_get_double_internal(h, s_idir, &idir))) // can be GRIB_MISSING_DOUBLE
|
||||||
return ret;
|
return ret;
|
||||||
|
idir_coded = idir;
|
||||||
if ((ret = grib_get_long_internal(h, s_Ni, &Ni)))
|
if ((ret = grib_get_long_internal(h, s_Ni, &Ni)))
|
||||||
return ret;
|
return ret;
|
||||||
if (grib_is_missing(h, s_Ni, &ret) && ret == GRIB_SUCCESS) {
|
if (grib_is_missing(h, s_Ni, &ret) && ret == GRIB_SUCCESS) {
|
||||||
grib_context_log(h->context, GRIB_LOG_ERROR, "Key %s cannot be 'missing' for a regular grid!", s_Ni);
|
grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Key %s cannot be 'missing' for a regular grid!", ITER, s_Ni);
|
||||||
return GRIB_WRONG_GRID;
|
return GRIB_WRONG_GRID;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = grib_get_long_internal(h, s_Nj, &Nj)))
|
if ((ret = grib_get_long_internal(h, s_Nj, &Nj)))
|
||||||
return ret;
|
return ret;
|
||||||
if (grib_is_missing(h, s_Nj, &ret) && ret == GRIB_SUCCESS) {
|
if (grib_is_missing(h, s_Nj, &ret) && ret == GRIB_SUCCESS) {
|
||||||
grib_context_log(h->context, GRIB_LOG_ERROR, "Key %s cannot be 'missing' for a regular grid!", s_Nj);
|
grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Key %s cannot be 'missing' for a regular grid!", ITER, s_Nj);
|
||||||
return GRIB_WRONG_GRID;
|
return GRIB_WRONG_GRID;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Ni*Nj != iter->nv) {
|
if (Ni*Nj != iter->nv) {
|
||||||
grib_context_log(h->context, GRIB_LOG_ERROR, "Geoiterator: Ni*Nj!=numberOfDataPoints (%ld*%ld!=%zu)", Ni,Nj,iter->nv);
|
grib_context_log(h->context, GRIB_LOG_ERROR, "%s: Ni*Nj!=numberOfDataPoints (%ld*%ld!=%zu)", ITER, Ni, Nj, iter->nv);
|
||||||
return GRIB_WRONG_GRID;
|
return GRIB_WRONG_GRID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,6 +225,10 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args)
|
||||||
self->las = (double*)grib_context_malloc(h->context, Nj * sizeof(double));
|
self->las = (double*)grib_context_malloc(h->context, Nj * sizeof(double));
|
||||||
self->los = (double*)grib_context_malloc(h->context, Ni * sizeof(double));
|
self->los = (double*)grib_context_malloc(h->context, Ni * sizeof(double));
|
||||||
|
|
||||||
|
if (idir != idir_coded) {
|
||||||
|
grib_context_log(h->context, GRIB_LOG_DEBUG, "%s: Using idir=%g (coded value=%g)", ITER, idir, idir_coded);
|
||||||
|
}
|
||||||
|
|
||||||
for (loi = 0; loi < Ni; loi++) {
|
for (loi = 0; loi < Ni; loi++) {
|
||||||
self->los[loi] = lon1;
|
self->los[loi] = lon1;
|
||||||
lon1 += idir;
|
lon1 += idir;
|
||||||
|
|
Loading…
Reference in New Issue