[petsc-users] GMRES solver

Barry Smith bsmith at mcs.anl.gov
Sat Jan 7 19:39:14 CST 2012


On Jan 7, 2012, at 4:00 PM, Mohamad M. Nasr-Azadani wrote:

> Hi guys, 
> 
> I am trying to narrow down an issue with my Poisson solver. 
> I have the following problem setup
> 
> Laplace(f) = rhs(x,z,y)
> 0 <= x,y,z <= (Lx,Ly,Lz)
> 
> I solve the Poisson equation in three dimensions with the analytical function f(x,y,z) defined by
> 
> f(x,z,y) = cos(2*pi*x/Lx)*cos(2*pi*y/Ly)*cos(2*pi*z/Lz) + K
> where Lx = Ly =Lz = 1.0 and K is a constant I use to set f(Lx,Ly,Lz) = 0.0. 
> 
> Second order descritization is used for the Poisson equation. 
> Also, Neumann boundary condition is used everywhere, but I set the top-right-front node's value to zero to get rid of the Nullspaced matrix manually. 

   Please don't do this. That results in a unnecessaryly huge condition number. Use KSPSetNullSpace.()

   Also if you are really solving the Poisson problem you should use multigrid; if simple geometry then geometric multigrid if complicated geometry probably easier to use hypre BoomerAMG. No sane person solves Poisson problem with anything but a multigrid or FFT based solver.

   Barry

> I use 20 grid points in each direction. 
> 
> The problem is: 
> I use GMRES(20) without any preconditioners (rtol = 1e-12) to solve the linear system. 
> It takes 77,000 iterations to converge!!!! 
> 
> For the size of only 8,000 unknowns, even though the lsys is not preconditioned, I guess that is a LOT of iterations. 
> Next, I setup the exact same problem in MATLAB and use their GMRES solver function. 
> I set the same parameters and MATLAB tells me that it converges using only 3870 iterations. 
> 
> I know that there might be some internal differences between MATLAB and PETSc's implementations of this method, but given the fact that these two solvers are not preconditioned, I am wondering about this big difference? 
> 
> Any ideas? 
> 
> Best, 
> Mohamad
> 



More information about the petsc-users mailing list