I am trying to model the propagation of a laser beam in free space. I have an initial field $E_{in}(x,z=0)$ (a Gaussian beam) and need to find the fields at other points on the optical axis $E(x,z=d)$ for an arbitrary distance $d$.
By reading through a couple of texts, this is the approach that I have right now:
- Compute the Fourier transform of the initial field: $\hat{E}(k_x) = \mathscr{F}[E_{in}(x,z=0)]$
- Multiply $\hat{E}$ by the the free space transfer function $e^{i k_z z0}$ where $k_z = \sqrt{k^2 - k_x^2}$ to propagate it by a distance $z0$ along the optical axis.
- Inverse Fourier transform back to obtain $E(x,z=z0)$
This method makes sense to me. I think we are imagining the field as an infinite collection of plane waves and through the Fourier transform, we are essentially moving each of these plane waves by propagating through each of their respective wave numbers. I understand that the ABCD matrix method might be an easier technique, but I need a method that works for arbitrary beams and not just Gaussian beams.
I am implementing this on Mathematica at the moment and the resulting fields that I am getting do not match my expectations from Gaussian beam propagation (they do not follow the trends of spherical wave fronts). I would appreciate any help in figuring out if this is the right approach. I would also appreciate any help in finding other techniques that might be useful for this modeling.