How to solve variational problem by iteration methods

I would start by listing what you have available.
For instance, by using IPython I can list the available methods and preconditioners

In [1]: from dolfin import *                                                                                                                                                                                   

In [2]: list_krylov_solver_methods()                                                                                                                                                                           
Krylov method  |  Description                                 
--------------------------------------------------------------
bicgstab       |  Biconjugate gradient stabilized method      
cg             |  Conjugate gradient method                   
default        |  default Krylov method                       
gmres          |  Generalized minimal residual method         
minres         |  Minimal residual method                     
richardson     |  Richardson method                           
tfqmr          |  Transpose-free quasi-minimal residual method

In [3]: list_krylov_solver_preconditioners()                                                                                                                                                                   
Preconditioner   |  Description                               
--------------------------------------------------------------
amg              |  Algebraic multigrid                       
default          |  default preconditioner                    
hypre_amg        |  Hypre algebraic multigrid (BoomerAMG)     
hypre_euclid     |  Hypre parallel incomplete LU factorization
hypre_parasails  |  Hypre parallel sparse approximate inverse 
icc              |  Incomplete Cholesky factorization         
ilu              |  Incomplete LU factorization               
jacobi           |  Jacobi iteration                          
none             |  No preconditioner                         
petsc_amg        |  PETSc algebraic multigrid                 
sor              |  Successive over-relaxation     

You can read about these methods at:
KSP: Linear System Solvers — PETSc 3.14.1 documentation and their corresponding references.
For instance, checking out “CG” preconditioner: KSPCG — PETSc 3.18.2 documentation

2 Likes