[petsc-users] Finding NullSpaces of Jacobian and TransposeJacobian

Ali Berk Kahraman aliberkkahraman at yahoo.com
Thu Apr 12 10:43:03 CDT 2018


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.


On 12-04-2018 17:37, Smith, Barry F. wrote:
>     A few thoughts,
>
>
>> On Apr 12, 2018, at 7:47 AM, Ali Berk Kahraman <aliberkkahraman at 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
>>



More information about the petsc-users mailing list