### Preconditioner used in NonlinearVariatiaonalSolver solving mixed formulation

148
views
0
4 months ago by
Hi,

I'm writing a script to solve a SUPG stabilized Navier-Stokes equation, which results in solving a 2x2 block matrix. So far the NonlinaerVariationalSolver works very well with my problems, and seems to be well scalable. I'm wondering what kind of preconditioner is by default employed in such context (also what choice that I have for parallel), because when I query the information of the solver by calling info(solver.parameters, True), I only get "default" on the value column, and "Not set" on the range column.

Thanks!
Feimi
Community: FEniCS Project
I would like to clarify your question: What do you mean by "default"? I will assume you are referring to the default values of the solver's parameters. By default, fenics.NonlinearVariationalSolver uses a direct solver from PETSc. There is no preconditioning, because the condition number of the matrix doesn't matter for direct solvers. I have played around a bit with the Krylov solver options, e.g. CG and BiCGStab; but I don't think that these will automatically do any preconditioning by default. I do not know how easy it is to apply preconditioners; but I understand there is a way to do this, which I link to in my answer below.
written 4 months ago by Alexander G. Zimmerman
Um, yes. I guess the default solver is MUMPS. Actually I specified the linear solver to be GMRES by calling solver.parameters[newton_solver]['linear_solver']='gmres' because my problem is not symmetric. But I didn't specify any preconditioner. (I tried ILU but apparently it does not work). I presume GMRES without preconditioning will cause a prohibitive solving time, but it came out to be still reasonable and scalable. (and it indeed printed the number of gmres iterations when solving it)
written 4 months ago by Feimi Yu