<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 22, 2014 at 10:02 AM, Likun Tan <span dir="ltr"><<a href="mailto:likunt@caltech.edu" target="_blank">likunt@caltech.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>Thanks for your suggestion.  <br>Using VecView or PetscViewerBinaryWrite will print the vec vertically, i.e.</div>
</div></blockquote><div><br></div><div>No it won't. Binary files have no newlines or spaces.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="auto"><div>m1</div><div>m2</div><div>m3</div><div>m4</div><div>m5</div><div>m6</div><div><br></div><div>But I prefer the form</div><div><br></div><div>m1 m2 m3</div><div>m4 m5 m6</div><div><br></div><div>Since in the end I will have about 1e+7 elements in the vec. If there is no way to output the vec in the second form, I will simply use VecView. Thanks.</div>
<div><br>On May 22, 2014, at 10:42 AM, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra">
<div class="gmail_quote">On Thu, May 22, 2014 at 9:32 AM,  <span dir="ltr"><<a href="mailto:likunt@caltech.edu" target="_blank">likunt@caltech.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Dear Petsc developers,<br>
<br>
I am trying to output my vec M={m1 m2 m3 m4 m5 m6 ...} in a form like this:<br>
<br>
m1 m2 m3<br>
m4 m5 m6<br>
...<br>
<br>
Here is my code to do this:<br>
<br>
==================================================================<br>
PetscViewerASCIIOpen(PETSC_COMM_WORLD, NAME, &view);<br>
PetscViewerSetFormat(view, PETSC_VIEWER_ASCII_SYMMODU);<br>
PetscViewerASCIISynchronizedAllow(view, PETSC_TRUE);<br>
for(int step=0; step<STEP; step++)<br>
{<br>
    //calculate M at current step<br>
    DMDAVecGetArray(da, M, &aM);<br>
    DMDAGetCorners(da, &xs, 0, 0, &xm, 0, 0);<br>
    for(int node=xs; node<xs+xm; node++)<br>
    {<br>
       PetscViewerASCIISynchronizedPrintf(view, "%3.12f %3.12f %3.12f\n",<br>
aM[node].x, aM[node].y, aM[node].z);<br>
       PetscViewerFlush(view);<br>
    }<br>
    DMDAVecRestoreArray(da, M, &aM);<br>
}<br>
=================================================================<br>
<br>
but this turns out to be very slow. I am trying to write it in a binary<br>
file, but I cannot find the corresponding functionality (such as<br>
PETSC_VIEWER_ASCII_SYMMODU and PetscViewerASCIISynchronizedPrintf in<br>
binary form).  Thanks.<br>
</blockquote></div><br>There is PetscViewerBindaryWrite(), but what do you really want to do? What you suggest</div><div class="gmail_extra">doing will be very slow. Why not just use PETSc binary output?</div><div class="gmail_extra">

<br></div><div class="gmail_extra">   Matt<span class="HOEnZb"><font color="#888888"><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>

-- Norbert Wiener
</font></span></div></div>
</div></blockquote></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>