<head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
#pfptBanneracnmlir { all: revert !important; display: block !important;
visibility: visible !important; opacity: 1 !important;
background-color: #D0D8DC !important;
max-width: none !important; max-height: none !important }
.pfptPrimaryButtonacnmlir:hover, .pfptPrimaryButtonacnmlir:focus {
background-color: #b4c1c7 !important; }
.pfptPrimaryButtonacnmlir:active {
background-color: #90a4ae !important; }
</style>
<!-- BaNnErBlUrFlE-HeAdEr-end -->
</head><!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">
I need to export complex vectors data from PETSc and read them in MATLAB. However, I am encountering some issues with the data format and interpretation in MATLAB. code-snippet of the vector data export section: // Assemble the vectors before
</div>
<!-- Preheader Text : END -->
<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerStart</div>
<!--[if ((ie)|(mso))]>
<table border="0" cellspacing="0" cellpadding="0" width="100%" style="padding: 16px 0px 16px 0px; direction: ltr" ><tr><td>
<table border="0" cellspacing="0" cellpadding="0" style="padding: 0px 10px 5px 6px; width: 100%; border-radius:4px; border-top:4px solid #90a4ae;background-color:#D0D8DC;"><tr><td valign="top">
<table align="left" border="0" cellspacing="0" cellpadding="0" style="padding: 4px 8px 4px 8px">
<tr><td style="color:#000000; font-family: 'Arial', sans-serif; font-weight:bold; font-size:14px; direction: ltr">
This Message Is From an External Sender
</td></tr>
<tr><td style="color:#000000; font-weight:normal; font-family: 'Arial', sans-serif; font-size:12px; direction: ltr">
This message came from outside your organization.
</td></tr>
</table>
</td></tr></table>
</td></tr></table>
<![endif]-->
<![if !((ie)|(mso))]>
<div dir="ltr" id="pfptBanneracnmlir" style="all: revert !important; display:block !important; text-align: left !important; margin:16px 0px 16px 0px !important; padding:8px 16px 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; background-color: #D0D8DC !important; background-color: #D0D8DC; border-top: 4px solid #90a4ae !important; border-top: 4px solid #90a4ae;">
<div id="pfptBanneracnmlir" style="all: unset !important; float:left !important; display:block !important; margin: 0px 0px 1px 0px !important; max-width: 600px !important;">
<div id="pfptBanneracnmlir" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-weight:bold !important; font-weight:bold; font-size:14px !important; line-height:18px !important; line-height:18px">
This Message Is From an External Sender
</div>
<div id="pfptBanneracnmlir" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-weight:normal; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size:12px !important; line-height:18px !important; line-height:18px; margin-top:2px !important;">
This message came from outside your organization.
</div>
</div>
<div style="clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important; height: 0px"> </div>
</div>
<![endif]>
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerEnd</div>
<!-- Email Banner : END -->
<!-- BaNnErBlUrFlE-BoDy-end -->
<div dir="ltr">I need to export complex vectors data from PETSc and read them in MATLAB. However, I am encountering some issues with the data format and interpretation in MATLAB. <br><div><br></div><div>code-snippet of the vector data export section:</div><div>// Assemble the vectors before exporting<br>ierr = VecAssemblyBegin(f); CHKERRQ(ierr);<br>ierr = VecAssemblyEnd(f); CHKERRQ(ierr);<br><br>PetscViewer viewerf;<br>// Save the complex vectors to binary files<br>ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD, "output_f.dat", FILE_MODE_WRITE, &viewerf); CHKERRQ(ierr);<br>ierr = VecView(f, viewerf); CHKERRQ(ierr);<br>ierr = PetscViewerDestroy(&viewerf); CHKERRQ(ierr);<br><br>// Create vectors to store the magnitudes<br>Vec f_magnitude;<br>ierr = VecDuplicate(f, &f_magnitude); CHKERRQ(ierr);<br><br>// Get local portion of the vectors<br>const PetscScalar *f_array;<br>PetscScalar *f_magnitude_array;<br>PetscInt n_local;<br><br>ierr = VecGetLocalSize(f, &n_local); CHKERRQ(ierr);<br>ierr = VecGetArrayRead(f, &f_array); CHKERRQ(ierr);<br>ierr = VecGetArray(f_magnitude, &f_magnitude_array); CHKERRQ(ierr);<br><br>// Compute the magnitude for each element<br>for (int i = 0; i < n_local; i++) {<br> f_magnitude_array[i] = PetscAbsScalar(f_array[i]);<br>}<br><br>// Restore arrays<br>ierr = VecRestoreArrayRead(f, &f_array); CHKERRQ(ierr);<br>ierr = VecRestoreArray(f_magnitude, &f_magnitude_array); CHKERRQ(ierr);<br><br>// Assemble the magnitude vectors<br>ierr = VecAssemblyBegin(f_magnitude); CHKERRQ(ierr);<br>ierr = VecAssemblyEnd(f_magnitude); CHKERRQ(ierr);<br><br>// Save the magnitude vectors to binary files<br>PetscViewer viewerfmag;<br>ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD, "output_f_mag.dat", FILE_MODE_WRITE, &viewerfmag); CHKERRQ(ierr);<br>ierr = VecView(f_magnitude, viewerfmag); CHKERRQ(ierr);<br>ierr = PetscViewerDestroy(&viewerfmag); CHKERRQ(ierr);<br></div><div><br></div><div>In MATLAB, I am using <code>petscBinaryRead</code> to read the data. The complex vectors are read, but only the real part is available. The magnitude vectors are however read as alternating zero and non-zero elements. What went wrong?<br></div><div>How can I export the data correctly to MATLAB-accessible format? (I have not configured PETSc with Matlab as I was encountering library conflict issues)</div></div>