[petsc-users] Nullspaces for schur complement PCs

Lawrence Mitchell lawrence.mitchell at imperial.ac.uk
Fri Nov 7 05:04:59 CST 2014


Hi petsc-dev,

I'm solving a pure Neumann mixed Poisson-like problem, preconditioning with a schur complement.  The pressure space has a nullspace of the constant functions and so I attach the appropriate nullspace to the krylov solver, and compose the constant nullspace with the IS defining the pressure space.  My RHS is consistent.

When I precondition with:

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type full \
-pc_fieldsplit_schur_precondition selfp

I notice that the nullspace is not transferred over to the preconditioning matrix for S.  Is this a deliberate choice?

ksp_view output below, note that the schurcomplement mat has an attached nullspace, but the generated pmat does not.

Cheers,

Lawrence

KSP Object: 1 MPI processes
  type: gmres
    GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
    GMRES: happy breakdown tolerance 1e-30
  maximum iterations=30, initial guess is zero
  tolerances:  relative=1e-07, absolute=1e-50, divergence=10000
  left preconditioning
  has attached null space
  using PRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
  type: fieldsplit
    FieldSplit with Schur preconditioner, factorization FULL
    Preconditioner for the Schur complement formed from Sp, an assembled approximation to S, which uses (the lumped) A00's diagonal's inverse
    Split info:
    Split number 0 Defined by IS
    Split number 1 Defined by IS
    KSP solver for A00 block
      KSP Object:      (fieldsplit_0_)       1 MPI processes
        type: gmres
          GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
          GMRES: happy breakdown tolerance 1e-30
        maximum iterations=10000, initial guess is zero
        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
        left preconditioning
        using PRECONDITIONED norm type for convergence test
      PC Object:      (fieldsplit_0_)       1 MPI processes
        type: ilu
          ILU: out-of-place factorization
          0 levels of fill
          tolerance for zero pivot 2.22045e-14
          matrix ordering: natural
          factor fill ratio given 1, needed 1
            Factored matrix follows:
              Mat Object:               1 MPI processes
                type: seqaij
                rows=72, cols=72
                package used to perform factorization: petsc
                total: nonzeros=1080, allocated nonzeros=1080
                total number of mallocs used during MatSetValues calls =0
                  using I-node routines: found 23 nodes, limit used is 5
        linear system matrix = precond matrix:
        Mat Object:        (fieldsplit_0_)         1 MPI processes
          type: seqaij
          rows=72, cols=72
          total: nonzeros=1080, allocated nonzeros=0
          total number of mallocs used during MatSetValues calls =0
            using I-node routines: found 23 nodes, limit used is 5
    KSP solver for S = A11 - A10 inv(A00) A01 
      KSP Object:      (fieldsplit_1_)       1 MPI processes
        type: gmres
          GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
          GMRES: happy breakdown tolerance 1e-30
        maximum iterations=10000, initial guess is zero
        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
        left preconditioning
        using PRECONDITIONED norm type for convergence test
      PC Object:      (fieldsplit_1_)       1 MPI processes
        type: ilu
          ILU: out-of-place factorization
          0 levels of fill
          tolerance for zero pivot 2.22045e-14
          matrix ordering: natural
          factor fill ratio given 1, needed 1
            Factored matrix follows:
              Mat Object:               1 MPI processes
                type: seqaij
                rows=24, cols=24
                package used to perform factorization: petsc
                total: nonzeros=216, allocated nonzeros=216
                total number of mallocs used during MatSetValues calls =0
                  using I-node routines: found 8 nodes, limit used is 5
        linear system matrix followed by preconditioner matrix:
        Mat Object:        (fieldsplit_1_)         1 MPI processes
          type: schurcomplement
          rows=24, cols=24
            has attached null space
            Schur complement A11 - A10 inv(A00) A01
            A11
              Mat Object:              (fieldsplit_1_)               1 MPI processes
                type: seqaij
                rows=24, cols=24
                total: nonzeros=72, allocated nonzeros=0
                total number of mallocs used during MatSetValues calls =0
                  has attached null space
                  using I-node routines: found 8 nodes, limit used is 5
            A10
              Mat Object:               1 MPI processes
                type: seqaij
                rows=24, cols=72
                total: nonzeros=288, allocated nonzeros=0
                total number of mallocs used during MatSetValues calls =0
                  using I-node routines: found 8 nodes, limit used is 5
            KSP of A00
              KSP Object:              (fieldsplit_0_)               1 MPI processes
                type: gmres
                  GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
                  GMRES: happy breakdown tolerance 1e-30
                maximum iterations=10000, initial guess is zero
                tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
                left preconditioning
                using PRECONDITIONED norm type for convergence test
              PC Object:              (fieldsplit_0_)               1 MPI processes
                type: ilu
                  ILU: out-of-place factorization
                  0 levels of fill
                  tolerance for zero pivot 2.22045e-14
                  matrix ordering: natural
                  factor fill ratio given 1, needed 1
                    Factored matrix follows:
                      Mat Object:                       1 MPI processes
                        type: seqaij
                        rows=72, cols=72
                        package used to perform factorization: petsc
                        total: nonzeros=1080, allocated nonzeros=1080
                        total number of mallocs used during MatSetValues calls =0
                          using I-node routines: found 23 nodes, limit used is 5
                linear system matrix = precond matrix:
                Mat Object:                (fieldsplit_0_)                 1 MPI processes
                  type: seqaij
                  rows=72, cols=72
                  total: nonzeros=1080, allocated nonzeros=0
                  total number of mallocs used during MatSetValues calls =0
                    using I-node routines: found 23 nodes, limit used is 5
            A01
              Mat Object:               1 MPI processes
                type: seqaij
                rows=72, cols=24
                total: nonzeros=288, allocated nonzeros=0
                total number of mallocs used during MatSetValues calls =0
                  using I-node routines: found 23 nodes, limit used is 5
        Mat Object:         1 MPI processes
          type: seqaij
          rows=24, cols=24
          total: nonzeros=216, allocated nonzeros=216
          total number of mallocs used during MatSetValues calls =0
            using I-node routines: found 8 nodes, limit used is 5
  linear system matrix = precond matrix:
  Mat Object:   1 MPI processes
    type: nest
    rows=96, cols=96
      has attached null space
      Matrix object: 
        type=nest, rows=2, cols=2 
        MatNest structure: 
        (0,0) : prefix="fieldsplit_0_", type=seqaij, rows=72, cols=72 
        (0,1) : type=seqaij, rows=72, cols=24 
        (1,0) : type=seqaij, rows=24, cols=72 
        (1,1) : prefix="fieldsplit_1_", type=seqaij, rows=24, cols=24 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20141107/d363d75e/attachment.pgp>


More information about the petsc-users mailing list