Thank you both for your fast answers! I agree, that it might not make a big difference using the centered difference formula, but just to get it from my list of things that could help I will try and implement it. I don't understand how I could miss this forum discussion when I was looking for a way to implement this all day yesterday, but the second link I got now from google typing "petsc MatShell" is a long discussion you had with another user on exactly what I want to do :) Just in case anyone else is looking for the same thing : http://lists.mcs.anl.gov/pipermail/petsc-users/2010-August/006821.html
On Sat, May 31, 2014 at 6:07 PM, Barry Smith <[email protected]> wrote: > > You might consider trying some of the non-Newton based nonlinear solvers > now available in the development version of PETSc > http://www.mcs.anl.gov/petsc/developers/index.html Here is a list of > them see their manual pages for more details > > > > > > On May 31, 2014, at 10:02 AM, Jonas Mairhofer < > [email protected]> wrote: > > > Hi all, > > > > I am using PETSc to solve a system of nonlinear equations arising from > Density Functional Theory. Depending on the actual problem setup the > residulas of the matrix-free linear solver (GMRES) > > stagnate and the nonlinear system converges only slowly. > > Besides preconditioning my second idea to improve the performance of the > linear solver was to use a higher order approximation of the Jacobi-vector > product. Therefore, I am trying to write a user defined subroutine that > calculates the approximation of the matrix-free Jacobi-Vector product, i.e. > I would like to have a routine which can replace the default 1st order > approximation > > > > J(x)*v = (F(x+eps*v) - F(x) ) / eps > > > > for instance by a 2nd order approximation such as > > > > J(x)*v = (F(x+eps*v) - F(x-eps*v) ) / 2eps > > > > So assuming that I have a subroutine which claculates the approximation > of J(x)*v, how do I get PETSc to use this result in the SNES solver? > > > > Thank you very much, > > Jonas > > >
