diff --git a/ChangeLog b/ChangeLog index 59d29a5893ca0ee06e10861ba8c42aeed3a5331b..52fc0d27613cf347815c756e833d2aaf1bd1f0cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ * Version 1.6.8 released +2015-03-19 Uwe Schulzweida + + * remapycon: correct weights only for norm_opt=fracarea + 2015-03-18 Uwe Schulzweida * expr: added support for logical operators <, >, <=, >=, !=, == diff --git a/src/expr.c b/src/expr.c index 50b038d26cc652f8439283f9c4d4c6c8eb8bf038..d571136a3b447afad3e785ea65be4b9fe00e4a31 100644 --- a/src/expr.c +++ b/src/expr.c @@ -379,6 +379,30 @@ nodeType *expr_var_var(int oper, nodeType *p1, nodeType *p2) if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = POW(idat1[i], idat2[i]); else for ( i=0; i<ngp; ++i ) odat[i] = pow(idat1[i], idat2[i]); break; + case '<': + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPLT(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPLT(idat1[i], idat2[i]); + break; + case '>': + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPGT(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPGT(idat1[i], idat2[i]); + break; + case LE: + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPLE(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPLE(idat1[i], idat2[i]); + break; + case GE: + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPGE(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPGE(idat1[i], idat2[i]); + break; + case NE: + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPNE(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPNE(idat1[i], idat2[i]); + break; + case EQ: + if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPEQ(idat1[i], idat2[i]); + else for ( i=0; i<ngp; ++i ) odat[i] = COMPEQ(idat1[i], idat2[i]); + break; default: cdoAbort("%s: operator %c unsupported!", __func__, oper); break; diff --git a/src/remap_conserv.c b/src/remap_conserv.c index 0750569dcc680debda0d4258298400d73ebcec10..c13278c74fcf674a6f9a3eb11dc9cab1c9eeecfb 100644 --- a/src/remap_conserv.c +++ b/src/remap_conserv.c @@ -995,7 +995,8 @@ void remap_weights_conserv(remapgrid_t *src_grid, remapgrid_t *tgt_grid, remapva for ( n = 0; n < num_weights; ++n ) partial_weights[n] = partial_areas[n] / tgt_area; - correct_weights((unsigned)num_weights, partial_weights); + if ( rv->norm_opt == NORM_OPT_FRACAREA ) + correct_weights((unsigned)num_weights, partial_weights); for ( n = 0; n < num_weights; ++n ) partial_weights[n] *= tgt_area;