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
Queensland Centre for Advanced Technologies
PO Box 883, Kenmore, Qld, 4069