Dear Barry,<div>    That is really a great idea, and it is something that I want. I&#39;ve never noticed that the structure in C is so marvelous. However, I have a further question. In that example, a variable x is defined like Field **x, and <span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); font-size: medium; "><a href="http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-2.3.2/docs/manualpages/DA/DAVecGetArray.html#DAVecGetArray">DAVecGetArray</a></span><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); font-size: medium; ">(da,X,&amp;x). I wonder if there is any relationship between da, X and x after using DAVecGetArray. Or it just a prerequisite for using the nice notation of &#39;x&#39;.</span></div>
<div><font class="Apple-style-span" face="monospace" size="3"><span class="Apple-style-span" style="white-space: pre;"><br></span></font></div><div><font class="Apple-style-span" face="monospace" size="3"><span class="Apple-style-span" style="white-space: pre;">thanks,<br>
</span></font></div><div><font class="Apple-style-span" face="monospace" size="3"><span class="Apple-style-span" style="white-space: pre;">Alan<br></span></font></div><div><div class="gmail_quote"><br></div><div class="gmail_quote">
On Thu, Aug 18, 2011 at 9:09 PM, Barry Smith <span dir="ltr">&lt;<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
  Alan,<br>
<br>
   I&#39;m not sure what you are getting at but we commonly use tricks like (see src/snes/examples/tutorials/ex19.c)<br>
<br>
typedef struct {<br>
  PetscScalar u,v,omega,temp;<br>
} Field;<br>
<br>
 Then in this case use a DMDAVecGetArray() to get f and x and then have nice notation like<br>
<br>
      f[j][i].u     = x[j][i].u;<br>
      f[j][i].v     = x[j][i].v;<br>
      f[j][i].omega = x[j][i].omega - (x[j][i+1].v - x[j][i].v)*dhx;<br>
      f[j][i].temp  = x[j][i].temp;<br>
<br>
note that this means the values are stored interlaced in the vector.<br>
<font color="#888888"><br>
   Barry<br>
</font><div><div></div><div><br>
On Aug 18, 2011, at 9:03 PM, Alan Wei wrote:<br>
<br>
&gt; Dear All,<br>
&gt;     I&#39;m trying to &#39;draw&#39; a 2-D cylinder in PETSc. It simply restore the x and y coordinate values in two arrays. I wonder if I can use Vec in PETSc to implement it (i.e. defining a vec circle) so that I can call its x or y coordinate by circle.x or circle.y. Is this possible? also, is this a better way than just defining it as two arrays, i.e. x[ ] and y[ ].<br>


&gt;<br>
&gt; thanks in advance,<br>
&gt; Alan<br>
<br>
</div></div></blockquote></div><br></div>