Solving Large Acoustics Problems Using Iterative Solvers
This section has some guidance for solving large acoustics problems. For smaller problems using a direct solver like MUMPS is often the best choice. For larger problems, especially in 3D, the only option is often to use an iterative method such as multigrid.
Automatically Generated Suggestions
If the direct solver runs out of memory a simple first approach is to enable and use one of the auto generated iterative solver suggestions. A good starting point for this is to right-click the study node and select Show Default Solver, then expand the Solver Configuration tree under Stationary Solver or Time-Dependent Solver. Predefined iterative solver suggestions are automatically generated. Per default a direct solver is used and two iterative solvers are suggested and disabled (grayed out). To turn on one of these right-click the solver and select Enable (or press F4). The first suggestion (GMRES with GMG) uses the GMRES iterative solver with a geometric multigrid (GMG) preconditioner. This method is typically faster than the direct solver and uses less memory for large 3D models. The second suggestion (FGMRES with GMG) uses the FGMRES iterative solver with a geometric multigrid (GMG) preconditioner. This method is more robust than the GMRES especially for problems that exhibit sharp resonances. If the GMRES suggestion does not converge try the FGMRES suggestion instead. Both suggestions along with more details are described below.
For an example that solves a pressure acoustics model using an iterative solver see: Test Bench Car Interior: Application Library path Acoustics_Module/Automotive/test_bench_car_interior
If PMLs are present in the model solved with an iterative method it is recommended to use the Polynomial scaling option (the default) and the recommended 8 mesh layers. This option will ensure proper convergence of the iterative methods. See the Perfectly Matched Layers (PMLs) section for further details.
Manual Suggestions and Theory
The underlying equation for many of the problems within acoustics is the Helmholtz equation. For high frequencies (or wave numbers) the matrix resulting from a finite-element discretization becomes highly indefinite. In such situations, it can be problematic to use geometric multigrid (GMG) with simple smoothers such as Jacobi or SOR (the default smoother). Fortunately, there exist robust and memory-efficient approaches that circumvent many of the difficulties associated with solving the Helmholtz equation using geometric multigrid.
When using a geometric multigrid as a linear system solver together with simple smoothers, the Nyquist criterion must be fulfilled on the coarsest mesh. If the Nyquist criterion is not satisfied, the geometric multigrid solver might not converge. One way to get around this problem is to use GMRES or FGMRES as a linear system solver with geometric multigrid as a preconditioner.
As a good starting point for modifying the solver select Show Default Solver on the main study node and expand the tree. Go to the Stationary Solver and add an Iterative solver node, per default it uses the GMRES method. The default preconditioner is the incomplete LU (see the sub-node to the Iterative node), right-click the Iterative solver node and select Multigrid. Even if the Nyquist criterion is not fulfilled for the coarse meshes of the multigrid preconditioner, such a scheme is more likely to converge. For problems with high frequencies this approach might, however, lead to a large number of iterations. Then it might be advantageous to use either:
Geometric multigrid as a linear system solver (set the Solver selection to Use preconditioner) with GMRES as a smoother. Under the Multigrid node right-click the Presmoother and Postsmoother nodes and select the Krylov Preconditioner with the Solver selection to GMRES.
FGMRES as a linear system solver (set the Solver selection to FGMRES) with geometric multigrid as a preconditioner (where GMRES is used as a smoother, as above).
Using GMRES or FGMRES as an outer iteration and smoother removes the requirements on the coarsest mesh. When GMRES is used as a smoother for the multigrid preconditioner, FGMRES must be used for the outer iterations because such a preconditioner is not constant (see Ref. 34).
Use GMRES as a smoother only if necessary because GMRES smoothing is very time- and memory-consuming on fine meshes, especially for many smoothing steps.
When solving large acoustics problems, the following options, in increasing order of robustness and memory requirements, can be of use:
If the Nyquist criterion is fulfilled on the coarsest mesh, try to use geometric multigrid as a linear system solver (set Multigrid as preconditioner and set the linear system solver to Use preconditioner) with default smoothers. The default smoothers are fast and have small memory requirements.
Studies and Solvers and Multigrid in the COMSOL Multiphysics Reference Manual