[petsc-dev] PCFIELDSPLIT MATNEST and NULL blocks

Barry Smith bsmith at mcs.anl.gov
Sun Jul 31 17:11:14 CDT 2016

> On Jul 31, 2016, at 4:58 PM, Matthew Knepley <knepley at gmail.com> wrote:
> On Sun, 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?)
> Options used are -pc_fieldsplit_type additive and -pc_fieldsplit_detect_saddle_point
> You don't need ISes is you use detect_saddle_point, so use one or the other.
> I then get this error, because MatGetSubMatrix_Nest returns a NULL pointer.
> 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?
> I think have Nest return a real matrix is the right solution, since this is what will happen with other types.

   We could perhaps provide a MATNULL type which is an implementation of Mat that supports MatMult() etc for an empty matrix and get rid of the concept of a NULL being in the Nested structure.

I don't like MatCreateNest(MPI_Comm comm,PetscInt nr,const IS is_row[],PetscInt nc,const IS is_col[],const Mat a[],Mat *B) taking in Mat arguments that you built; rather based on the ISs it should create properly sized empty matrices with a MATNULL type set and then I think you should call MatNestGetSubMat(s) to set the types you want and provide preallocation information etc.


>    Matt
> [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
> -- 
> 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

More information about the petsc-dev mailing list