Beam Blockage (BEAMB)
2 January 2012
Lars Norin and Anders Henja
© 2012 by the Swedish Meteorological and Hydrological Institute (SMHI), Norrköping, Sweden
BEAMB is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BEAMB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with BEAMB. If not, see By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions:


Beam Blockage has been developed as a software package that should be used together with RAVE. BEAMB comes bundled with two GTOPO30 DEMs covering most of Europe starting at 40 degrees North. These so-called "tiles" are called W020N90 and E020N90. The code base is prepared to process data using W060N90, W020N40, and E020N40, but you have to get and install these yourself.

GTOPO30 resides at

BEAMB does not modify GTOPO tiles at all; it just uses them as they are. This means that processing data consumes a lot of memory, especially if your radar covers an area with topography from more than one tile. However, keep in mind that BEAMB processes a beam-blockage result for a unique location and scan geometry only once, and the result is cached and used subsequently each time the analysis for that scan is requested.

The original software has been developed by Lars Norin and adapted by Anders Henja to integrate properly with the RAVE software.


The installation is quite straight forward and there are only 3 different parameters that should be specified. –prefix where beamb should be installed (default is /opt/baltrad/beamb) –with-rave where rave installation can be found –localstatedir where the cache files should be stored.

Other than that, it is pretty much the standard configure, make, make test and make install procedure that is necessary.

%> ./configure --prefix=/opt/baltrad/beamb --with-rave=/opt/baltrad/rave --localstatedir=/var
%> make
%> make test
%> make install

API Overview

The beam blockage calculations are quite easy to use. The beam blockage object keeps track of the topography handling and mapping so the only thing you really have to do is to provide the object with a scan and a limit for the gaussian approximation.

In Python, it probably looks something like:

import _beamblockage
import _raveio

scan ="scan.h5").object

bb =

# Determine blockage with a -6 dB beamwidth
result = a.getBlockage(scan, -6.0);

# Correct reflectivity for blocking up to 70%, above that "nodata" 
restored = _beamblockage.restore(scan, result, "DBZH", 0.7)


rio =
rio.object = scan"result.h5")

The default behaviour for beam blockage is to cache the resulting quality fields since they seldom change. These files are stored in the localstatedir mentioned in Installation. However, you might want to rewrite the cache files or even skip using cache files. This can be done by specifying

bb =
bb.rewritecache = True  # Keep last result in cache directory
bb.cachedir = None      # Turn of caching
bb.cachedir = "/tmp"    # Put cache files in the tmp directory