# [petsc-users] VISS and VIRS convergence problems

Andrew.Wilkins at csiro.au Andrew.Wilkins at csiro.au
Thu Oct 17 19:10:44 CDT 2013

```Hi,

I'm new to the list.  I've been using PETSc as a linear solver for a few years, and now I'm starting to get into MOOSE which is a finite-element framework which uses PETSc much more optimally.

I've got a problem where I'm using viss or virs (petsc3.3) to enforce a lower bound on my solution.  The actual application is unsaturated Darcy-Richards single-phase flow - slow water flow through a porous medium.  As water is withdrawn from a region, the pressure drops, but physically the water pressure is bounded from below.  The DE ensures this via a nonlinear relative permeability function which goes to zero at the lower-bound of pressure: permeability=0 means no water can flow from the region.  However, in the linearization, the nonlinear solver won't know about this function going to zero (unless it just happens to end up right at the lower bound), so often the pressure goes into the unphysical region (pressure < lower) during the solution process.  Therefore I'm using the VI solvers.

First question - the -snes_vi_type appears to make no difference at all.  What's it supposed to do?

Second question - So far, viss has converged always, but virs sometimes gives problems.  I've read in one email-thread that virs is preferred.  Why is that?  I'm basing my comment on only about 10 tests, but I'm still interested in your replies.  I'm pretty sure my jacobian is correct, as I have tested it using -snes_type=test, and also I have run using finite-differences, and still got the behaviour below.  This is the type of behaviour I get:

DT: 2.885464e+03
Solving time step 48, time=406142.00...
Initial |residual|_2 = 1.536061e-01
NL step  0, |residual|_2 = 1.536061e-01
0 SNES VI Function norm 1.536061428302e-01 Active lower constraints 0/2 upper constraints 0/0 Percent of total 0 Percent of bounded 0
0 KSP Residual norm 1.536061428302e-01
1 KSP Residual norm 5.954022644970e-05
2 KSP Residual norm 1.874684877465e-07
NL step  1, |residual|_2 = 2.508324e-02
1 SNES VI Function norm 2.508323951297e-02 Active lower constraints 0/2 upper constraints 0/0 Percent of total 0 Percent of bounded 0
0 KSP Residual norm 2.508323951297e-02
1 KSP Residual norm 1.744363683367e-05
2 KSP Residual norm 9.541678264164e-09
Nonlinear solve did not converge due to DIVERGED_LOCAL_MIN iterations 1
Solve Did NOT Converge!
Solve failed... cutting timestep
DT: 1.442732e+03
Solving time step 48, time=404699.00...
Initial |residual|_2 = 1.536061e-01
NL step  0, |residual|_2 = 1.536061e-01
0 SNES VI Function norm 1.536061428302e-01 Active lower constraints 0/2 upper constraints 0/0 Percent of total 0 Percent of bounded 0
0 KSP Residual norm 1.536061428302e-01
1 KSP Residual norm 7.144446293019e-05
2 KSP Residual norm 2.783195631751e-07
NL step  1, |residual|_2 = 2.513316e-02
1 SNES VI Function norm 2.513315575633e-02 Active lower constraints 0/2 upper constraints 0/0 Percent of total 0 Percent of bounded 0
0 KSP Residual norm 2.513315575633e-02
1 KSP Residual norm 2.187002762768e-05
2 KSP Residual norm 1.996619992363e-08
Nonlinear solve did not converge due to DIVERGED_LINE_SEARCH iterations 1
Solve Did NOT Converge!
Solve failed... cutting timestep

Ph: +61 7 3327 4497.  Fax: +61 7 3327 4666