forvard - propagates the field using FFT algorithm.
Let us consider the wave function U in two planes: U(x,y,0) and U(x,y,z). Suppose that U(x,y,z) is the result of propagation of U(x,y,0) to the distance z. In the Fresnel approximation, the Fourier transform of the diffracted wave function is related to the Fourier transform of the initial function via the frequency transfer characteristic of the free space, given by:
correspondently,the Fourier transforms of two (initial and propagated ) wave functions can be given by:
the expressions (1, 2, 3) provide a symmetrical relation between the initial and diffracted wave functions in the Fresnel approximation. Applied them in the order (2)->(1)->(3) result in the diffracted wave function, while being applied in the reversed order they allow for reconstruction of the initial wave function from the result of diffraction.
The described algorithm can be implemented numerically using Fast Fourier Transform (FFT) on a finite rectangular grid with periodic border conditions. It results in a model of beam propagation inside a rectangular waveguide with reflective walls. To approximate a free-space propagation, wide empty guard bands have to be formed around the wave function defined on a grid. To eliminate the influence of the finite rectangular data window, Gaussian amplitude windowing in the frequency domain should be applied.
The algorithm is very fast in comparison with direct calculation of diffraction integrals. Features to be taken into account:
(1) The algorithm realizes a model of light beam propagation inside a square waveguide with reflecting walls positioned at the grid edges. To approximate a free space propagation, the intensity near the walls must be negligible small. Thus the grid edges must be far enough from the propagating beam. Neglecting these conditions will cause interference of the propagating beam with waves reflected from the waveguide walls.
(2) As a consequence of the previous feature, we must be extremely careful propagating the plane wave to a distance comparable with D*D/lamda where D is diameter (or a characteristic size) of the beam, and lamda is the wavelength. To propagate the beam to the far field (or just far enough) we have to choose the size of our grid much larger than the beam itself, in other words we define the field in a grid filled mainly with zeros. The grid must be even larger when the beam is aberrated - the divergent beams sooner reach the region border.
(3)Described FFT algorithm has its drawbacks. The positive message is that it is very fast, works pretty well if properly used, is simple in implementation and does not require any allocation of extra memory.
(4)negative distance argument may be supplied to forvard. It means that the program will perform ''propagation back'' or in other words it will reconstruct the initial field from the one diffracted.
f1=begin(0.02,1e-6); f2=circ_ap(f1,0.005); f3=forvard(f2,1); field_plot(f3); cros_out(f3,"file1"); temp = fscanfMat('file1.txt'); x=zeros(1,256);int_x=zeros(1,256); x(:)=temp(:,1);int_x(:)=temp(:,2); plot2d(x,int_x);
Chen jingyuan, Gan guangyong (IAPCM, Beijing,China.)
fresnel , forward , steps , lens_forvard , geom_propagation , near_angular , near_fresnel , far_fresnel , fraunhoffer_grt , fresnel_grt , propagate ,