Hi Cig-Short,<br><br>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. <br>
<br>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):<br>
<br>[pylithapp.petsc]<br>ksp_rtol = 1.0e-15<br>pc_type = lu<br>sub_pc_factor_shift_positive_definite = 0<br>sub_pc_factor_shift_nonzero = <br><br>fs_pc_type = fieldsplit<br>fs_pc_fieldsplit_real_diagonal = true<br>fs_pc_fieldsplit_type = schur<br>
fs_pc_fieldsplit_schur_factorization_type = full<br><br>fs_fieldsplit_0_pc_type = lu<br>fs_fieldsplit_0_ksp_type = preonly<br>fs_fieldsplit_1_pc_type = jacobi<br>fs_fieldsplit_1_ksp_type = gmres<br>fs_fieldsplit_1_ksp_rtol = 1.0e-15<br>
fs_fieldsplit_2_pc_type = jacobi<br>fs_fieldsplit_2_ksp_type = gmres<br>fs_fieldsplit_2_ksp_rtol = 1.0e-15<br>fs_fieldsplit_3_pc_type = jacobi<br>fs_fieldsplit_3_ksp_type = gmres<br>fs_fieldsplit_3_ksp_rtol = 1.0e-15<br><br>
log_summary = true<br>ksp_max_it = 100<br>ksp_gmres_restart = 50<br>ksp_converged_reason = true<br><br>snes_ls_monitor = true<br>snes_rtol = 1.0e-8<br>snes_atol = 1.0e-7<br>snes_max_it = 10000<br>snes_monitor = true<br>snes_converged_reason = true<br>
<br>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:<br>
NGMRES: did not converge (residual remained constant)<br>NCG: Tried the 5 different flavours, all either diverged or never converged (bounced between a few residuals)<br>other LINESEARCH options: none were as good as the default behavior<br>
<br>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.<br>
<br>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!<br>
<br>Thanks for the help!<br>Jeff Thompson<br>Caltech Seismolab<br><br><br>