New preconditioned iterative solution methods for the Helmholtz equation are constructed. To evaluate the performance of the methods, two-dimensional problems with a waveguide geometry are used as model problems. Second- and fourth-order accurate finite difference discretizations are used. By introducing a domain decomposition framework, problems where the physical domain consists of a number of layers of different materials can be solved. The new algorithms are shown to perform well compared with standard methods.
First, a discretization of the Helmholtz equation in a curvilinear waveguide with smoothly varying material properties is studied. Nonlocal radiation boundary conditions are constructed for the artificial in- and outflow boundaries. A preconditioner that can be applied using fast transform methods is constructed. Experiments show that the total arithmetic complexity is much less with the fast transform preconditioner than when using a standard symmetric successive over-relaxation preconditioner. Compared with band Gaussian elimination, the gain is large both in arithmetic complexity and memory requirements.
Next, an application with layers of different materials is considered. It is shown that nonlocal radiation boundary conditions can be constructed also in this case. A domain decomposition formulation is employed, where the fast transform preconditioner is used as a subdomain preconditioner. The performance is excellent compared with band Gaussian elimination.
The multilayer solver is used for an investigation of the properties of the solutions of a number of underwater acoustics problems. The quality of the solutions obtained by a widely used approximation, the parabolic wave equation, is evaluated. For some problems the agreement is excellent, whereas in other cases the approximation cannot replace the full Helmholtz solution.
A parallel version of the solver is implemented, where the algorithms are modified for increased parallel performance. With the parallel code larger problems can be solved in less computational time.