# [petsc-users] Solving Linear Systems with Scalar Real and Complex

Mon Jul 23 08:43:01 CDT 2018

```Note, as Barry said, GAMG works with native complex numbers. You can start
with your original complex build and use '-pc_type gamg'.
Mark

On Mon, Jul 23, 2018 at 6:52 AM Pierpaolo Minelli <pierpaolo.minelli at cnr.it>
wrote:

>
>
> > Il giorno 20 lug 2018, alle ore 19:58, Smith, Barry F. <
> bsmith at mcs.anl.gov> ha scritto:
> >
> >
> >
> >> On Jul 20, 2018, at 7:01 AM, Pierpaolo Minelli <
> pierpaolo.minelli at cnr.it> wrote:
> >>
> >> Hi,
> >>
> >> in my code I have to solve both a system in the field of real numbers
> and in the field of complex numbers.
> >> My approach has been as follows.
> >> First I configured PETSc with the --with-scalar-type=complex option.
> >> Using this option I have unfortunately lost the possibility to use the
> two preconditioners ML and Hypre.
> >
> >    You should still be able to use the PETSc PCGAMG algebraic multigrid
> solver. Have you tried that? If there are issues let us know because we
> would like to continue to improve the performance of PCGAMG to get it to be
> closer to as good as ML and hypre.
> >
> >   Barry
> >
>
> I will try to convert, as suggested by Matthew, my complex system in a
> system twice as large in real numbers. When i finish, i will try to use ML,
> Hypre and GAMG and i let you know if there are any performance differences.
>
> Thanks
>
> Pierpaolo
>
>
> >> I later created two subspaces of Krylov and tried to solve the two
> systems as I used to when solving the only equation in the real numbers
> field.
> >> In order to correctly solve the system in the field of real numbers I
> had to transform the coefficients from real to complex with an imaginary
> part equal to zero.
> >>
> >> Is there a possibility to use a different and better approach to solve
> my problem?
> >>
> >> Perhaps an approach where you can continue to use ML and Hypre for
> system solving in the real numbers field or where you don't need to use
> complex numbers when real numbers would actually suffice?
> >>