[CIG-SHORT] Linear Convergence Using SNES

Jeffrey Thompson jeffremt at caltech.edu
Tue Sep 18 11:30:59 PDT 2012


Hi Cig-Short,

I'm having an issue where I'm only able to achieve a slow rate of linear
convergence using the nonlinear solver, resulting in prohibitively long run
times.  I've attached a tarball with the relevant configuration, mesh, and
spatialdb files to run my problem.

The gist of the problem I'm trying run is an extension of the dyke-opening
example in the manual, with a horizontal opening under the action of a
constant pressure (normal traction) distribution between a viscoelastic and
elastic layer.  This is a two dimensional model.  I'm using the following
preconditioner scheme to insure rapid convergence of the linear solver (1-2
iterations):

[pylithapp.petsc]
ksp_rtol = 1.0e-15
pc_type = lu
sub_pc_factor_shift_positive_definite = 0
sub_pc_factor_shift_nonzero =

fs_pc_type = fieldsplit
fs_pc_fieldsplit_real_diagonal = true
fs_pc_fieldsplit_type = schur
fs_pc_fieldsplit_schur_factorization_type = full

fs_fieldsplit_0_pc_type = lu
fs_fieldsplit_0_ksp_type = preonly
fs_fieldsplit_1_pc_type = jacobi
fs_fieldsplit_1_ksp_type = gmres
fs_fieldsplit_1_ksp_rtol = 1.0e-15
fs_fieldsplit_2_pc_type = jacobi
fs_fieldsplit_2_ksp_type = gmres
fs_fieldsplit_2_ksp_rtol = 1.0e-15
fs_fieldsplit_3_pc_type = jacobi
fs_fieldsplit_3_ksp_type = gmres
fs_fieldsplit_3_ksp_rtol = 1.0e-15

log_summary = true
ksp_max_it = 100
ksp_gmres_restart = 50
ksp_converged_reason = true

snes_ls_monitor = true
snes_rtol = 1.0e-8
snes_atol = 1.0e-7
snes_max_it = 10000
snes_monitor = true
snes_converged_reason = true

However, as I mentioned earlier, the SNES residual only drops linearly with
the default solving scheme past the first SNES iteration.  I've tried using
different PETSc options for SNES, but none of the scheme I've tried had
better results (and many were worse or never converged).  To summarize
these attempts:
NGMRES: did not converge (residual remained constant)
NCG: Tried the 5 different flavours, all either diverged or never converged
(bounced between a few residuals)
other LINESEARCH options: none were as good as the default behavior

I've also tried different non-dimensionalization options and found a set
that gives the optimal initial residual (i.e., the lowest value of SNES
residual number 0).  It seems like for this problem, only the
nondimensional length-scale directly impacts the SNES residual.

The result of all of this is that I currently need around 800-1000
non-linear iterations to converge on a single time-step at best.  I have a
feeling that I must be doing something wrong, but I can't tell if this is a
solver issue or some other type of problem (bad mesh, poorly defined
boundary conditions, etc).  Any advice would be appreciated!

Thanks for the help!
Jeff Thompson
Caltech Seismolab
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://geodynamics.org/pipermail/cig-short/attachments/20120918/7b43f364/attachment-0001.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FilesForCIGShort.tar.gz
Type: application/x-gzip
Size: 1110072 bytes
Desc: not available
Url : http://geodynamics.org/pipermail/cig-short/attachments/20120918/7b43f364/attachment-0001.bin 


More information about the CIG-SHORT mailing list