I am trying to model the propagation of a laser beam in free space. I have an initial field Ein(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: ˆE(kx)=F[Ein(x,z=0)]
- Multiply ˆE by the the free space transfer function eikzz0 where kz=√k2−k2x 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.
Thanks!
Answer
The problem with using the actual free space Fourier propagator is aliasing.
I learned this through trial and error as well, after a few wavelengths the numerical model really begins to behave poorly, probably due to aliasing and roundoff error.
The Fresnel approximation actually does a better job if you are anywhere further than the very near field region, it is numerically more stable...I'm sure you could write software that corrects the errors, but just use Fresnel, it is very accurate...
uz(r)≈eikziλzeiπr2λzF{u0(r0)eiπr20/λz}ρ=rλz
where the following constraint must be met : z3≫‖r−r0‖4/λ and r:=(x,y); the coordinates in the plane at your particular z, perpendicular to the z-axis, r0:=(x0,y0); the coordinates in the plane at your initial field position z0=0, perpendicular to the z-axis.
Fraunhofer (far-field) is valid when z≫‖r−r0‖2/λ
No comments:
Post a Comment