-----BEGIN
            PGP SIGNED MESSAGE-----
            Hash: SHA1
            
            On 21/10/15 14:32, Anna Kalogirou wrote:
            > But the matrix A has the same form as C, namely it has
            nonzero
            > variables in a block submatrix only.
            
            Ah, oops, I see.
            
            So because you're using an iterative solver without any
            preconditioning, the operator is never being inverted
            directly (hence
            you never get zero pivot errors in an LU factorisation). 
            Your
            operator just has a gigantic null space.  If the right hand
            side is
            consistent you might get lucky in that the Krylov solver can
            just
            explore the space orthogonal to the null space (and you end
            up with a
            solution in that subspace).
            
            I guess what you really want to do is only solve the problem
            in the
            region where the heaviside function is nonzero, but we don't
            currently
            have proper support for this.  I guess if you want to be
            able to
            invert the system somehow, we can add the identity matrix to
            the zero
            block and (presumably) zero the right hand side in the
            appropriate rows.
          
          
          
          Note that this is equivalent to prescribing a dirichlet
            BC everywhere in the 0 block.
           
          
            
            Lawrence
            
            >
            > On 21/10/15 14:26, Lawrence Mitchell wrote: On 21/10/15
            14:14, Anna
            > Kalogirou wrote:
            >>>> Dear Lawrence,
            >>>>
            >>>> I believe the code (attached) sets up the
            >>>> matrices/vectrors/operators correctly.
            However, I have one
            >>>> question: Due to the use of a heavyside
            function, the
            >>>> operator B on the LHS is nonzero in a block
            NxN, say, in the
            >>>> bottom right corner. For that reason, when
            I solved the
            >>>> linear system in Matlab I only considered
            these nonzero
            >>>> values in the block, because otherwise the
            LHS would not be
            >>>> invertible. How come and it doesn't
            complain here?
            > So it's clear that the matrix C = Q1*Q2^T is not
            invertible,
            > however, presumably you're solving for:
            >
            > B = A + C
            >
            > where A is full rank and invertible.  So I don't
            immediately see
            > why there would be a problem in trying to invert B
            which is what
            > the solver does.
            >
            > Lawrence
            >
            >>
            >> _______________________________________________
            firedrake mailing
            >> list firedrake@imperial.ac.uk
            >> https://mailman.ic.ac.uk/mailman/listinfo/firedrake
            >
            
            -----BEGIN PGP SIGNATURE-----
            Version: GnuPG v2.0.22 (GNU/Linux)
            
iQEcBAEBAgAGBQJWJ5o0AAoJECOc1kQ8PEYvxpAH/AmnOnhCRU+gVH5Yxjf76jhE
evR42Oie1wLnZPjgP1CeYpbb/QaMk9i6X3TMWN7fgTIheoIIQMusu7a1rl7oMCdN
RzUcVyXACNd4lcKT/SpSm2AcQxHkf1rLGzXsU1R8OoCqj+gFPWuLkCX0QX1gzWWe
OGd47c1v+QbFzJgTUbI/2ivd3ACYnBGkHHuDapFYQYJvCyCF0aAdDrsDWu5EruIJ
Xt7wUCbtcauEFih3WnDKDO1e7GwERyTbFhrnHWwqqcjIbDRFl6ENr6mrkduN1r/3
78d+4YdUabyx1Yq9C8P0srAsOAshpYYcTViVAemLcMC8LoCqILW3o/n9GnW7ntU=
            =L2Fs
            -----END PGP SIGNATURE-----
            
            _______________________________________________
            firedrake mailing list
            firedrake@imperial.ac.uk
            https://mailman.ic.ac.uk/mailman/listinfo/firedrake