### Preconditioner used in NonlinearVariatiaonalSolver solving mixed formulation

148

views

0

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
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)

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

written
4 months ago by
Feimi Yu

### 1 Answer

0

Preconditioning the incompressible Navier-Stokes part of my problem is on my to-do list. I haven't looked into it much yet; but somebody pointed me to this nice package which could indirectly answer your questions: https://github.com/blechta/fenapack

Please login to add an answer/comment or follow this question.

`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.