[petsc-users] A number of questions about DMDA with SNES and Quasi-Newton methods
zakaryah .
zakaryah at gmail.com
Sun Oct 8 01:05:58 CDT 2017
I'm more confused than ever. I don't understand the output of -snes_type
test -snes_test_display.
For the user-defined state of the vector (where I'd like to test the
Jacobian), the finite difference Jacobian at row 0 evaluates as:
row 0: (0, 10768.6) (1, 2715.33) (2, -1422.41) (3, -6121.71) (4,
287.797) (5, 744.695) (9, -1454.66) (10, 6.08793) (11, 148.172) (12,
13.1089) (13, -36.5783) (14, -9.99399) (27, -3423.49) (28, -2175.34) (29,
548.662) (30, 145.753) (31, 17.6603) (32, -15.1079) (36, 76.8575) (37,
16.325) (38, 4.83918)
But the hand-coded Jacobian at row 0 evaluates as:
row 0: (0, 10768.6) (1, 2715.33) (2, -1422.41) (3, -6121.71) (4,
287.797) (5, 744.695) (33, -1454.66) (34, 6.08792) (35, 148.172) (36,
13.1089) (37, -36.5783) (38, -9.99399) (231, -3423.49) (232, -2175.34)
(233, 548.662) (234, 145.753) (235, 17.6603) (236, -15.1079) (264,
76.8575) (265, 16.325) (266, 4.83917) (267, 0.) (268, 0.) (269, 0.)
and the difference between the Jacobians at row 0 evaluates as:
row 0: (0, 0.000189908) (1, 7.17315e-05) (2, 9.31778e-05) (3,
0.000514947) (4, 0.000178659) (5, 0.000178217) (9, -2.25457e-05) (10,
-6.34278e-06) (11, -5.93241e-07) (12, 9.48544e-06) (13, 4.79709e-06) (14,
2.40016e-06) (27, -0.000335696) (28, -0.000106734) (29, -0.000106653) (30,
2.73119e-06) (31, -7.93382e-07) (32, 1.24048e-07) (36, -4.0302e-06) (37,
3.67494e-06) (38, -2.70115e-06) (39, 0.) (40, 0.) (41, 0.)
The difference between the column numbering between the finite difference
and the hand-coded Jacobians looks like a serious problem to me, but I'm
probably missing something.
I am trying to use a 3D DMDA with 3 dof, a box stencil of width 1, and for
this test problem the grid dimensions are 11x7x6. For a grid point x,y,z,
and dof c, is the index calculated as c + 3*x + 3*11*y + 3*11*7*z? If so,
then the column numbers of the hand-coded Jacobian match those of the 27
point stencil I have in mind. However, I am then at a loss to explain the
column numbers in the finite difference Jacobian.
On Sat, Oct 7, 2017 at 1:49 PM, zakaryah . <zakaryah at gmail.com> wrote:
> OK - I ran with -snes_monitor -snes_converged_reason
> -snes_linesearch_monitor -ksp_monitor -ksp_monitor_true_residual
> -ksp_converged_reason -pc_type svd -pc_svd_monitor -snes_type newtonls
> -snes_compare_explicit
>
> and here is the full error message, output immediately after
>
> Finite difference Jacobian
> Mat Object: 24 MPI processes
> type: mpiaij
>
> [0]PETSC ERROR: --------------------- Error Message
> --------------------------------------------------------------
>
> [0]PETSC ERROR: Invalid argument
>
> [0]PETSC ERROR: Matrix not generated from a DMDA
>
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
> for trouble shooting.
>
> [0]PETSC ERROR: Petsc Release Version 3.7.6, Apr, 24, 2017
>
> [0]PETSC ERROR: ./CalculateOpticalFlow on a arch-linux2-c-opt named
> node046.hpc.rockefeller.internal by zfrentz Sat Oct 7 13:44:44 2017
>
> [0]PETSC ERROR: Configure options --prefix=/ru-auth/local/home/zfrentz/PETSc-3.7.6
> --download-fblaslapack -with-debugging=0
>
> [0]PETSC ERROR: #1 MatView_MPI_DA() line 551 in /rugpfs/fs0/home/zfrentz/
> PETSc/build/petsc-3.7.6/src/dm/impls/da/fdda.c
>
> [0]PETSC ERROR: #2 MatView() line 901 in /rugpfs/fs0/home/zfrentz/
> PETSc/build/petsc-3.7.6/src/mat/interface/matrix.c
>
> [0]PETSC ERROR: #3 SNESComputeJacobian() line 2371 in
> /rugpfs/fs0/home/zfrentz/PETSc/build/petsc-3.7.6/src/snes/interface/snes.c
>
> [0]PETSC ERROR: #4 SNESSolve_NEWTONLS() line 228 in
> /rugpfs/fs0/home/zfrentz/PETSc/build/petsc-3.7.6/src/snes/impls/ls/ls.c
>
> [0]PETSC ERROR: #5 SNESSolve() line 4005 in /rugpfs/fs0/home/zfrentz/
> PETSc/build/petsc-3.7.6/src/snes/interface/snes.c
>
> [0]PETSC ERROR: #6 solveWarp3D() line 659 in /ru-auth/local/home/zfrentz/
> Code/OpticalFlow/working/October6_2017/mshs.c
>
> On Tue, Oct 3, 2017 at 5:37 PM, Jed Brown <jed at jedbrown.org> wrote:
>
>> Always always always send the whole error message.
>>
>> "zakaryah ." <zakaryah at gmail.com> writes:
>>
>> > I tried -snes_compare_explicit, and got the following error:
>> >
>> > [0]PETSC ERROR: Invalid argument
>> >
>> > [0]PETSC ERROR: Matrix not generated from a DMDA
>> >
>> > What am I doing wrong?
>> >
>> > On Tue, Oct 3, 2017 at 10:08 AM, Jed Brown <jed at jedbrown.org> wrote:
>> >
>> >> Barry Smith <bsmith at mcs.anl.gov> writes:
>> >>
>> >> >> On Oct 3, 2017, at 5:54 AM, zakaryah . <zakaryah at gmail.com> wrote:
>> >> >>
>> >> >> I'm still working on this. I've made some progress, and it looks
>> like
>> >> the issue is with the KSP, at least for now. The Jacobian may be
>> >> ill-conditioned. Is it possible to use -snes_test_display during an
>> >> intermediate step of the analysis? I would like to inspect the
>> Jacobian
>> >> after several solves have already completed,
>> >> >
>> >> > No, our currently code for testing Jacobians is poor quality and
>> >> poorly organized. Needs a major refactoring to do things properly.
>> Sorry
>> >>
>> >> You can use -snes_compare_explicit or -snes_compare_coloring to output
>> >> differences on each Newton step.
>> >>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171008/c048f569/attachment.html>
More information about the petsc-users
mailing list