<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>Dear sir,</div><div><br></div><div>Thanks for your thorough and helpful reply, and I will try the Uzawa method first.</div><div><br></div><div>Best regards,</div><div><br></div><div>Xiaofeng</div><br id="lineBreakAtBeginningOfMessage"><div><br><blockquote type="cite"><div>On Jun 12, 2025, at 16:57, Mark Adams <mfadams@lbl.gov> wrote:</div><br class="Apple-interchange-newline"><div><meta charset="UTF-8"><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; 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;"><div>Adding this to the PETSc mailing list,</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Jun 12, 2025 at 3:43 AM hexioafeng <<a href="mailto:hexiaofeng@buaa.edu.cn">hexiaofeng@buaa.edu.cn</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Dear Professor,</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">I hope this message finds you well.</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">I am an employee at a CAE company and a heavy user of the PETSc library. I would like to thank you for your contributions to PETSc and express my deep appreciation for your work.</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Recently, I encountered some difficulties when using PETSc to solve structural mechanics problems with Lagrange multiplier constraints. After searching extensively online and reviewing several papers, I found your previous paper titled "<b>Algebraic multigrid methods for constrained linear systems with applications to contact problems in solid mechanics</b>" seems to be the most relevant and helpful. </font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">The stiffness matrix I'm working with,<span class="Apple-converted-space"> </span><b>K</b>, is a block saddle-point matrix of the form (A00 A01; A10 0), where<span class="Apple-converted-space"> </span><b>A00 is singular</b>—just as described in your paper, and different from many other articles . I have a few questions regarding your work and would greatly appreciate your insights:</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">1. Is the<span class="Apple-converted-space"> </span><b>AMG/KKT</b><span class="Apple-converted-space"> </span>method presented in your paper available in PETSc? I tried using<span class="Apple-converted-space"> </span><b>CG+GAMG</b><span class="Apple-converted-space"> </span>directly but received a<span class="Apple-converted-space"> </span><b>KSP_DIVERGED_PC_FAILED</b><span class="Apple-converted-space"> </span>error. I also attempted to use<span class="Apple-converted-space"> </span><b>CG+PCFIELDSPLIT</b><span class="Apple-converted-space"> </span>with the following options:  </font></div></div></blockquote><div><br></div><div>No</div><div> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div><div><font size="4" face="Verdana">   </font></div><div><font size="4" face="Verdana">   <span class="Apple-converted-space"> </span>-pc_type fieldsplit -pc_fieldsplit_detect_saddle_point -pc_fieldsplit_type schur -pc_fieldsplit_schur_precondition selfp -pc_fieldsplit_schur_fact_type full -fieldsplit_0_ksp_type preonly -fieldsplit_0_pc_type gamg -fieldsplit_1_ksp_type preonly -fieldsplit_1_pc_type bjacobi  </font></div><div><font size="4" face="Verdana">   </font></div><div><font size="4" face="Verdana">   Unfortunately, this also resulted in a<span class="Apple-converted-space"> </span><b>KSP_DIVERGED_PC_FAILED</b><span class="Apple-converted-space"> </span>error. Do you have any suggestions?</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">2. In your paper, you compare the method with<span class="Apple-converted-space"> </span><b>Uzawa</b>-type approaches. To my understanding, Uzawa methods typically require A00 to be invertible. How did you handle the singularity of A00 to construct an M-matrix that is invertible?</font></div><div><font size="4" face="Verdana"><br></font></div></div></blockquote><div><br></div>You add a regularization term like A01 * A10 (like springs). See the paper or any reference to augmented lagrange or Uzawa</div><div class="gmail_quote gmail_quote_container"><br><div><br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div><div><font size="4" face="Verdana"></font></div><div><font size="4" face="Verdana">3. Can i implement the AMG/KKT method in your paper using existing<span class="Apple-converted-space"> </span><b>AMG APIs</b>? Implementing a production-level AMG solver from scratch would be quite challenging for me, so I’m hoping to utilize existing AMG interfaces within PETSc or other packages.</font></div><div><font size="4" face="Verdana"><br></font></div></div></blockquote><div><br></div><div>You can do Uzawa and make the regularization matrix with matrix-matrix products. Just use AMG for the A00 block.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div><div><font size="4" face="Verdana"></font></div><div><font size="4" face="Verdana">4. For saddle-point systems where A00 is singular, can you recommend any more robust or efficient solutions? Alternatively, are you aware of any open-source software packages that can handle such cases out-of-the-box?</font></div><div><font size="4" face="Verdana"><br></font></div></div></blockquote><div><br></div>No, and I don't think PETSc can do this out-of-the-box, but others may be able to give you a better idea of what PETSc can do.</div><div class="gmail_quote gmail_quote_container">I think PETSc can do Uzawa or other similar algorithms but it will not do the regularization automatically (it is a bit more complicated than just A01 * A10)</div><div class="gmail_quote gmail_quote_container"><br></div><div class="gmail_quote gmail_quote_container">Thanks,</div><div class="gmail_quote gmail_quote_container">Mark<br><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div><div><font size="4" face="Verdana"></font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Thank you very much for taking the time to read my email. Looking forward to hearing from you.</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Sincerely,  </font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Xiaofeng He</font></div><div><font size="4" face="Verdana">-----------------------------------------------------</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Research Engineer</font></div><div><font size="4" face="Verdana"><br></font></div><div><font size="4" face="Verdana">Internet Based Engineering, Beijing, China</font></div></div></blockquote></div></div></div></blockquote></div><br></body></html>