[petsc-dev] PCFIELDSPLIT MATNEST and NULL blocks

Barry Smith bsmith at mcs.anl.gov
Sun Jul 31 17:03:23 CDT 2016

> On Jul 31, 2016, at 4:56 PM, Stefano Zampini <stefano.zampini at gmail.com> wrote:
> It’s the first time I’m trying to setup field split so maybe I’m missing something
> I have a MatNest with NULL (1,1) block. I setup the field split using the row ISs from the MatNest (a note aside: why they cannot be inferred by FieldSplit if pc->pmat is of type MatNEST?)

   Good question, something Jed can fix :-)

> Options used are -pc_fieldsplit_type additive and -pc_fieldsplit_detect_saddle_point

   Hmm, I don't think -pc_fieldsplit_detect_saddle_point makes sense here because that option determines the two index sets based on zeros on the diagonal in the original matrix while you are providing the two index sets yourself directly. Anyways it is probably being ignored, but don't use it.

> I then get this error, because MatGetSubMatrix_Nest returns a NULL pointer.

   Yes I suspect this is a bug; I don't know what Jed's intentions is. The fieldsplit is already way to complicated I hate to see added a bunch of if (!mat) stuff to it.  For now you could, as you say, pass in the correctly sized empty matrix.


> What is the solution? having MatGetSubMatrix_Nest return a zero-valued matrix of correct size? any command line option I’m not using? Or instead having Fieldsplit handle the case?
> [0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
> [0]PETSC ERROR: Null argument, when expecting valid pointer
> [0]PETSC ERROR: Null Object: Parameter # 1
> [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.2-744-gb54d608  GIT Date: 2016-06-28 18:20:20 +0300
> [0]PETSC ERROR: Unknown Name on a debug named kl-13916.local by szampini Sun Jul 31 14:47:53 2016
> [0]PETSC ERROR: Configure options --download-chaco --download-ctetgen --download-exodusii --download-hdf5 --download-hypre --download-metis --download-mpich --download-mumps --download-netcdf --download-p4est --download-parmetis --download-ptscotch --download-scalapack --download-suitesparse --download-triangle --with-valgrind-dir=/usr/local/ CC=/usr/local/bin/gcc-5 CXX=/usr/local/bin/g++-5 FC=/usr/local/bin/gfortran-5 PETSC_ARCH=debug
> [0]PETSC ERROR: #1 MatSetOptionsPrefix() line 654 in /Users/szampini/software/petsc/src/mat/interface/matrix.c
> [0]PETSC ERROR: #2 PCSetUp_FieldSplit() line 558 in /Users/szampini/software/petsc/src/ksp/pc/impls/fieldsplit/fieldsplit.c
> [0]PETSC ERROR: #3 PCSetUp() line 968 in /Users/szampini/software/petsc/src/ksp/pc/interface/precon.c

More information about the petsc-dev mailing list