On Fri, Jan 20, 2017 at 10:49 AM, Hong <[email protected]> wrote: > Matt, > By default, the flag C->submat_singleis = false. > In PCSetUp_ASM(), we set it as 'true' to use MatGetSubMatrices_MPIAIJ_ > SingleIS(). > > Can you check the value of this flag in your case? >
The problem is the following: 1) We use MatGetSubMatrices() to extract small matrices in order to form a preconditioner 2) We do this at each Newton iteration 3) We use ASM as a preconditioner for the eventual Newton solve 4) The second time we call MatGetSubMatrices(), it has this flag set, even though we are using multiple ISes Solution: ALSO check that the user is in fact passing a single IS. Matt > Hong > >> >> It comes from here: >>> >>> https://bitbucket.org/petsc/petsc/commits/c10200c1442b553b >>> 7ad65c70101560db4fa22e78 >>> >>> If we ask for more than 1 matrix, it dispatches to >>> >>> MatGetSubMatrices_MPIAIJ_SingleIS() >>> >>> but then fails here >>> >>> https://bitbucket.org/petsc/petsc/annotate/2e559809f9aee9c >>> 95ee79eb0939630cfe5502c8d/src/mat/impls/aij/mpi/mpiov.c?at=m >>> aster&fileviewer=file-view-default#mpiov.c-1306 >>> >>> because ismax > 1. I think the ismax check needs to move up to here >>> >>> https://bitbucket.org/petsc/petsc/annotate/2e559809f9aee9c >>> 95ee79eb0939630cfe5502c8d/src/mat/impls/aij/mpi/mpiov.c?at=m >>> aster&fileviewer=file-view-default#mpiov.c-2012 >>> >>> but I don't know for sure. Please fix this since it is breaking PyLith. >>> >>> Matt >>> >>> -- >>> What most experimenters take for granted before they begin their >>> experiments is infinitely more interesting than any results to which their >>> experiments lead. >>> -- Norbert Wiener >>> >> >> > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
