[petsc-users] SNES divergence

Barry Smith bsmith at mcs.anl.gov
Tue Jun 17 15:09:58 CDT 2014


On Jun 17, 2014, at 3:03 PM, Sang pham van <pvsang002 at gmail.com> wrote:

> Hi Barry,
> 
> I want to try the original version of Newton method, no line search nor trust region…

   This will often fail, original version Newton just doesn’t work without a good initial solution.

> Using grid sequencing confuses me at the point that I don't know explicitly the final mesh size, or even if I can estimate the mesh size from the input -snes_grid_sequence n it's not so convenient for me when some of my routines need such info from very first moment.

   To do grid sequencing your code needs to be able to compute the function on several grids, and compute the Jacobian on several grids. If your code is hardwired to work on only one grid (with global variables or whatever) you cannot use grid sequencing and you out of luck. You should organize your code so that it doesn’t depend on any hardwired grid sizes.

  Barry



> I wish PETSc could allow us to pass in the finest mesh for grid sequencing.
> 
> 
> S, 
> 
> 
> On Tue, Jun 17, 2014 at 3:46 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
> On Jun 17, 2014, at 2:30 PM, Sang pham van <pvsang002 at gmail.com> wrote:
> 
> > Thanks Barry,
> >
> > To refine the grid, I just put more points in the direction. For both fine and coarse meshes, I used simple initial guess (say constant values in whole domain for all variables).
> >
> > By using grid sequencing, is the finest mesh is the one I first input the solver?
> 
>   No, you pass in the coarse one.
> >
> > Can you let me know what options should I use to have pure Newton method?
> 
>    Not sure what you mean by pure Newton method, maybe without grid sequencing? It simply may not be possible to get convergence from a “poor” initial guess. One should always use grid sequencing if possible.
> 
>    Barry
> 
> >
> > S.
> >
> >
> > On Tue, Jun 17, 2014 at 3:20 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> >
> > On Jun 17, 2014, at 2:12 PM, Sang pham van <pvsang002 at gmail.com> wrote:
> >
> > > Hi,
> > >
> > > I am using DM structure and SNES to solve a 3D problem. In the problem I have 3 variables.
> > >
> > > I got SNES converged with a grid. Obtain result are physically right. However when I refine the grid, SNES does not always converge,
> >
> >    With the refined grid how are you starting the solution? Do you use the interpolated solution from the coarser grid (called grid sequencing) or just some “not good” initial guess?
> >
> > > the reason of divergence is line search fail or linear solver failed. (I also tried other type of SNES, line search seems to be the one best fits my problem)
> > >
> > > Can you please give me a suggestion to figure out the problem with my solver? What options should I use to have pure Newton method in SNES? Is there any advance option I can use with line search to improve SNES convergence.
> > >
> >
> >    You should use grid sequencing, not only does it get convergence when you may not otherwise get it but it will also solve the problem faster. With PETSc DM you can use -snes_grid_sequence n  or SNESSetGridSequence() in the code to do n levels of grid sequencing.
> >
> >    Barry
> >
> > > Thank you very much.
> > >
> > > Minh.
> > >
> >
> >
> 
> 



More information about the petsc-users mailing list