Next: , Previous: Expressions, Up: ncap2 netCDF Arithmetic Processor


4.1.3 Dimensions

Dimensions are defined in Output using the defdim() function.

     defdim("cnt",10);

This dimension name must then be prefixed with a dollar-sign ‘$’ when referred to in method arguments or left-hand-casting, e.g.,

     new_var[$cnt]=time;
     temperature[$time,$lat,$lon]=35.5;
     temp_avg=temperature.avg($time);

The size method allows the dimension size to be used in an arithmetic expression:

     time_avg=time.total() / $time.size;

Increase the size of a new variable by one and set new member to zero:

     defdim("cnt_new",$cnt.size+1);
     new_var[$cnt_new]=0.0;
     new_var(0:($cnt_new.size-2))=old_var;

Dimension Abbreviations
It is possible to use dimension abbreviations as method arguments:
$0 is the first dimension of a variable
$1 is the second dimension of a variable
$n is the n+1 dimension of a variable

     float four_dmn_rec_var(time,lat,lev,lon);
     double three_dmn_var_dbl(time,lat,lon);
     
     four_nw=four_dmn_rev_var.reverse($time,$lon)
     four_nw=four_dmn_rec_var.reverse($0,$3);
     
     four_avg=four_dmn_rec_var.avg($lat,$lev);
     four_avg=four_dmn_rec_var.avg($1,$2);
     
     three_mw=three_dmn_var_dbl.permute($time,$lon,$lat);
     three_mw=three_dmn_var_dbl.permute($0,$2,$1);

ID Quoting
If the dimension name contains non-regular characters use ID quoting. See see ID Quoting

     defdim("a--list.A",10);
     A1['$a--list.A']=30.0;

GOTCHA
It is not possible to manually define in Output any dimensions that exist in Input. When a variable from Input appears in an expression or statement its dimensions in Input are automagically copied to Output (if they are not already present)