<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div> MatGetOwnershipRangeColumn() tells you the start and end+1 of the columns that are in the diagonal block. For square matrices they are the same as rstart and rend.<div class=""><br class=""></div><div class="">  Barry</div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Aug 22, 2022, at 12:12 PM, Patrick Alken <<a href="mailto:patrick.alken@geomag.info" class="">patrick.alken@geomag.info</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Thank you, I have read that document. I have changed my criteria to:</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">if (j >= first && (j - first) < m) {</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">  /*diagonal*/</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">else</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">  /*off-diagonal*/</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">It seems to be working better. I don't know how to get the c1 and c2 columns referred to by the documentation.</div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Patrick<br class=""></div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div class="moz-cite-prefix" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">On 8/22/22 10:03, Zhang, Hong wrote:<br class=""></div><blockquote type="cite" cite="mid:SA1PR09MB8607667B9B068ADE59ACC19588719@SA1PR09MB8607.namprd09.prod.outlook.com" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">See <a href="https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation" id="LPlnkOWALinkPreview" moz-do-not-send="true" class="moz-txt-link-freetext">https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation</a></div><div class=" _EReadonly_1 _EId_OWALinkPreview
 _Entity _EType_OWALinkPreview"><div id="LPBorder_GTaHR0cHM6Ly9wZXRzYy5vcmcvcmVsZWFzZS9kb2NzL21hbnVhbHBhZ2VzL01hdC9NYXRNUElBSUpTZXRQcmVhbGxvY2F0aW9uLmh0bWwjTWF0TVBJQUlKU2V0UHJlYWxsb2NhdGlvbg.." class="LPBorder175907" style="width: 800px; 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: 750px; border: 1px solid rgb(200, 200, 200); border-radius: 2px;" class=""><tbody class=""><tr valign="top" style="border-spacing: 0px;" class=""><td style="width: 744px;" class=""><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;" class=""><a target="_blank" id="LPUrlAnchor175907" href="https://petsc.org/release/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation" moz-do-not-send="true" style="text-decoration: none; color: var(--themePrimary);" class="">MatMPIAIJSetPreallocation - PETSc</a></div><div id="LPDescription175907" style="font-size: 14px; max-height: 100px; color: rgb(102, 102, 102); margin-bottom: 12px; margin-right: 8px; overflow: hidden;" class="">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);" class=""><a href="http://petsc.org/" class="">petsc.org</a></div></td></tr></tbody></table></div></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">if you use mpiaij matrix.</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hong</div><hr tabindex="-1" style="display: inline-block; width: 1321.03125px;" class=""><div id="divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>petsc-users<span class="Apple-converted-space"> </span><a class="moz-txt-link-rfc2396E" href="mailto:petsc-users-bounces@mcs.anl.gov"><petsc-users-bounces@mcs.anl.gov></a><span class="Apple-converted-space"> </span>on behalf of Patrick Alken<span class="Apple-converted-space"> </span><a class="moz-txt-link-rfc2396E" href="mailto:patrick.alken@geomag.info"><patrick.alken@geomag.info></a><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, August 22, 2022 10:56 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>petsc-users<span class="Apple-converted-space"> </span><a class="moz-txt-link-rfc2396E" href="mailto:petsc-users@mcs.anl.gov"><petsc-users@mcs.anl.gov></a><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>[petsc-users] Preallocating a matrix with the d_nnz and o_nnz arrays</font><div class=""> </div></div><div class="BodyFragment"><font size="2" class=""><span style="font-size: 11pt;" class=""><div class="PlainText">I am looping through all the non-zero elements of my matrix to count the<span class="Apple-converted-space"> </span><br class="">diagonal and off-diagonal terms in order to pre-allocate the matrix.<span class="Apple-converted-space"> </span><br class="">However, what is the criteria for knowing if a given element is in the<span class="Apple-converted-space"> </span><br class="">diagonal portion or off-diagonal portion? It seems that it will depend<span class="Apple-converted-space"> </span><br class="">on row, column, and also processor. I was doing something like this:<br class=""><br class="">MatGetLocalSize(A, &m, &n);<br class=""><br class="">MatGetOwnershipRange(A, &first, &last);<br class=""><br class="">for (i = first; i < last; ++i) {<br class=""><br class="">     for (j = 0; j < N; ++j) {<br class=""><br class="">         if (abs(i - j) < m)<br class=""><br class="">             ++d_nnz[i - first];<br class=""><br class="">         else<br class=""><br class="">             ++o_nnz[i - first];<br class=""><br class="">     }<br class=""><br class="">}<br class=""><br class="">However, the criteria: abs(i - j) < m is not correct. I think the<span class="Apple-converted-space"> </span><br class="">correct criteria will include the processor number also. Does anyone<span class="Apple-converted-space"> </span><br class="">know the correct criteria to use?</div></span></font></div></blockquote></div></blockquote></div><br class=""></div></body></html>