# Re: [petsc-users] Finding NullSpaces of Jacobian and TransposeJacobian

```
> On Apr 12, 2018, at 10:43 AM, Ali Berk Kahraman <aliberkkahra...@yahoo.com>
> wrote:
>
> Dear Barry,
>
> Thank you very very much for your response.
>
> Unfortunately, I use finite differences on an unstructured grid, so my matrix
> is not symmetric.
>
> That is exactly why I want to know the null space, so I can remove it from
> the RHS vector. Or as I understand it from the online documentation, so petsc
> can solve a least-squares problem using a MatNullSpace object. You suggestion
> should also work. I am fine with all of these methods. The problem is, I
> still have to know the left null space, or its norm in your suggestion, to
> use these methods.```
```
I don't think you need to know the null space. As I said, just run GMRES
until the residual norm becomes fixed (but non-zero) and you have your
solution. No need to remove the transpose null space from the right hand side
initially.

Barry

>
>
> On 12-04-2018 17:37, Smith, Barry F. wrote:
>>    A few thoughts,
>>
>>
>>> On Apr 12, 2018, at 7:47 AM, Ali Berk Kahraman <aliberkkahra...@yahoo.com>
>>> wrote:
>>>
>>> Dear All,
>>>
>>> I am trying to solve a Poisson problem with a known source function with
>>> all Neumann BCs.
>>    If you are using finite elements then the matrix should be symmetric and
>> hence its transpose nullspace is the same as the original matrix.
>>
>>    Presumably you want to know the transpose null space so you can remove it
>> from the right hand side to get a consistent linear system? With
>> GMRES you don't need to actually remove it from the right hand side. Just
>> apply GMRES to the inconsistent system, what will happen, if you
>> use a good preconditioner is that GMRES will converge to a solution that
>> minimizes the residual. So the residual norm will not be zero but the
>> solution to GMRES is a valid solution to the linear system. In fact the
>> "left over" residual will be in the null space of the transpose; in your
>> case it will be the null space (since it is one dimensional).
>>
>>    Barry
>>
>>
>>> Hence, I know that my problem does not always have a solution, at those
>>> times it has a transpose nullspace of one vector. If I know that vector, I
>>> can inform petsc of its existence using a MatNullSpace object.
>>>
>>> Currently, I am trying to find the nullspace vector by solving a linear
>>> system where TrJacobian*nullvec = e, but an arbitrary row of the TrJacobian
>>> (ith row) is replaced with all zeros except for the ith column, and every
>>> entry of e is 0 except for the ith entry which is 1. However, sometimes the
>>> KSP that solves this either does not converge, or even if it converges the
>>> nullvec it creates does not help with the original problem's ksp.
>>>
>>> Is there a more reliable way to find the transpose nullspace of a matrix?
>>>
>>> Best Regards,
>>>
>>> Ali Berk Kahraman
>>> M.Sc. Student, Mechanical Eng.
>>> Bogazici Uni. Istanbul, Turkey
>>>
>

```