<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, May 6, 2014 at 7:23 AM, Püsök, Adina-Erika <span dir="ltr"><<a href="mailto:puesoek@uni-mainz.de" target="_blank">puesoek@uni-mainz.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word">
Hello!
<div><br>
</div>
<div>I was trying to implement some internal Dirichlet boundary conditions into an aij matrix of the form:  A=(  VV  VP; PV PP ). The idea was to create an internal block (let's say Dirichlet block) that moves with constant velocity within the domain (i.e.
 check all the dofs within the block and set the values accordingly to the desired motion).</div>
<div><br>
</div>
<div>Ideally, this means to zero the rows and columns in VV, VP, PV corresponding to the dirichlet dofs and modify the corresponding rhs values. However, since we have submatrices and not a monolithic matrix A,  we can choose to modify only VV and PV matrices. </div>

<div>The global indices of the velocity points within the Dirichlet block are contained in the arrays rowid_array. </div>
<div><br>
</div>
<div>What I want to point out is that the function MatZeroRowsColumnsIS() seems to create parallel artefacts, compared to MatZeroRowsIS() when run on more than 1 processor. Moreover, the results on 1 cpu are identical. </div>

<div>See below the results of the test (the Dirichlet block is outlined in white) and the piece of the code involved where the 1) - 2) parts are the only difference. </div></div></blockquote><div><br></div><div>I am assuming that you are showing the result of solving the equations. It would be more useful, and presumably just as easy</div>
<div>to say:</div><div><br></div><div>  a) Are the correct rows zeroed out?</div><div><br></div><div>  b) Is the diagonal element correct?</div><div><br></div><div>  c) Is the rhs value correct?</div><div><br></div><div>  d) Are the columns zeroed correctly?</div>
<div><br></div><div>If we know where the problem is, its easier to fix. For example, if the rhs values are</div><div>correct and the rows are zeroed, then something is wrong with the solution procedure.</div><div>Since ZeroRows() works and ZeroRowsColumns() does not, this is a distinct possibility.</div>
<div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">

<div>Thanks,</div>
<div>Adina Pusok</div>
<div><br>
</div>
<div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;color:rgb(80,143,115)">
<span style="color:#000000"><span style="white-space:pre-wrap"></span></span>// Create an IS required by MatZeroRows()</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISCreateGeneral</span>(PETSC_COMM_WORLD,numRowsx,rowidx_array,<span style="color:#0034c9">PETSC_COPY_VALUES</span>,&isx); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISCreateGeneral</span>(PETSC_COMM_WORLD,numRowsy,rowidy_array,<span style="color:#0034c9">PETSC_COPY_VALUES</span>,&isy); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISCreateGeneral</span>(PETSC_COMM_WORLD,numRowsz,rowidz_array,<span style="color:#0034c9">PETSC_COPY_VALUES</span>,&isz); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;min-height:15px">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;color:rgb(80,143,115)">
<span style="color:#000000">1)<span style="white-space:pre-wrap">
</span></span>/*<span style="white-space:pre-wrap"> </span><span style="text-decoration:underline">ierr</span> = MatZeroRowsColumnsIS(VV_MAT,<span style="text-decoration:underline">isx</span>,v_vv,x_push,<span style="text-decoration:underline">rhs</span>); 
 CHKERRQ(<span style="text-decoration:underline">ierr</span>);</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;color:rgb(80,143,115)">
<span style="white-space:pre-wrap"></span><span style="text-decoration:underline">ierr</span> = MatZeroRowsColumnsIS(VV_MAT,<span style="text-decoration:underline">isy</span>,v_vv,x_push,<span style="text-decoration:underline">rhs</span>); 
 CHKERRQ(<span style="text-decoration:underline">ierr</span>);</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;color:rgb(80,143,115)">
<span style="white-space:pre-wrap"></span><span style="text-decoration:underline">ierr</span> = MatZeroRowsColumnsIS(VV_MAT,<span style="text-decoration:underline">isz</span>,v_vv,x_push,<span style="text-decoration:underline">rhs</span>); 
 CHKERRQ(<span style="text-decoration:underline">ierr</span>);*/</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;min-height:15px">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
2)<span style="white-space:pre-wrap"> </span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VV_MAT,isx,v_vv,x_push,rhs);  <span style="text-decoration:underline">
CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VV_MAT,isy,v_vv,x_push,rhs);  <span style="text-decoration:underline">
CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VV_MAT,isz,v_vv,x_push,rhs);  <span style="text-decoration:underline">
CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;min-height:15px">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VP_MAT,isx,v_vp,<span style="text-decoration:underline">PETSC_NULL</span>,<span style="text-decoration:underline">PETSC_NULL</span>); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VP_MAT,isy,v_vp,<span style="text-decoration:underline">PETSC_NULL</span>,<span style="text-decoration:underline">PETSC_NULL</span>); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
MatZeroRowsIS</span>(VP_MAT,isz,v_vp,<span style="text-decoration:underline">PETSC_NULL</span>,<span style="text-decoration:underline">PETSC_NULL</span>); 
<span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco;min-height:15px">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISDestroy</span>(&isx); <span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISDestroy</span>(&isy); <span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="white-space:pre-wrap"></span>ierr = <span style="color:#774191">
ISDestroy</span>(&isz); <span style="text-decoration:underline">CHKERRQ(ierr)</span>;</div>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
Results (velocity) with <span style="font-family:Helvetica;font-size:medium">MatZeroRowsColumnsIS().</span></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="font-family:Helvetica;font-size:medium">1cpu<img height="224" width="320" src="cid:779A0024-2BBB-4F8D-AB25-114C5B3D111C@Geo.Uni-Mainz.DE"> </span>4cpu<img height="224" width="320" src="cid:9FAA7278-A3FE-4A5D-B7A1-05AAFCA43181@Geo.Uni-Mainz.DE"></div>

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<br>
</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
Results (velocity)<span style="font-family:Monaco;font-size:11px"> </span>with <span style="font-family:Helvetica;font-size:medium">MatZeroRowsIS():</span></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Monaco">
<span style="font-family:Helvetica;font-size:medium">1cpu<img height="224" width="320" src="cid:C0C73566-0D52-484C-A858-01A184C23597@Geo.Uni-Mainz.DE"> 4cpu</span><img height="224" width="320" src="cid:7A9FD8A2-C2FC-41B3-88BF-11F77628E874@Geo.Uni-Mainz.DE"></div>

</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>