[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Matrix free example snes/ex20.c




On Dec 30, 2007, at 12:44 PM, Vijay M wrote:

Matt,

Thanks for the reply. What you suggested makes sense and so to start from a
common ground, I used no preconditioner at all in both the J-free and
analytical Jacobian cases. But now, interestingly, the analytical Jacobian
takes around twice the number of linear iterations.


mpirun -np 1 ex20 -ksp_type gmres -snes_monitor -pc_type none
Number of Newton iterations = 6
Number of Linear iterations = 112
Average Linear its / Newton = 1.866667e+01

mpirun -np 1 ex20 -ksp_type gmres -snes_monitor -snes_mf -pc_type none
Number of Newton iterations = 6
Number of Linear iterations = 54
Average Linear its / Newton = 9.000000e+00

I understand that both the methods will not give me the same number of total
linear iterations but a factor of 2 seems a little odd to me.

Yes, this is surprising.

   Run with -ksp_monitor how are the linear convergence different?

This leads to
another question whether the user can actually change the epsilon used for
computing the perturbation in J-free scheme or is this fixed in PETSc ?

Yes, see the manual page for MatMFFDSetFromOptions() and related manual
pages.




If not, then what do you think is the reason for this ?

Bug in your analytic Jacobian? Run with -snes_monitor and - ksp_monitor and
send all output.


   Barry

Do let me know your
comments when you get some time. Thanks.

Vijay

-----Original Message-----
From: owner-petsc-users@xxxxxxxxxxx [mailto:owner-petsc-users@xxxxxxxxxxx ]
On Behalf Of Matthew Knepley
Sent: Saturday, December 29, 2007 9:05 PM
To: petsc-users@xxxxxxxxxxx
Subject: Re: Matrix free example snes/ex20.c


On Dec 29, 2007 8:07 PM, Vijay M <vijay.m@xxxxxxxxx> wrote:
Hi all,

I was trying to compile and run the ex20.c example code in the tutorial
section of SNES. Although it does not explicitly specify that - snes_mf
option can be used, my understanding is that as long as a nonlinear
residual
function is written correctly, PETSc will calculate via finite difference
the action of the Jacobian on a given vector. Is that correct ?

Yes.

Now if that is the case, then please observe the discrepancy in the number
of linear iterations taken with an analytical Jacobian and matrix- free
option. What puzzles me is that the SNES function norm are quite close for
both the methods but the linear iterations differ by a factor of 3. Why
exactly is this ?

There is no PC when using -snes_mf whereas the default is ILU for the analytic Jacobian.

  Matt

Here's the output to make this clearer.

vijay :mpirun -np 1 ex20 -ksp_type gmres -snes_monitor

 0 SNES Function norm 2.271442542876e-01

 1 SNES Function norm 6.881516100891e-02

 2 SNES Function norm 1.813939751552e-02

 3 SNES Function norm 2.354176462207e-03

 4 SNES Function norm 3.063728077362e-05

 5 SNES Function norm 3.106106268946e-08

 6 SNES Function norm 5.344742712545e-12

 0 SNES Function norm 2.271442542876e-01

 1 SNES Function norm 6.881516100891e-02

 2 SNES Function norm 1.813939751552e-02

 3 SNES Function norm 2.354176462207e-03

 4 SNES Function norm 3.063728077362e-05

 5 SNES Function norm 3.106106268946e-08

 6 SNES Function norm 5.344742712545e-12

Number of Newton iterations = 6

Number of Linear iterations = 18

Average Linear its / Newton = 3.000000e+00



vijay :mpirun -np 1 ex20 -ksp_type gmres -snes_monitor -snes_mf

 0 SNES Function norm 2.271442542876e-01

 1 SNES Function norm 6.870629867542e-02

 2 SNES Function norm 1.804335379848e-02

 3 SNES Function norm 2.290074339682e-03

 4 SNES Function norm 3.082384186373e-05

 5 SNES Function norm 3.926396277038e-09

 6 SNES Function norm 3.754922566585e-16

 0 SNES Function norm 2.271442542876e-01

 1 SNES Function norm 6.870629867542e-02

 2 SNES Function norm 1.804335379848e-02

 3 SNES Function norm 2.290074339682e-03

 4 SNES Function norm 3.082384186373e-05

 5 SNES Function norm 3.926396277038e-09

 6 SNES Function norm 3.754922566585e-16

Number of Newton iterations = 6

Number of Linear iterations = 54

Average Linear its / Newton = 9.000000e+00



Thanks,

Vijay





-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener