### Problem with iterative solver for mixed FEM problem

146
views
0
10 weeks ago by
I'm trying to solve electromagnetic scattering problem using fenics v2017.2.0
Problem is formulated as mixed problem because of real and imaginary part of solution (electromagnetic field in frequency domain).
While using standard solver everything seems fine but iterative solver refuse to converge. I'm using gmres because system is not symmetric and ilu preconditioner.

solver = KrylovSolver('gmres', 'ilu')
prm = solver.parameters
prm.absolute_tolerance = 1E-7
prm.relative_tolerance = 1E-4
prm.maximum_iterations = 100000​

After a couple of iterations (6, 7) process is killed. It works normally on non-mixed problems.

Using other combinations result in maximal number of iterations without convergence. Relative error is always around 10^-1. Which combination can be used for iterative solving of the linear system arising in mixed problems?

Community: FEniCS Project
I've found this post helpful in the past:

https://scicomp.stackexchange.com/questions/513/why-is-my-iterative-linear-solver-not-converging

Note that if you use a PETScKrylovSolver, e.g.,
solver = PETScKrylovSolver('gmres', 'ilu')​

(although I believe the PC 'ilu' will not work in parallel) you can access most of the PETSc API for the underlying KSP,

solver.ksp()

through petsc4py, documented here:

http://www.mcs.anl.gov/petsc/petsc4py-current/docs/apiref/index.html

written 10 weeks ago by David Kamensky
Thank you for your suggestion but unfortunately id doesn't work. I still have the same problem. Process stops after a couple of iterations.
  0 KSP preconditioned resid norm 2.203843150895e+21 true resid norm 6.344424217850e+01 ||r(i)||/||b|| 1.000000000000e+00
1 KSP preconditioned resid norm 2.147918826067e+21 true resid norm 6.502540732248e+01 ||r(i)||/||b|| 1.024922122003e+00
2 KSP preconditioned resid norm 4.409982909751e+20 true resid norm 8.858279393945e+01 ||r(i)||/||b|| 1.396230625471e+00
3 KSP preconditioned resid norm 3.723639691027e+20 true resid norm 1.911306359088e+02 ||r(i)||/||b|| 3.012576545103e+00
4 KSP preconditioned resid norm 3.138016515872e+17 true resid norm 3.333662147596e+02 ||r(i)||/||b|| 5.254475478195e+00
5 KSP preconditioned resid norm 3.106440335095e+17 true resid norm 3.311719471117e+02 ||r(i)||/||b|| 5.219889713237e+00
6 KSP preconditioned resid norm 7.985116971263e+14 true resid norm 2.861284794643e+02 ||r(i)||/||b|| 4.509920359034e+00​
written 10 weeks ago by Dario
There are some hints by the PETSc team here: https://www.mcs.anl.gov/petsc/documentation/faq.html#kspdiverged or here: https://scicomp.stackexchange.com/questions/513/why-is-my-iterative-linear-solver-not-converging?noredirect=1&lq=1

Does it work with LU? I'd guess that your problem is not well posed. Note how your true and relative residuals increase while the (huge!!) preconditioned residual drops some orders of magnitude.