[petsc-users] -snes_mf_operator yields "No support for this operation for this object type" in TS codes?

Jed Brown jed at jedbrown.org
Sun Apr 2 21:23:14 CDT 2017


The issue is that we need to create

  a*I - Jrhs

and this is currently done by creating a*I first when we have separate
matrices for the left and right hand sides.  There is code to just scale
and shift Jrhs when there is no IJacobian, but the creation logic got
messed up at some point (or at least for some TS configurations that are
common).  We were discussing this recently in a performance context and
this branch is supposed to fix that logic.  Does this branch work for
you?

https://bitbucket.org/petsc/petsc/pull-requests/655/fix-flaw-with-tssetrhsjacobian-and-no/diff

Ed Bueler <elbueler at alaska.edu> writes:

> Dear PETSc --
>
> I have a TS-using and DMDA-using code in which I want to set a RHSJacobian
> which is only approximate.  (The Jacobian uses first-order upwinding MOL
> while the RHSFunction uses a flux-limited MOL.)  While it works with the
> analytical Jacobian, and -snes_fd, and -snes_fd_color, and -snes_mf, I get
> a "No support ..." message for -snes_mf_operator.
>
> It suffices to show the problem with
>
> src/ts/examples/tutorials/ex2.c
>
> (Note ex2.c does not use DMDA so ..._color is not available for ex2.c.)
>
> Error as follows:
>
> ~/petsc/src/ts/examples/tutorials[master*]$ ./ex2 -ts_dt 0.001
> -ts_final_time 0.001 -snes_monitor
>     0 SNES Function norm 1.059316422854e+01
>     1 SNES Function norm 1.035505461114e-05
>     2 SNES Function norm 5.498223366328e-12
> ~/petsc/src/ts/examples/tutorials[master*]$ ./ex2 -ts_dt 0.001
> -ts_final_time 0.001 -snes_monitor -snes_fd
>     0 SNES Function norm 1.059316422854e+01
>     1 SNES Function norm 1.208245988550e-05
>     2 SNES Function norm 6.022374930788e-12
> ~/petsc/src/ts/examples/tutorials[master*]$ ./ex2 -ts_dt 0.001
> -ts_final_time 0.001 -snes_monitor -snes_mf
>     0 SNES Function norm 1.059316422854e+01
>     1 SNES Function norm 6.136984336801e-05
>     2 SNES Function norm 5.355730806625e-10
> ~/petsc/src/ts/examples/tutorials[master*]$ ./ex2 -ts_dt 0.001
> -ts_final_time 0.001 -snes_monitor -snes_mf_operator
>     0 SNES Function norm 1.059316422854e+01
> [0]PETSC ERROR: --------------------- Error Message
> --------------------------------------------------------------
> [0]PETSC ERROR: No support for this operation for this object type
> [0]PETSC ERROR: Mat type mffd
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
> trouble shooting.
> [0]PETSC ERROR: Petsc Development GIT revision: v3.7.5-3426-g0c7851c  GIT
> Date: 2017-04-01 18:40:06 -0600
> [0]PETSC ERROR: ./ex2 on a linux-c-dbg named ed-lemur by ed Sun Apr  2
> 17:02:47 2017
> [0]PETSC ERROR: Configure options --download-mpich --with-debugging=1
> [0]PETSC ERROR: #1 MatZeroEntries() line 5471 in
> /home/ed/petsc/src/mat/interface/matrix.c
> [0]PETSC ERROR: #2 TSComputeIJacobian() line 965 in
> /home/ed/petsc/src/ts/interface/ts.c
> [0]PETSC ERROR: #3 SNESTSFormJacobian_Theta() line 515 in
> /home/ed/petsc/src/ts/impls/implicit/theta/theta.c
> [0]PETSC ERROR: #4 SNESTSFormJacobian() line 5078 in
> /home/ed/petsc/src/ts/interface/ts.c
> [0]PETSC ERROR: #5 SNESComputeJacobian() line 2276 in
> /home/ed/petsc/src/snes/interface/snes.c
> [0]PETSC ERROR: #6 SNESSolve_NEWTONLS() line 222 in
> /home/ed/petsc/src/snes/impls/ls/ls.c
> [0]PETSC ERROR: #7 SNESSolve() line 3967 in
> /home/ed/petsc/src/snes/interface/snes.c
> [0]PETSC ERROR: #8 TS_SNESSolve() line 171 in
> /home/ed/petsc/src/ts/impls/implicit/theta/theta.c
> [0]PETSC ERROR: #9 TSStep_Theta() line 211 in
> /home/ed/petsc/src/ts/impls/implicit/theta/theta.c
> [0]PETSC ERROR: #10 TSStep() line 3843 in
> /home/ed/petsc/src/ts/interface/ts.c
> [0]PETSC ERROR: #11 TSSolve() line 4088 in
> /home/ed/petsc/src/ts/interface/ts.c
> [0]PETSC ERROR: #12 main() line 194 in
> /home/ed/petsc/src/ts/examples/tutorials/ex2.c
> [0]PETSC ERROR: PETSc Option Table entries:
> [0]PETSC ERROR: -snes_mf_operator
> [0]PETSC ERROR: -snes_monitor
> [0]PETSC ERROR: -ts_dt 0.001
> [0]PETSC ERROR: -ts_final_time 0.001
> [0]PETSC ERROR: ----------------End of Error Message -------send entire
> error message to petsc-maint at mcs.anl.gov----------
> application called MPI_Abort(MPI_COMM_WORLD, 56) - process 0
> [unset]: aborting job:
> application called MPI_Abort(MPI_COMM_WORLD, 56) - process 0
>
> Is this intended or a bug?  If it is intended, what is the issue?
>
> I am using current master branch (commit
> 0c7851c55cba8e40da5083f79ba1ff846acd45b2).
>
> Thanks for your help and awesome library!
>
> Ed
>
>
>
>
>
> -- 
> Ed Bueler
> Dept of Math and Stat and Geophysical Institute
> University of Alaska Fairbanks
> Fairbanks, AK 99775-6660
> 301C Chapman
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170402/3ecaaed5/attachment.pgp>


More information about the petsc-users mailing list