-if_reg¶
Introduction¶
The reverse polish notation calculator (-rpn) allows you to manipulate the grid values and save the results in registers. The values in the registers are persistent until they are cleared or the program (wgrib2) ends. The persistent registers allow you to do calculations that require multiple fields. For example, to calculate the wind speed, you have to save the zonal wind in a register and the meridional wind in another register. When both registers have values (U and V), you can then proceed with the wind speed calculation. The -if_reg option tests to see if specified registers have been set. If the register have been set, then the options up to and including the next output option are executed like with an -if option.
Here is an example of computing the 500 mb wind speed.
$ wgrib2 a.grb -match ":[UV]grd:500 mb:anl:" \
-if ":UGRD:" -rpn "sto\_1" -fi \
-if ":VGRD:" -rpn "sto\_2" -fi \
-if\_reg 1:2 \
-rpn "rcl\_1:sq:rcl\_2:sq:+:sqrt:clr\_1:clr\_2" \
-set\_var WIND \
-grib\_out out.grb
line 1: only process the U and V at 500 mb
line 2: store U 500mb analysis in register 1
line 3: store V 500mb analysis in register 2
line 4: if (register 1 and register 2 have values then
line 5: calculate the wind speed: sqrt(reg_1**2 + reg_2**2)
line 6: set variable time to WIND (wind speed)
line 7: write out the WIND data to a grib file
-grib_out is an output option and ends the -if block
Note: this is a very simple script and that doesn't check the matching
date code, grid type, etc.
With operational NCEP files, the V field immediately follows the corresponding U field. If we assume that this is always true, then the following computes all the wind speeds.
$ wgrib2 a.grb -match ":[UV]grd:" \
-if ":UGRD:" -rpn "sto\_1" -fi \
-if ":VGRD:" -rpn "sto\_2" -fi \
-if\_reg 1:2 \
-rpn "rcl\_1:sq:rcl\_2:sq:+:sqrt:clr\_1:clr\_2" \
-set\_var WIND \
-grib\_out out.grb
Usage¶
Description: if X if rpn registers defined, X = A, A:B, A:B:C, etc A = register number
Docs derived from https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/if_reg.html