Dear Matt,<br />  Following your suggestions, I modified the VecView_VTK in /src/ksp/ksp/example/tutorial/ex29.c to <br /><br />  PetscFunctionBegin;<br />  PetscViewerASCIIOpen(comm, filename, &viewer);<br />  PetscViewerSetFormat(viewer, PETSC_VIEWER_ASCII_MATLAB);<br />  DMView(x, viewer);<br />  VecView(x, PETSC_VIEWER_STDOUT_WORLD);<br />  PetscViewerDestroy(&viewer);<br />  PetscFunctionReturn(0);<br /><br />  However, I always give me some error. Could you please briefly check if there is any obvious coding problem here.<br /><br />thanks,<br />Alan<br /><br />On , Matthew Knepley &lt;knepley@gmail.com&gt; wrote:<br />&gt; On Thu, Jun 9, 2011 at 6:18 PM, Matthew Knepley knepley@gmail.com&gt; wrote:<br />&gt; <br />&gt; On Thu, Jun 9, 2011 at 6:01 PM,  zhenglun.wei@gmail.com&gt; wrote:<br />&gt; <br />&gt; <br />&gt; Dear Sir/Madam,<br />&gt;     I&#39;m still studying on the ex29 of /src/ksp/ksp/example/tutorial. Before I met a problem on VecView_VTK in parallel computation. I&#39;m trying to modify it in order to output some data from the computation. <br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt; Here is a better answer. If you want output, throw away this old function which is broken, and use<br />&gt; <br />&gt; <br />&gt;   PetscViewerASCIIOpen()<br />&gt;   PetscViewerASCIISetFormat(PETSC_VIEWER_ASCII_VTK)<br />&gt; <br />&gt;   DMView()<br />&gt;   VecView()<br />&gt;   PetscViewerDestroy()<br />&gt; <br />&gt; <br />&gt;     Thanks,<br />&gt; <br />&gt; <br />&gt;        Matt<br />&gt;  <br />&gt; <br />&gt; 1) My  first questions is that what does this section do in VecView_VTK:<br />&gt; <br />&gt; 272:   MPI_Comm_rank(comm, &rank);<br />&gt; <br />&gt; 273:   MPI_Comm_size(comm, &size);<br />&gt; 274:   MPI_Reduce(&n, &maxn, 1, MPIU_INT, MPI_MAX, 0, comm);<br />&gt; <br />&gt; 275:   tag  = ((PetscObject) viewer)-&gt;tag;<br />&gt; 276:   if (!rank) {<br />&gt; 277:     PetscMalloc((maxn+1) * sizeof(PetscScalar), &values);<br />&gt; 278:     for(i = 0; i  279:       PetscViewerASCIIPrintf(viewer, &quot;%G\n&quot;, PetscRealPart(array[i]));<br />&gt; <br />&gt; <br />&gt; 280:     }<br />&gt; 281:     for(p = 1; p  282:       MPI_Recv(values, (PetscMPIInt) n, MPIU_SCALAR, p, tag, comm, &status);<br />&gt; 283:       MPI_Get_count(&status, MPIU_SCALAR, &nn);<br />&gt; 284:       for(i = 0; i  <br />&gt; <br />&gt; 285:         PetscViewerASCIIPrintf(viewer, &quot;%G\n&quot;, PetscRealPart(array[i]));<br />&gt; 286:       }<br />&gt; 287:     }<br />&gt; 288:     PetscFree(values);<br />&gt; 289:   } else {<br />&gt; 290:     MPI_Send(array, n, MPIU_SCALAR, 0, tag, comm);<br />&gt; <br />&gt; <br />&gt; 291:   }<br />&gt; <br />&gt;     What I understand is: it gather all the data from different process in parallel computation, and output it to the &#39;viewer&#39;. I comment out everything in VecView_VTK except this part, there is no error message coming up in my parallel computation so far. <br />&gt; <br />&gt; <br />&gt; <br />&gt; 2) however, I really don&#39;t know how did it split the domain for parallel computation. For example, if I use 4 processes, is the domain split like:<br />&gt; <br />&gt; <br />&gt; The DMDA describes the domain splitting.<br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt;    Matt<br />&gt;  <br />&gt;  a) <br />&gt;                |<br />&gt;        0      |       1  <br />&gt;                |<br />&gt; <br />&gt; <br />&gt; ---------------|--------------<br />&gt;                | <br />&gt;        2      |       3<br />&gt;                |<br />&gt; <br />&gt;  b) <br />&gt;                |<br />&gt;        0      |       2  <br />&gt;                |<br />&gt; ---------------|--------------<br />&gt;                | <br />&gt; <br />&gt; <br />&gt;        1      |       3<br />&gt;                |<br />&gt; <br />&gt;  c) <br />&gt;       |     |    |      |<br />&gt;       |     |    |      |<br />&gt;    0 |     |  2 |     |<br />&gt;       |  1 |     |  3 |<br />&gt;       |     |     |     |<br />&gt;       |     |     |     |<br />&gt; <br />&gt; <br />&gt; <br />&gt; d)<br />&gt;           0<br />&gt; ------------------------<br />&gt;           1<br />&gt; ------------------------<br />&gt;           2<br />&gt; ------------------------<br />&gt;           3<br />&gt; <br />&gt; thanks in advance,<br />&gt; Alan<br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt; -- <br />&gt; What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br />&gt; -- Norbert Wiener<br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt; -- <br />&gt; What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br />&gt; -- Norbert Wiener<br />&gt;