All the solvers/matrices/vectors works for PetscScalar types (i.e. in your case 
complex)
If you need to solve for the real part only, you can duplicate the matrix and 
call MatRealPart to zero out the imaginary part. But the solve will always run 
in the complex space
You should not be worried about doubling the memory for a matrix (i.e. real and 
imaginary part)


> On May 26, 2020, at 11:28 PM, Sam Guo <sam....@cd-adapco.com> wrote:
> 
> complex version is needed since matrix sometimes is real and sometimes is 
> complex. I want to solve real matrix without allocating memory for imaginary 
> part((except eigen pairs).
> 
> On Tuesday, May 26, 2020, Zhang, Hong <hzh...@mcs.anl.gov 
> <mailto:hzh...@mcs.anl.gov>> wrote:
> You can build PETSc with complex version, and declare some variables as 
> 'PETSC_REAL'.
> Hong
> 
> From: petsc-users <petsc-users-boun...@mcs.anl.gov 
> <mailto:petsc-users-boun...@mcs.anl.gov>> on behalf of Sam Guo 
> <sam....@cd-adapco.com <mailto:sam....@cd-adapco.com>>
> Sent: Tuesday, May 26, 2020 1:00 PM
> To: PETSc <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>>
> Subject: [petsc-users] using real and complex together
>  
> Dear PETSc dev team,
>    Can I use both real and complex versions together?
> 
> Thanks,
> Sam

Reply via email to