> On Feb 9, 2019, at 11:48 AM, Stefano Zampini <[email protected]> > wrote: > > > >> On Feb 9, 2019, at 11:17 AM, Smith, Barry F. <[email protected]> wrote: >> >> >> Hmm, why is this check wrong (though it may be incomplete)? Is there an >> example where it triggers an error when it shouldn’t? > > Suppose in SNESSetJacobian you don’t pass a matrix, and you don’t use a DM. > DMShell will give you back an AIJ matrix by default. > Then, In the callback, you call MatSetType (which I presume is legal) on the > matrix, with a type different than {MPI | Seq}AIJ > If you then call > SNESGetDM(snes,&dm) > DMCreateMatrix(dm,&A)\\ error!
Right, this is exactly what it is suppose to do. Otherwise you request a new matrix type but it returns a matrix with the default AIJ matrix, which is wrong. Barry > >> >> It is my understanding that the check is there to make sure if the user >> requested a particular matrix type then it won't return a different type >> that is unexpected for the user (the AIJ checks are just to handle MATAIJ vs >> MATSEQAIJ, MATMPIAIJ). >> >> Barry >> >> >>> On Feb 8, 2019, at 5:29 AM, Stefano Zampini via petsc-dev >>> <[email protected]> wrote: >>> >>> I don’t understand the need of these checks (tacky and incomplete…, as per >>> the comment) >>> >>> https://bitbucket.org/petsc/petsc/src/75aeaa18afd73be7f3020f94b788241b9e0ba3d7/src/dm/impls/shell/dmshell.c#lines-197 >>> >>> Why are these checks needed? I’m inclined to remove these lines, but I >>> would like some comments before doing it. >> >
