> On Apr 12, 2018, at 10:56 AM, Ali Berk Kahraman <aliberkkahra...@yahoo.com> 
> wrote:
> How do I tell that to the KSP object? Is there a direct command or a function?

    Tell the KSP object what? 

    What happens when you run with -ksp_monitor_true_residual ?

    We may not have a good convergence test for this case, since the default 
convergence test wants a residual norm near 0.


> On 12-04-2018 18:54, Smith, Barry F. wrote:
>>> 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

Reply via email to