<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
See <a href="https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation" id="LPlnkOWALinkPreview">https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation</a></div>
<div class="_Entity _EType_OWALinkPreview _EId_OWALinkPreview _EReadonly_1">
<div id="LPBorder_GTaHR0cHM6Ly9wZXRzYy5vcmcvcmVsZWFzZS9kb2NzL21hbnVhbHBhZ2VzL01hdC9NYXRNUElBSUpTZXRQcmVhbGxvY2F0aW9uLmh0bWwjTWF0TVBJQUlKU2V0UHJlYWxsb2NhdGlvbg.." class="LPBorder175907" style="width: 100%; margin-top: 16px; margin-bottom: 16px; position: relative; max-width: 800px; min-width: 424px;">
<table id="LPContainer175907" role="presentation" style="padding: 12px 36px 12px 12px; width: 100%; border-width: 1px; border-style: solid; border-color: rgb(200, 200, 200); border-radius: 2px;">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td style="width: 100%;">
<div id="LPTitle175907" style="font-size: 21px; font-weight: 300; margin-right: 8px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; margin-bottom: 12px;">
<a target="_blank" id="LPUrlAnchor175907" href="https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation" style="text-decoration: none; color: var(--themePrimary);">MatMPIAIJSetPreallocation - PETSc</a></div>
<div id="LPDescription175907" style="font-size: 14px; max-height: 100px; color: rgb(102, 102, 102); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; margin-bottom: 12px; margin-right: 8px; overflow: hidden;">
MatMPIAIJSetPreallocation Preallocates memory for a sparse parallel matrix in AIJ format (the default parallel PETSc format). For good matrix assembly performance the user should preallocate the matrix storage by setting the parameters d_nz (or d_nnz) and o_nz
 (or o_nnz).</div>
<div id="LPMetadata175907" style="font-size: 14px; font-weight: 400; color: rgb(166, 166, 166); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;">
petsc.org</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
if you use mpiaij matrix.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hong</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> petsc-users <petsc-users-bounces@mcs.anl.gov> on behalf of Patrick Alken <patrick.alken@geomag.info><br>
<b>Sent:</b> Monday, August 22, 2022 10:56 AM<br>
<b>To:</b> petsc-users <petsc-users@mcs.anl.gov><br>
<b>Subject:</b> [petsc-users] Preallocating a matrix with the d_nnz and o_nnz arrays</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">I am looping through all the non-zero elements of my matrix to count the
<br>
diagonal and off-diagonal terms in order to pre-allocate the matrix. <br>
However, what is the criteria for knowing if a given element is in the <br>
diagonal portion or off-diagonal portion? It seems that it will depend <br>
on row, column, and also processor. I was doing something like this:<br>
<br>
MatGetLocalSize(A, &m, &n);<br>
<br>
MatGetOwnershipRange(A, &first, &last);<br>
<br>
for (i = first; i < last; ++i) {<br>
<br>
     for (j = 0; j < N; ++j) {<br>
<br>
         if (abs(i - j) < m)<br>
<br>
             ++d_nnz[i - first];<br>
<br>
         else<br>
<br>
             ++o_nnz[i - first];<br>
<br>
     }<br>
<br>
}<br>
<br>
However, the criteria: abs(i - j) < m is not correct. I think the <br>
correct criteria will include the processor number also. Does anyone <br>
know the correct criteria to use?<br>
<br>
</div>
</span></font></div>
</body>
</html>