<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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);" class="elementToProof">
<span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; display: inline !important; color: rgb(36, 36, 36); background-color: rgb(255, 255, 255);" class="ContentPasted0">Gong
Ding,</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; display: inline !important; color: rgb(36, 36, 36); background-color: rgb(255, 255, 255);" class="ContentPasted0">When
you use a LU solver, the preconditioner M = inv(LU) = inv (J) on theory. I suspect your jacobian evaluation by<span style="display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted1"> 64bit might be inaccurate. What LU solver
did you use? Run your code with option '-snes_view -snes_monitor -ksp_monitor' and compare the displays.</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; display: inline !important; color: rgb(36, 36, 36); background-color: rgb(255, 255, 255);" class="ContentPasted0"><span style="display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted1">Hong</span></span></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 Mark Adams <mfadams@lbl.gov><br>
<b>Sent:</b> Thursday, September 14, 2023 5:35 AM<br>
<b>To:</b> Gong Ding <gongding@cn.cogenda.com><br>
<b>Cc:</b> petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov><br>
<b>Subject:</b> Re: [petsc-users] Is precondition works for ill-conditioned jacobian matrix</font>
<div> </div>
</div>
<div>
<div dir="ltr">I would first verify that you are happy with the solution that works.
<div><br>
</div>
<div>Next, I would worry about losing accuracy in computing M*J, but you could try it and search for any related work. There may be some tricks.</div>
<div><br>
</div>
<div>And MUMPS is good at high accuracy, you might try that and if it fails look at the MUMPS docs for any flags for high-accuracy.</div>
<div><br>
</div>
<div>Good luck,</div>
<div>Mark</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Thu, Sep 14, 2023 at 5:35 AM Gong Ding <<a href="mailto:gongding@cn.cogenda.com">gongding@cn.cogenda.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
Hi all<br>
<br>
I find such a nonlinear problem, the jacobian matrix is ill conditioned.<br>
<br>
Solve the jacobian matrix by 64bit LU solver, the Newton method failed <br>
to convergence.<br>
<br>
However, when solve the jacobian matrix by 128bit LU solver , Newton <br>
iteration will convergence.<br>
<br>
I think this phenomena indicate that , the jacobian matrix is ill <br>
conditioned.<br>
<br>
<br>
The question is, if I do a precondition as M*J*dx = -M*f(x), here M is <br>
the precondition matrix, . then I solve the matrix A=M*J by a LU solver.<br>
<br>
Can I expect that solve A=M*J has a better precision result that help <br>
the convergence of Newton iteration?<br>
<br>
Gong Ding<br>
<br>
<br>
<br>
<br>
</blockquote>
</div>
</div>
</body>
</html>