On May 11, 2021, at 3:08 PM, Frederico Teixeira <teixeira@zmt.swiss> wrote:

Hi Pierre,

Thanks for your tip.
I don't have access to MATLAB. Would Octave also work? Or Python?

   Yes, they should both be fine. All you need to is split the matrix into the 2 matrices in Octave or Python and then save both of them with the PETSc real format configure.

  Barry


Regards,
 Frederico.

Dr. Frederico Teixeira
Computational Modeler and Software Developer, ZMT (member of Zurich43)

P +41 44 245 9698
Zeughausstrasse 43, 8004 Zurich, Switzerland



From: "Pierre Jolivet" <pierre@joliv.et>
To: "Frederico Teixeira" <teixeira@zmt.swiss>
Cc: "petsc-users" <petsc-users@mcs.anl.gov>
Sent: Tuesday, May 11, 2021 6:03:20 PM
Subject: Re: [petsc-users] Binary format in real vs. complex scalar type configurations

Hello Frederico,
I’m not sure that’s possible.
Here is what I do, it makes me sick, but mixing precisions/scalar types with PETSc is difficult (crossing my fingers this will be better with future).
In MATLAB (after putting petsc/share/petsc/matlab in the path):
A = PetscBinaryRead('your_binary_mat_with_re+im.dat','complex',true); % scalar-type=complex
PetscBinaryWrite('re.dat',real(A)); % scalar-type=real
PetscBinaryWrite('im.dat',imag(A)); % scalar-type=real

Thanks,
Pierre

On 11 May 2021, at 3:30 PM, Frederico Teixeira <teixeira@zmt.swiss> wrote:

Dear fellows,

I hope this message finds you safe and well.

I have a complex-valued matrix and its real/imaginary components in binary format. They were extracted from a solver that only works with "scalar-type=complex" configuration.
I am getting weird results when I load them into a small test program that's configured with "scalar-type=real", but I believe this is expected.
At the end of the day, I would like to have both real and imaginary components as real-valued matrices.
Is it possible to do it? I want to test preconditioners that are tailored for this sort of problem.

Regards,
 Frederico.