[petsc-users] difference between solns for np=1 and np>1.
(Rebecca) Xuefei YUAN
xy2102 at columbia.edu
Thu Mar 18 13:26:24 CDT 2010
Dear Jed,
If I checked the Jacobian with
-snes_type test -snes_test_display
np1 has good ratios as:
Norm of matrix ratio 9.88921e-09 difference 3.32649e-06
but
np2 has bad ratios as:
Norm of matrix ratio 1.40616 difference 472.998
I am looking at the hand-coded - finite difference and check those
difference entries.
Let me get back to you later.
BTW, I did look at the tidxm[], tidxn[] and tvv[] in MatSetValues()
ierr = MatSetValues(jac, 1, tidxm, nonzero, tidxn, tvv,
INSERT_VALUES);CHKERRQ(ierr);
in gdb for np1 and np2, they are all the same before calling
ierr = MatAssemblyBegin(jac,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);//book15page37
ierr = MatAssemblyEnd(jac,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
but why there are quite different in -snes_type test?
Thanks so much for your kind help!
Rebecca
Quoting "(Rebecca) Xuefei YUAN" <xy2102 at columbia.edu>:
> Dear Jed,
>
> I reran the code adding one option -snes_mf, then np=2 gives the same
> result as in np=1.
>
> So I think the bug is in the Jacobian matrix.
>
> Here are steps I used to check on the Jacobian matrix:
>
> 1) After final assemble the Jacobian, output the matrix to Matlab files
> and compare the .m files for both np=1 and np=2:
>
> ierr = MatAssemblyBegin(jac,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);//book15page37
> ierr = MatAssemblyEnd(jac,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
>
> PetscViewer viewer;
> char fileName[128];
> PetscInt p;
> ierr = MPI_Comm_size(MPI_COMM_WORLD, &p);CHKERRQ(ierr);
> PetscInt its;
> ierr = SNESGetIterationNumber(snes,&its);CHKERRQ(ierr);
> sprintf(fileName, "twvggt_matrix_tx%i_ty%i_p%i_its%i.m",info1.mx,
> info1.my,p,its);
> ierr =
> PetscViewerASCIIOpen(PETSC_COMM_WORLD,fileName,&viewer);CHKERRQ(ierr);
> ierr = PetscViewerSetFormat(viewer,PETSC_VIEWER_ASCII_MATLAB);CHKERRQ(ierr);
> ierr = MatView (jac, viewer); CHKERRQ (ierr);
> PetscViewerDestroy(viewer);
>
> 2) in such a way, after each nonlinear iteration, there is a file for
> the corresponding Jacobian, I found these J_np1 and J_np2 have
> different nonzero structures, for example, for a (7X6+1,7X6+1) matrix,
> standard five-pt scheme with stencil width = 1, (the other 1 after 42
> is a scalar in DMComposite)
> J_np1 has
> % Size = 43 43
> % Nonzeros = 367
> zzz = zeros(367,3);
>
> and J_np2 has
> % Size = 43 43
> % Nonzeros = 576
> zzz = zeros(576,3);
>
> I checked the different nonzero structure in J_np1 and J_np2, the
> different spots in J_np2 are all zeros.
>
> 3) The null space in this case is a single vector has first 7X6
> elements being a scale, and the last element being zero. I confirmed by
> comparing v = null(Mat_0) in Matlab with VecView in C, they are the
> same.
>
> Will this be enough to confirm the J_np1, J_np2 and the null vector?
>
> Thanks very much!
>
> Rebecca
>
>
>
> Quoting Jed Brown <jed at 59A2.org>:
>
>> On Thu, 18 Mar 2010 13:50:32 -0400, "(Rebecca) Xuefei YUAN"
>> <xy2102 at columbia.edu> wrote:
>>> Dear Jed,
>>>
>>> I excluded the bug from CreateNullSpace(), but still have different
>>> convergence history for np=1 and np=2, both with -pc_type none, and
>>> -pc_type jacobi.
>>>
>>> The convergence history for np=1, -pc_type none is
>>>
>>>
>>> 0 SNES Function norm 3.277654936380e+02
>>> Linear solve converged due to CONVERGED_RTOL iterations 1
>>> 1 SNES Function norm 1.010694930474e+01
>>> Linear solve converged due to CONVERGED_RTOL iterations 9
>>> 2 SNES Function norm 1.456202001578e+00
>>> Linear solve converged due to CONVERGED_RTOL iterations 23
>>> 3 SNES Function norm 6.670544108392e-02
>>> Linear solve converged due to CONVERGED_RTOL iterations 28
>>> 4 SNES Function norm 1.924506428876e-04
>>> Linear solve did not converge due to DIVERGED_ITS iterations 10000
>>> 5 SNES Function norm 3.554534723246e-05
>>> Linear solve did not converge due to DIVERGED_ITS iterations 10000
>>> 6 SNES Function norm 3.554534511905e-05
>>> Linear solve did not converge due to DIVERGED_ITS iterations 10000
>>> 7 SNES Function norm 3.554534511895e-05
>>> Nonlinear solve converged due to CONVERGED_PNORM_RELATIVE
>>
>> It looks like this has stagnated. You said you have checked that the
>> matrices are the same, what did you do to confirm this? How did you
>> check that the null spaces are the same? What do the unpreconditioned
>> residuals look like (e.g. -ksp_type fgmres or -ksp_type lgmres
>> -ksp_right_pc)? If you are working in unpreconditioned residuals, then
>> how are you implementing boundary conditions?
>>
>> Jed
>>
>>
>
>
>
> --
> (Rebecca) Xuefei YUAN
> Department of Applied Physics and Applied Mathematics
> Columbia University
> Tel:917-399-8032
> www.columbia.edu/~xy2102
--
(Rebecca) Xuefei YUAN
Department of Applied Physics and Applied Mathematics
Columbia University
Tel:917-399-8032
www.columbia.edu/~xy2102
More information about the petsc-users
mailing list