I am simulating the propagation of a light pulse using the equation$$\frac{\partial}{\partial z}A=\frac{1}{2\cdot k_0}\nabla^2_rA$$with$$k_0=\frac{2\pi}{\lambda_0}$$The propagation with a step size of $dz$ is done using the equation$$\left(\vec{1}-i\cdot\frac{dz}{2}\nabla^2_r\right)A_{n+1}=\left(\vec{1}+i\cdot\frac{dz}{2}\nabla^2_r\right)A_n$$with $$A_0(\vec{r})=\exp\left(-\frac{r^2}{2}\right)$$Now I add a lens with a focal length of $f$, which is done using the equation$$A_{0,L}=A_0\exp\left(-i\frac{\left\vert\vec{r}\right\vert^2}{2f}\right)$$My problem is now: I discretize $A$ along a vector $\vec{r}$ from $0$ to $r_{max}$ with $r_{num}$ elements (radial approach). That works for $F>F_{crit}$. If $F<F_{crit}$, the oscillations of the lens factor are not properly resolved anymore, resulting in artifacts in the simulation. For my current input values I need at least more than $50000$ points, but even that is not enough due to a small value for $F$. Using that amount of points increases the amount of computation time and (when displaying the moving pulse) the amount of storage. Is there any way to decrease the amount of points, while still being able to resolve the lens oscillations? I am already using sparse matrices for the calculation, but for storage I have to use a dense matrix.
Simulation of a lens, insufficient points
numerical analysis;finite difference;python;wave propagation