[petsc-users] -snes_type test shows differences

(Rebecca) Xuefei YUAN xy2102 at columbia.edu
Wed Feb 10 14:35:14 CST 2010

```Hi,all,

I was writing analytic Jacobian to my FormJacobian(). However, I found
that there are quite big differences between finite difference
Jacobian and hand coded Jacobian. To simply the problem, assume that I
am solving a very simple equation as the residual function has the
form of
F = fxx*fyy - g.
Where f is the unknown, g is the given r.h.s.

The discretization scheme is the central difference, and therefore, in
my FormFunction,

fgrid[j][i].disp = (
+ ihx1hy1*(grid[j][i+1].disp + grid[j][i-1].disp
- 2*grid[j][i].disp)*(grid[j+1][i].disp + grid[j-1][i].disp -
2*grid[j][i].disp)
);
for the interior points.

The crosponding Jacobian has the form

value[0]	= 0.0;
value[2]	= 0.0;
value[6]	= 0.0;
value[8]	= 0.0;

value[1]	= ihx1hy1*(grid[j][i+1].disp + grid[j][i-1].disp -
2*grid[j][i].disp);
value[3]	= ihx1hy1*(grid[j+1][i].disp + grid[j-1][i].disp -
2*grid[j][i].disp);
value[4]	= -2*ihx1hy1*(grid[j][i+1].disp + grid[j][i-1].disp +
grid[j+1][i].disp + grid[j-1][i].disp - 4*grid[j][i].disp);
value[5]	= ihx1hy1*(grid[j+1][i].disp + grid[j-1][i].disp -
2*grid[j][i].disp);
value[7]	= ihx1hy1*(grid[j][i+1].disp + grid[j][i-1].disp -
2*grid[j][i].disp);

where {4} is the center point, {0,2,6,8} are corner pts and {1,3,5,7}
are star pts, i.e, from left top to right bottom, the order is
0,1,2,3,...,7,8.

The difference between finite difference Jac and hand coded Jac
happens at value[4] where it is a nonlinear term (grid[j][i].disp) in
the residual function.

I test with -snes_type test -snes_test_display with different grid
sizes as ratios and norms below. Differences and ratios increase as
grid sizes increase. Did I have the hand coded Jacobian wrong?

When grid size is 5x7:
Norm of matrix ratio 1.58364e-05 difference 0.000322729
Norm of matrix ratio 2.57168e-05 difference 0.000162665
Norm of matrix ratio 2.57168e-05 difference 0.000162665
When grid size is 15x17:
Norm of matrix ratio 0.000725401 difference 0.0385688
Norm of matrix ratio 0.00169032 difference 0.0185166
Norm of matrix ratio 0.00169032 difference 0.0185166
When grid size is 25x27:
Norm of matrix ratio 0.00349658 difference 0.313173
Norm of matrix ratio 0.0105296 difference 0.148911
Norm of matrix ratio 0.0105296 difference 0.148911
When grid size is 35x37:
Norm of matrix ratio 0.00969703 difference 1.22697
Norm of matrix ratio 0.0347181 difference 0.580945
Norm of matrix ratio 0.0347181 difference 0.580945
When grid size is 45x47:
Norm of matrix ratio 0.0206974 difference 3.38781
Norm of matrix ratio 0.0843389 difference 1.60022
Norm of matrix ratio 0.0843389 difference 1.60022

Thanks very much!

Rebecca
```