Yes, I compiled with complex data type. <div id="yMail_cursorElementTracker_1487636283885"><br></div><div id="yMail_cursorElementTracker_1487636298460">Is setting imaginary part 0 ok ? Like this:</div><div id="yMail_cursorElementTracker_1487636355246"><br></div><div id="yMail_cursorElementTracker_1487636359447">1.0 ÷ 0.0 * PETSC_i </div><div id="yMail_cursorElementTracker_1487636390682"><br><br><div id="ymail_android_signature"><a href="https://overview.mail.yahoo.com/mobile/?.src=Android">Sent from Yahoo Mail on Android</a></div> <br> <blockquote style="margin: 0 0 20px 0;"> <header style="font-family:Roboto, sans-serif; color:#6D00F6;"> <div>On Tue, 21 Feb 2017 at 0:02, Barry Smith</div><div><bsmith@mcs.anl.gov> wrote:</div> </header> <div style="padding: 10px 0 0 20px; margin: 10px 0 0 0; border-left: 1px solid #6D00F6;"> <div id="msgSandbox_ACHFCmoAACeiWKsTWQTKkOB8jF8_TEXT" class="msgSandbox" style="padding: 1.5em 0.5em 0.5em 1.2em; word-wrap: break-word;"><br clear="none">   PETSc must be configured with --with-scalar-type=complex to use complex numbers. Then all PETSc vectors/matrices contain complex numbers. You cannot mix PETSc objects with real numbers and PETSc objects with complex numbers in the same program.<br clear="none"><br clear="none"><br clear="none">   Barry<br clear="none"><div class="yQTDBase yqt1338944118" id="yqtfd65042"><br clear="none">> On Feb 20, 2017, at 6:27 AM, lixin chu <<a shape="rect" ymailto="mailto:lixin_chu@yahoo.com" href="javascript:return">lixin_chu@yahoo.com</a>> wrote:<br clear="none">> <br clear="none">> Hello,<br clear="none">> Some questions wrt complex number - I have compiled PETSc with complex data type, but having problems of setting/getting the values:<br clear="none">> <br clear="none">> - MatView does not seem to print complex number ? <br clear="none">> <br clear="none">> - Does MATSEQAIJ support row major SetValues for complex number ? I have tested real number, it is ok. I can not get the right values with MatGetRow. Still troubleshooting if it is my program problem...<br clear="none">> <br clear="none">> This is how I set the matrix:<br clear="none">> <br clear="none">>   PetscComplex *buffer; // this is the column data buffer, malloc'ed<br clear="none">> <br clear="none">>   // setting the values<br clear="none">>   buffer [i] = double1 + double2 * PETSC_i;<br clear="none">> <br clear="none">> Then call MatSetValues, passing buffer. <br clear="none">>   <br clear="none">> The program is ok for real numbers, btw.<br clear="none">> <br clear="none">> <br clear="none">> I use a 5x5 matrix, when setting buffer for column 2, I can see these are the data passed to MatSetValues (row, col):<br clear="none">> (0, 2)  1 + 0<br clear="none">> (1, 2)  1 + 0<br clear="none">> (3, 2)  -1 + 0<br clear="none">> <br clear="none">> <br clear="none">> But MatGetRow return:<br clear="none">> (0, 2)  1. + 1. i<br clear="none">> (1, 2)  0. + 1. i<br clear="none">> (3, 2)  1. + 0. i<br clear="none">> <br clear="none">> (I have used MatRestoreRow after MatGetRow).<br clear="none">> <br clear="none">> for ( i = 0; i < rows; i++ ) {<br clear="none">>     MatGetRow ( Z, i, ¤t_doubles, &col_index, &complex_buffer );<br clear="none">>     if ( current_doubles > 0 ) {<br clear="none">>         for ( j = 0; j < current_doubles; j++ ) {<br clear="none">>             PetscPrintf ( PETSC_COMM_WORLD, "(%d, %d)  %g + %g i\n", i, col_index[j], PetscRealPart(complex_buffer[j]), PetscImaginaryPart (complex_buffer[j]) );<br clear="none">>         }<br clear="none">>     }<br clear="none">>     MatRestoreRow( Z, i, ¤t_doubles, &col_index, &complex_buffer );<br clear="none">> }<br clear="none">> <br clear="none">>  <br clear="none">> thanks !<br clear="none">> LX<br clear="none"></div></div> </div> </blockquote></div>