Hi Pierre,

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

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.