<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Dear petsc users,</p>
<p><br>
</p>
<p>I am solving for generalized eigen value problems using petsc and slepc. </p>
<p>Our equation will be of the form, </p>
<p><b><br>
</b></p>
<p><b>A</b> X=<span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"><span lang="el" xml:lang="el">ë<b> </b><b>B
</b>X. </span></span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"><span lang="el" xml:lang="el"><br>
</span></span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"><span lang="el" xml:lang="el">I am constructing the
<b>A</b> and <b>B</b> matrix of <span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">
type </span>MATMPIAIJ. </span></span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">Let us consider that </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">both of my matrices are </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">of dimension 10*10. When we are </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">solving
 for a closed </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">geometry, we require to add all
</span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">the entries of the last </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">(9th) row </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">and
 column to </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">the </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">first </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">(</span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">0th)
 row and column respectively for both matrices</span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">. In a high density mesh,</span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"> </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">I will have a large number of such row
</span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">to row and column to column additions. </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">For example, I may have to add last 200 rows and columns to first 200 rows and columns</span><br>
</p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">respectively. We will then zero the copied row and column expect the diagonal</span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">element (9th row/column in the former case). </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"><br>
</span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"></span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">I understand that MatGetRow, MatGetColumnVector, MatGetValues or any other </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">MatGet- or VecGet- </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">functions are not collective. Can you suggest any</span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"></span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">efficient algorithm or function to achieve this way of patching? </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"><br>
</span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">One way I can think of is to obtain the column vector using MatGetColumnVector and</span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">row vector by MatZeroRows and then scatter these vectors to all processes. Once we have </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">entire row/column vector entries in each process, we can add the values to the matrix by </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">their global index. Of course, </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">care should be taken to add the values of diagonal element </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">only once. </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">But this </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">will
 be a quite </span><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">slow process. </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;">Any ideas are appreciated. </span></p>
<p><span style="color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14px;"> </span></p>
<p>Thanks,</p>
<div id="Signature">
<div style="font-family:Tahoma; font-size:13px"><font face="Verdana">Sathwik Bharadwaj<br>
</font></div>
</div>
</div>
</body>
</html>