This package provides methods for numerical propagation of a complex wave in free space. The available propagators are the angular spectrum method (helmholtz) and the Fresnel approximation (fresnel). Both implementations are convolution-based. The angular spectrum method is suited for near-field propagation (numerical focusing) and yields better results than the Fresnel approximation. The single Fourer transform-based Fresnel propagation method which is suitable for far-field propagation is not implemented in this package.

Obtaining nrefocus

If you have Python and numpy installed, simply run

pip install nrefocus

The source code of nrefocus is available at

Citing nrefocus

Please cite this package if you are using it in a scientific publication.

This package should be cited like this [1].

You can find out what version you are using by typing (in a Python console):

>>> import nrefocus
>>> nrefocus.__version__


[1]Paul Müller (2013) nrefocus: Python algorithms for numerical focusing (Version x.x.x) [Software]. Available at


This project has received funding from the European Union’s Seventh Framework Programme for research, technological development and demonstration under grant agreement no 282060.