Near field to far field

We often need an information about radiation properties in the far field, which for most of the cases is the domain where we are able to measure something. This can be done using a Near Field to Far Field (NFFF) transformation, which uses the values at some set of planes enclosing all the sources and scatterers and calculates the far field time domain or frequency domain results from it for a certain location of far field point.

In GSvit we use time domain NFFF transformation algorithm published by O. Ramahi [1]. The use of NFFF consists of defining the planes eclosing important part of the computational volume (but not laying on its boundaries) and defining the positions of far field points. See the parameter file documentation for details and examples of NFFF use.

Note that the far field calculation point can be still in the computational volume of FDTD, so you can directly compare the field values from Yee's algorithm and from NFFF transformation for the same point in space. This is also how the performance of NFFF is tested in GSvit examples.

Note that on graphics card (GPU), for NFFF computations it is not possible to establish one-to-one correspondence between GPU threads and computational space points as this could lead to access conflicts in the accumulators for far field data (being in the global memory in the present implementation). In GSvit, one thread is responsible for one far field point computation (this approach is effective namely for large numbers of far field points, as e.g. for scattering distribution computations). For small number of far field points, multiple threads are used for accumulation of single far field point.

A typical example of using the NFFF algorithm is the Diffraction grating.

Reference

[1] O. M. Ramahi, Near- and far-field calculations in FDTD simulations using Kirchhoff surface integral representation, IEEE Trans. Antennas and Propagation 45, 753-759 (1997)