An object-oriented Helmholtz solver based on tensor notation


Kurt Otto
Division of Scientific Computing, IT, UU

A flexible solver for the Helmholtz equation has been constructed. It can handle a smoothly varying bathymetry, real or complex wavenumbers, variable material properties, and layered materials. The ingredients of the solution method are fourth-order finite difference and finite element discretizations, domain decomposition, and preconditioned Krylov subspace methods. In the preconditioner, fast transform subdomain preconditioners and the Schur complement algorithm are combined. We use a tensor notation that facilitates the implementation of PDE solvers for discretizations on structured grids. The solver is written in Fortran 90 using an object-oriented programming style, which is a key to achieve both flexibility and computational efficiency.