[petsc-users] Preconditioned JFNK using SuperLU_dist for time dependent problems

Travis C. Fisher travis.fisher at nasa.gov
Fri Jul 29 09:41:25 CDT 2011


I ran into the following problem when trying to use superlu_dist as a 
preconditioner for matrix free SNES with GMRES in my high order Navier 
Stokes solver:

I set the nonzero pattern of my preconditioner matrix at the begging of 
a simulation (t=0). The overall stencil of the numerical method never 
changes, so the nonzero pattern should never change. I use an implicit 
Runge Kutta scheme to advance the solution in time. The preconditioning 
matrix is the frozen jacobian at the start of a time step. The same 
preconditioner is used for every stage of the RK scheme. After one time 
step is complete, the preconditioner matrix is calculated for the new 
time step.

The problem I am having with superlu_dist is that if I use 
SAME_NONZERO_PATTERN, I get a segmentation violation. However, if I use 
DIFFERENT_NONZERO_PATTERN, everything works fine. If I am conservative 
about how I initialize the nonzero pattern and desire it to never to 
change, why do I need to use DIFFERENT_NONZERO_PATTERN? Individual 
components in the nonzero structure will be zero for some steps and not 
others, but the overall nonzero structure is fixed. I don't get errors 
when using Additive Schwarz with ILU, but I am wondering if convergence 
problems occur because of how the nonzero patterns are handled. Any 
ideas of what I am doing incorrectly? What is SAME_NONZERO_PATTERN 
really telling the nonlinear solver over multiple calls? Most of the 
examples only have one call to SNESSolve, so I feel that this is not 
well covered elsewhere.

Thanks in advance.

Travis Fisher



More information about the petsc-users mailing list