<div dir="ltr"><div>Ok, thank you! </div><div><br></div><div>Kind regards.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El mar., 18 de feb. de 2020 a la(s) 03:17, Jose E. Roman (<a href="mailto:jroman@dsic.upv.es">jroman@dsic.upv.es</a>) escribió:<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 style="overflow-wrap: break-word;"><br><div><br><blockquote type="cite"><div>El 17 feb 2020, a las 19:19, Emmanuel Ayala <<a href="mailto:juaneah@gmail.com" target="_blank">juaneah@gmail.com</a>> escribió:</div><br><div><div dir="ltr"><div dir="ltr"><div>Thank you very much for the answer.</div><div><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>This error appears when computing the B-norm of a vector x, as sqrt(x'*B*x). Probably your B matrix is semi-definite, and due to floating-point error the value x'*B*x becomes negative for a certain vector x. The code uses a tolerance of 10*PETSC_MACHINE_EPSILON, but it seems the rounding errors are larger in your case. Or maybe your B-matrix is indefinite, in which case you should solve the problem as non-symmetric (or as symmetric-indefinite GHIEP).<div><br></div><div>Do you get the same problem with the Krylov-Schur solver?</div><div><br></div></div></blockquote><div><br></div><div>After check the input matrices, the problem was solved using GHIEP.</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><div></div><div>A workaround is to edit the source code and remove the check or increase the tolerance, but this may be catastrophic if your B is indefinite. A better solution is to reformulate the problem, solving the matrix pair (A,C) where C=alpha*A+beta*B is positive definite (note that then the eigenvalues become lambda/(beta+alpha*lambda)).</div><div><br></div></div></blockquote><div><br></div><div>Ok, there is a rule to choose the values for alpha and beta? <br></div></div></div></div></blockquote><div><br></div><div>For instance take alpha=1 and beta=-sigma, where sigma is a lower bound of the leftmost eigenvalue of B (the most negative one). This assumes that A is positive definite.</div><div><br></div><div>Jose</div><div><br></div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_quote"><div><br></div><div>Kind regards.</div><div>Thanks.<br></div><div> </div><br></div></div>
</div></blockquote></div><br></div></blockquote></div>