<div>Thanks Barry,</div>
<div>&nbsp;</div>
<div>I managed to get it working. I realise that I had to call matssemblybegin/end each time after I&nbsp;zero a particular row. I also tried MatSetOption(mat,MAT_KEEP_ZEROED_ROWS) as what you &#39;ve suggested.</div>
<div>&nbsp;</div>
<div>So do I have to callMatSetOption(mat,MAT_KEEP_ZEROED_ROWS) everytime just before I need to zero it or just once ie after the 1st matassemblybegin/end?</div>
<div>&nbsp;</div>
<div>Calling matassemblybegin/end each time before matzerorows gives me the impression that it is very inefficient. Is that so?</div>
<div>&nbsp;</div>
<div>In that case, I wonder if it is better for me to :</div>
<div>&nbsp;</div>
<div>1 use matsetvalues to put zeros into those location where I earlier insert in the 1st full i,j sweep</div>
<div>2. insert correct value using matsetvalues</div>
<div>3. finally matassemblybegin/end - just once.</div>
<div>&nbsp;</div>
<div>Lastly, is MatZeroRowsIS exactly the same as matzerorows, except that it is meant for just 1 row instead of consecutive no. of rows?</div>
<div>&nbsp;</div>
<div>Thanks again<br><br>&nbsp;</div>
<div><span class="gmail_quote">On 6/11/07, <b class="gmail_sendername">Barry Smith</b> &lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br><br>On Sun, 10 Jun 2007, Ben Tay wrote:<br><br>&gt; Hi,<br>&gt;<br>&gt; I need to insert values into a matrix and then solve this poisson eqn as
<br>&gt; part of my cfd code. For efficiency sake, I&nbsp;&nbsp;simply use<br>&gt;<br>&gt; &quot;do j=1,size_y<br>&gt;<br>&gt; do i=1,size_x<br>&gt;<br>&gt;&nbsp;&nbsp;matsetvalue ....<br>&gt;<br>&gt; end do<br>&gt;<br>&gt; end do&quot;<br>&gt;
<br>&gt; to insert values into all the cells<br>&gt;<br>&gt; Then for specific cells, I need to enter some other values. In other words,<br>&gt; for specific rows of the matrix, I need to zero the whole row and insert new
<br>&gt; values. How can I do that?<br>&gt;<br>&gt; I tried to use MatZeroRows but it says it&#39;s not for unassembled matrix. But<br>&gt; I need to zero the particular row, insert values, and then finally assembly<br>&gt; it. Is there a command to do this?
<br><br>&nbsp;&nbsp;matassemblybegin/end<br>&nbsp;&nbsp;matzerorows<br>&nbsp;&nbsp;matsetvalues, matsetvalues, matsetvalue<br>&nbsp;&nbsp;matssemblybegin/end<br><br>&nbsp;&nbsp;For improved efficiency you will want to call<br>&nbsp;&nbsp;MatSetOption(mat,MAT_KEEP_ZEROED_ROWS); before the matzerorows()
<br><br>&gt;<br>&gt; Thanks<br>&gt;<br><br></blockquote></div><br>