[petsc-users] -snes_mf_operator yields "No support for this operation for this object type" in TS codes?
Barry Smith
bsmith at mcs.anl.gov
Mon Apr 3 08:24:28 CDT 2017
> On Apr 3, 2017, at 8:51 AM, Jed Brown <jed at jedbrown.org> wrote:
>
> Barry Smith <bsmith at mcs.anl.gov> writes:
>
>> Jed,
>>
>> Here is the problem.
>>
>> https://bitbucket.org/petsc/petsc/branch/barry/fix/even-huger-flaw-in-ts
>
> Hmm, when someone uses -snes_mf_operator, we really just need
> SNESTSFormJacobian to ignore the Amat. However, the user is allowed to
> create a MatMFFD and have their TSRHSJacobian function use MatMFFD on
> their RHSFunction. That might even be more accurate, but would require
> the shift/scale. But I'm not aware of any way in which TS can
> distinguish these cases.
SNESGetUsingInternalMatMFFD(snes,&flg); Then you can get rid of the horrible
PetscBool flg;
ierr = PetscObjectTypeCompare((PetscObject)A,MATMFFD,&flg);CHKERRQ(ierr);
I had to add in two places. Still ugly but I think less buggy.
>
> What if SNESComputeJacobian was aware of -snes_mf_operator and just
> passed Pmat in both slots? Or does the user sometimes need access to
> the MatMFFD created by -snes_mf_operator? (Seems like possibly, e.g.,
> to adjust differencing parameters.)
More information about the petsc-users
mailing list