2010/4/16 陈乐平(Leping Chen) <span dir="ltr">&lt;<a href="mailto:chenleping@yahoo.cn">chenleping@yahoo.cn</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">




<div style="margin:10px;font-family:verdana;font-size:10pt">
<div><font color="#0000ff" size="3" face="Verdana">petsc teams,</font></div>
<div><font color="#0000ff" size="3"></font>&nbsp;</div>
<div><font color="#0000ff" size="3">if I want create the relation between u() <font color="#333333">[array]</font> and x <font color="#333333">[Vec] ,</font><font color="#0000ff">I can do it as follows,</font></font></div>

<div><font color="#333333" size="3"></font>&nbsp;</div>
<div><font color="#ff6600" size="3" face="Verdana"><font size="2">#define&nbsp;u(ib)&nbsp;&nbsp;xx_v(xx_i&nbsp;+&nbsp;(ib))</font> 
</font></div>
<div>
<div><font color="#ff6600">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
call&nbsp;VecGetArray(x,xx_v,xx_i,ierr)</font></div>
<div><font color="#ff6600">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;30&nbsp;i=1,n</font></div>
<div><font color="#ff6600">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u(i)&nbsp;=&nbsp;1000.0*i</font></div>
<div><font color="#ff6600">&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;continue</font></div>
<div><font color="#ff6600"></font></div>
<div><font color="#ff6600">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;VecRestoreArray(x,xx_v,xx_i,ierr)</font></div>
<div><font color="#ff6600"></font>&nbsp;</div></div>
<div><font color="#0000ff" size="3" face="Verdana">However,&nbsp;I don&#39;t understand 
why can not I do it as follows,</font></div>
<div><font color="#0000ff" size="3"></font>&nbsp;</div>
<div><font color="#0000ff" size="3"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff6600" size="2">double precision u(1) <font color="#000000">or 
u(6)</font></font></font></div>
<div><font color="#0000ff" size="3"><font color="#ff6600" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
call&nbsp;VecGetArray(x,u,xx_i,ierr)</font></font></div>
<div><font color="#ff6600" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;30&nbsp;i=1,n</font></div>
<div><font color="#ff6600" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u(i)&nbsp;=&nbsp;1000.0*i</font></div>
<div><font color="#ff6600" size="2">&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;continue</font></div>
<div><font color="#ff6600" size="2"></font></div>
<div><font color="#ff6600" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;VecRestoreArray(x,u,xx_i,ierr)</font></div>
<div><font color="#ff6600" size="2"></font>&nbsp;</div>
<div align="left"><font color="#0000ff" size="3" face="Verdana">&nbsp;Why u() must be 
created by #define, and u() cannot be defined again,for example &quot;double 
precision u(1)&quot; or u(5).</font></div></div></blockquote><div><br></div><div>1) It does not have to be #define. This is shown for convenience.</div><div><br></div><div>2) You must still declare xx_v in your first example, probably exactly as you</div>
<div>&nbsp;&nbsp; &nbsp;declare u in your second example.</div><div><br></div><div>These are not PETSc questions. They are basic Fortran programming questions.</div><div>There are many excellent books on this.</div><div><br></div><div>&nbsp;&nbsp; &nbsp;Matt</div>
<div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="margin:10px;font-family:verdana;font-size:10pt"><div align="left"><font color="#0000ff" size="3" face="Verdana"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: verdana; font-size: 13px; ">&nbsp;</span></font></div>

<div align="left"><font color="#0000ff" size="3" face="Verdana"><span>By the way, if u() 
is a array of common blocks<font color="#000000">(fortran),</font> how can I 
create the relation between u() and x?</span></font></div>
<div align="left"><font color="#0000ff" size="3" face="Verdana"><span></span></font>&nbsp;</div>
<div align="left"><font color="#0000ff" size="3" face="Verdana"><span>thanks,</span></font></div>
<div align="left">
<div><font size="2" face="Verdana"></font><font color="#0000ff" size="3" face="华文行楷"></font>&nbsp;</div>
<div><font face="华文行楷">Leping</font>&nbsp;</div></div><font size="2" face="Verdana"><font color="#0000ff" size="3">
<hr style="width:122px;min-height:2px" align="left" size="2">
</font>
<div><font color="#0000ff" size="3" face="Verdana">&nbsp;2010-04-16</font></div>
<div>&nbsp;</div></font></div>
</blockquote></div><br><br clear="all"><br>-- <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<br>