<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 6, 2020 at 8:07 PM Alexander Lindsay <<a href="mailto:alexlindsay239@gmail.com">alexlindsay239@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>It looks like Fande has attached the eigenvalue plots with the real axis having a logarithmic scale. The same plots with a linear scale are attached here. <br></div><div><br></div><div>The system has 306 degrees of freedom. 12 eigenvalues are unity for both scaled and unscaled cases; this number corresponds to the number of mesh nodes with Dirichlet boundary conditions (just a 1 on the diagonal for the corresponding rows). The rest of the eigenvalues are orders of magnitude smaller for the unscaled case; using scaling these eigenvalues are brought much closer 1.</div></div></blockquote><div><br></div><div>So you are running un-preconditioned GMRES, I assume. So your condition number is like 10^23 because if these 1s on the diagonal. I suggest always scaling by the diagonal for that reason, but if you want to run un-preconditioned then you have to be careful about what amount to penalty terms. In this case just take them out of the system entirely. They are just mudding up your numerical studies. (Now Krylov is just nailing these in the first iteration, espicaily GMRES which focuses on the largest eigenvalue vectors).</div><div><br></div><div>BTW, one of my earliest talks, in grad school before I had any real results, was called "condition number does not matter" and I showed examples problems where solvers, multigrid to be specific in some cases, work great on poorly conditioned problems (eg, scale and your problem) and fail on well conditioned problems (eg, incompressibility)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>This particular problem is linear but we solve it with SNES, so constant Jacobian. We run with options '-pc_type none -ksp_gmres_restart 1000 -snes_rtol 1e-8 -ksp_rtol 1e-5` so for this linear problem it takes two non-linear iterations to solve.</div><div><br></div><div>Unscaled:</div><div><br></div><div>first nonlinear iteration takes 2 linear iterations <br></div><div>second nonlinear iteration takes 99 linear iterations</div><div><br></div><div>Scaled:</div><div><br></div><div>first nonlinear iteration takes 94 linear iterations</div><div>second nonlinear iteration takes 100 linear iterations</div><div><br></div><div>Running with `-pc_type svd` the condition number for the unscaled simulation is 4e9 while it is 2e3 for the scaled simulation.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 6, 2020 at 4:36 PM Fande Kong <<a href="mailto:fdkong.jd@gmail.com" target="_blank">fdkong.jd@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi All,</div><div><br></div><div>MOOSE team, Alex and I are working on some variable scaling techniques to improve the condition number of the matrix of linear systems. The goal of variable scaling is to make the diagonal of matrix as close to unity as possible. After scaling (for certain example), the condition number of the linear system is actually reduced, but the GMRES iteration does not decrease at all. <br></div><div><br></div><div>From my understanding, the condition number is the worst estimation for GMRES convergence. That is, the GMRES iteration should not increases when the condition number decreases. This actually could example what we saw: the improved condition number does not necessary lead to a decrease in GMRES iteration. We try to understand this a bit more, and we guess that the number of eigenvalue clusters of the matrix of the linear system may/might be related to the convergence rate of GMRES.  We plot eigenvalues of scaled system and unscaled system, and the clusters look different from each other, but the GMRRES iterations are the same.</div><div><br></div><div>Anyone know what is the right relationship between the condition number and GMRES iteration? How does the number of eigenvalue clusters affect GMRES iteration?  How to count eigenvalue clusters? For example, how many eigenvalue clusters we have in the attach image respectively?</div><div><br></div><div>If you need more details, please let us know. Alex and I are happy to provide any details you are interested in.</div><div><br></div><div><br></div><div>Thanks,</div><div><br></div><div>Fande Kong,<br></div><div><br></div><div><br></div></div>
</blockquote></div>
</blockquote></div></div>