linear solver for complex matrix
zhifeng sheng
z.sheng at ewi.tudelft.nl
Wed Oct 29 04:53:07 CDT 2008
Hi
Thanks, now it is clear :) I may want to use other solvers, since our
software generates other kind of complex matrices.
Also, I remembered that left preconditioners are used in iterative
solvers as default, so I am confused about what preconditioners are used
for CG, left or "left and right" ?.
PS: is the Petsc development team planning to support it in the next
release?
Thanks a lot
Zhifeng Sheng
Barry Smith wrote:
>
> The PETSc MatMultTranspose(), as you state, does not use conjugate
> transpose, thus the Krylov methods that
> require a conjugate transpose will not work. Unless you change the
> MatMultTranpose() routine.
> In addition, these algorithms use VecDot(), with the complex
> conjugate transpose the order of the arguments to this function
> matter (determining which one is conjugated). The coding for these
> methods was NOT done to use the proper conjugation
> (many of the original references do not include this information). In
> other words PETSc DOES NOT support
> complex conjugate for most of the Krylov methods, I think we already
> said this before.
>
>
> If your matrix is complex hermitian why not just use CG, why would you
> want to use a different Krylov method?
>
> Barry
>
>
>
> On Oct 27, 2008, at 10:11 AM, zhifeng sheng wrote:
>
>> Dear all
>>
>> It looks like something strange is going on for my Petsc (which was
>> built with '--with-scalar-type=complex'.):
>>
>> 1) I got a complex system of equation, with I can solve with CG+SOR .
>> But when I try to use BICGS+SOR to solve it, it never converges.
>>
>> 2) I noticed that the transpose function for complex matrices was not
>> what I was looking for. It really computes the transpose instead of
>> the conjugate transpose which is the "right transpose" for complex
>> matrix.
>>
>> For some linear solvers, e.g. BICG, BCGS, need to compute the
>> transpose of real system matrix (to multiply it with a vector), while
>> they need to compute the conjugate transpose for complex system
>> matrices.
>>
>> So I am wondering whether BICGS+SOR did not converge for my complex
>> matrix because of a bad A^Tx used internally in these linear solvers.
>> Such problem does not exist for CG+SOR, therefore, CG+SOR converged.
>>
>> PS: I sent some emails about this problem before, but I guess I did
>> not make myself clear :o
>>
>> Thanks a lot
>> Best regards
>> Zhifeng Sheng
>>
>> Hong Zhang wrote:
>>> Zhifeng,
>>>
>>> Petsc's linear solvers, including
>>> the external packages (e.g., superlu, mumps, and spooles)
>>> all support complex precision,
>>> simply configure petsc library with
>>> '--with-scalar-type=complex'.
>>>
>>>> How can I make the other linear solvers work for complex system? I
>>>> think if only I can make the transpose function a little different
>>>> then they should work. but I don't know where I should start.
>>>>
>>>> Did anyone have similar problem with the linear solvers for complex
>>>> system before (the linear solver for complex system needs conjugate
>>>> transpose)? and how could you solve it?
>>>
>>> Why do you need conjugate transpose for using petsc solver?
>>> Do you develop your onw solver for Hermitian matrix?
>>> We do not have some basic matrix operations for Hermitian matrix yet,
>>> e.g., MatMult_Hermitian() when only half of the matrix entries
>>> are stored. You need implement this operation for your onw
>>> solver.
>>>
>>> If you use petsc AIJ matrix format, all complex linear solvers
>>> should work. Storing half of entries is not as efficient
>>> as entire matrix when you have sufficient memory space.
>>>
>>> Hong
>>>
>>>>
>>>> Thanks a lot
>>>> Best regards
>>>> Zhifeng Sheng
>>>>
>>>>
>>>
>>
>
More information about the petsc-users
mailing list