Complex-valued coarse solver #142
Labels
driven
Related to driven simulations in the frequency domain
eigenmode
Related to eigenmode simulations
enhancement
New feature or request
performance
Related to performance
The multigrid smoothers have recently been upgraded to smooth using the true complex-valued system matrix for frequency domain applications which, while more expensive per iteration, improves convergence by roughly halving the number of iterations in most observed cases. At high frequencies, the solver is expected to perform worse due to the indefinite nature of the system matrix but even limiting the number of multigrid levels to 1 (with
"MGMaxLevels": 1
) and using a sparse direct solver does not converge (or takes a large number of iterations). It can be tested that if the system matrix is real (remove lumped ports, absorbing boundary conditions), the solver converges in a constant number of iterations with 1 multigrid level (1 or 2 iterations based on stability of the direct solve and the desired precision), and performs very well even at large-ish frequencies with > 1 multigrid level. These experiments can be validated with thecpw
example.The conclusion is that we probably stand to gain in terms of convergence if the coarse solve (sparse direct solve) is performed on the complex-valued matrix instead of the real approximation
A_r + A_i
as is done currently. There are two relatively straightforward ways to go about this:HypreParMatrix
representing the real and imaginary parts.[A_r -A_i; A_i A_r]
for the equivalent real formulation to the solver. This will be a more expensive factorization and solve by ~2x than the complex-valued one, but is perhaps easier to implement for testing.The text was updated successfully, but these errors were encountered: