<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div>Thank you for your answer.<p data-start="265" data-end="526" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="265" data-end="526" style="margin: 0px;" data-mce-style="margin: 0px;">I am currently working with the nonlinear solvers <strong><code data-start="315" data-end="325">newtonls</code></strong> (with <code data-start="332" data-end="336">bt</code>, <code data-start="338" data-end="342">l2</code>, etc.) and <strong><code data-start="354" data-end="364">newtontr</code></strong> (using <code data-start="372" data-end="380">newton</code>, <code data-start="382" data-end="390">cauchy</code>, and <code data-start="396" data-end="404">dogleg</code> strategies) combined with the linear solver <strong><code data-start="449" data-end="456">gmres</code></strong> and the <strong>ILU</strong> preconditioner, since my Jacobian matrix is nonsymmetric.</p><p data-start="265" data-end="526" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="528" data-end="645" style="margin: 0px;" data-mce-style="margin: 0px;">I also use the Eisenstat-Walker method for <code data-start="571" data-end="581">newtonls</code>, as my initial guess is often very far from the exact solution.</p><p data-start="528" data-end="645" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="647" data-end="923" style="margin: 0px;" data-mce-style="margin: 0px;">What I would like to do now is to <strong data-start="681" data-end="730">replace the standard Euclidean <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut"></span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist"><span><span class="pstrut"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> norm</strong> with the <strong data-start="740" data-end="780"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut"></span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist"><span><span class="pstrut"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> norm in the Lebesgue sense</strong>, because my problem is defined on an <strong data-start="818" data-end="863">unstructured, anisotropic triangular mesh</strong> where a weighted norm would be more physically appropriate.</p><p data-start="647" data-end="923" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="925" data-end="1072" style="margin: 0px;" data-mce-style="margin: 0px;">Would you be able to advise me on how to implement this change properly?</p><p data-start="925" data-end="1072" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-start="997" data-end="1000">I would deeply appreciate any guidance or suggestions you could provide.</p><p data-start="925" data-end="1072" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="1074" data-end="1145" style="margin: 0px;" data-mce-style="margin: 0px;">Thank you in advance for your help.</p><p data-start="1074" data-end="1145" style="margin: 0px;" data-mce-style="margin: 0px;"><br data-mce-bogus="1"></p><p data-start="1147" data-end="1237" style="margin: 0px;" data-mce-style="margin: 0px;">Best regards,</p></div><div>Ali ALI AHMAD</div><hr id="zwchr" data-marker="__DIVIDER__"><div data-marker="__HEADERS__"><b>De: </b>"Barry Smith" <bsmith@petsc.dev><br><b>À: </b>"Ali ALI AHMAD" <ali.ali_ahmad@utt.fr><br><b>Cc: </b>"petsc-users" <petsc-users@mcs.anl.gov>, "petsc-maint" <petsc-maint@mcs.anl.gov><br><b>Envoyé: </b>Jeudi 12 Juin 2025 14:57:40<br><b>Objet: </b>Re: [petsc-maint] norm L2 problemQuestion about changing the norm used in nonlinear solvers (L2 Euclidean vs. L2 Lebesgue)<br></div><div><br></div><div data-marker="__QUOTED_TEXT__"><div>  Do you wish to use a different norm </div><br><div>   1) ONLY for displaying (printing out) the residual norms to track progress</div><br><div>   2) in the convergence testing</div><br><div>   3) to change the numerical algorithm (for example using the L2 inner product instead of the usual linear algebra R^N l2 inner product).</div><br><div>   For 1) use SNESMonitorSet() and in your monitor function use SNESGetSolution() to grab the solution and then VecGetArray(). Now you can compute any weighted norm you want on the solution.</div><br><div>   For 2) similar but you need to use SNESSetConvergenceTest</div><br><div>   For 3) yes, but you need to ask us specifically.</div><br><div>  Barry</div><div><br id="lineBreakAtBeginningOfMessage"><div><br><blockquote><div>On Jun 11, 2025, at 4:45 AM, Ali ALI AHMAD <ali.ali_ahmad@utt.fr> wrote:</div><br class="Apple-interchange-newline"><div><div><div style="font-family:'arial' , 'helvetica' , sans-serif;font-size:12pt"><div><div><div style="font-family:'arial' , 'helvetica' , sans-serif;font-size:12pt"><div><div>Dear PETSc team,<br><br>I hope this message finds you well.<br><br>I am currently using PETSc in a C++, where I rely on the nonlinear solvers `SNES` with either `newtonls` or `newtontr` methods. I would like to ask if it is possible to change the default norm used (typically the L2 Euclidean norm) to a custom norm, specifically the L2 norm in the sense of Lebesgue (e.g., involving cell-wise weighted integrals over the domain).<br><br>My main goal is to define a custom residual norm that better reflects the physical quantities of interest in my simulation.<br><br>Would this be feasible within the PETSc framework? If so, could you point me to the recommended approach (e.g., redefining the norm manually, using specific PETSc hooks or options)?<br><br>Thank you very much in advance for your help and for the great work on PETSc!<br><br>Best regards,  <br><br><hr></div><div><span style="font-family:'georgia' , serif">Ali ALI AHMAD</span><br><span style="font-family:'georgia' , serif">PhD Student</span><br><span style="font-family:'georgia' , serif">University of Technology of Troyes - UTT - France</span><br><span style="font-family:'georgia' , serif">GAMMA3 Project - Office H008 - Phone No: +33 7 67 44 68 18</span><br><span style="font-family:'georgia' , serif">12 rue Marie Curie - CS 42060 10004 TROYES Cedex</span></div></div></div></div></div></div></div></div></blockquote></div></div><br></div></div></body></html>