[CIG-SHORT] Linear Convergence Using SNES

Brad Aagaard baagaard at usgs.gov
Tue Sep 18 13:01:26 PDT 2012


Jeff,

I suspect your slow convergence (in addition to any solver settings) is 
due to your spatial variation of discretization size. Why do you have 
such a fine discretization over the entire middle portion of the domain 
and then rapid coarsening right near the top and bottom (+y and -y) 
edges? You only need fine resolution where there are large strain gradients.

Carrying around so many extra DOF unnecessarily increases the problem 
size and then coarsening right at the edges introduces distorted cells 
which decreases the rate of convergence.

The length scale and shear modulus used in the nondimensionalization 
should be comparable to the discretization size and shear modulus in 
your problem. Picking ones that minimize the minimum residual is 
irrelevant. You want the nondimensionalized displacements and stresses 
to on the order of 1.0 in order to produce a well-conditioned system.

Brad




On 09/18/2012 11:30 AM, Jeffrey Thompson wrote:
> 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
>
>
>
> _______________________________________________
> CIG-SHORT mailing list
> CIG-SHORT at geodynamics.org
> http://geodynamics.org/cgi-bin/mailman/listinfo/cig-short
>



More information about the CIG-SHORT mailing list