[Trilinos-Users] [EXTERNAL] slow anasazi in NOX::Epetra

Veltz Romain romain.veltz at inria.fr
Wed Dec 11 05:59:52 MST 2013


I thought I would be done with issues but I found the following output from Anasazi rather puzzling.
Note that, for some reasons, I am using trillions-10.8.4 (updating to the current version give me some trouble under macosx).

I set my continuation code in a configuration where the Jacobian is the operator: -Id

Using the LOCA with Epetra - Anasazi with:
aList.set("Sorting Order", "LM");
aList.set("Operator","Jacobian Inverse");

the following EV are returned

Untransformed eigenvalues (since the operator was Jacobian Inverse)
Eigenvalue 0 : -1.000e+00  -0.000e+00 i    :  RQresid 3.331e-16  0.000e+00 i
Eigenvalue 1 : -1.000e+00  -0.000e+00 i    :  RQresid 6.439e-15  0.000e+00 i
Eigenvalue 2 : -1.000e+00  -0.000e+00 i    :  RQresid 7.327e-15  0.000e+00 i
Eigenvalue 3 : -1.000e+00  -0.000e+00 i    :  RQresid 5.995e-15  0.000e+00 i


Using the LOCA with Epetra - Anasazi with:
aList.set("Sorting Order", "LM");
aList.set("Operator","Shift-Invert");
aList.set("Shift",0.001);

the following ev are returned (The RQresid is large too, equal to the shift…):

Untransformed eigenvalues (since the operator was Shift-Invert)
Eigenvalue 0 : -9.990e-01  -0.000e+00 i    :  RQresid 1.000e-03  0.000e+00 i
Eigenvalue 1 : -9.990e-01  -0.000e+00 i    :  RQresid 1.000e-03  0.000e+00 i

Note that I have checked that the solver effectively enter the following function
->LOCA::AnasaziOperator::ShiftInvert::apply()

I don't understand these results… I thought the entry  in
anasaziOp->transformEigenvalue((*evals_r)[i], (*evals_i)[i]);
from LOCA::Eigensolver::AnasaziStrategy::computeEigenvalues would do the job…

Please note that I have the same issues with the Cayley transform.

Thank you for your help and advices,

Romain


On Dec 10, 2013, at 5:33 PM, "Phipps, Eric T" <etphipp at sandia.gov> wrote:

> I don't understand what you mean be "I don't have access to my Jacobian operator".  You need to be able to implement y = (a*J + b*M)*x for a give (multi-) vector x and scalars a and b, where J is the Jacobian operator and M the mass matrix.  If you have a matrix-free operator to implement J*x, you can use the same approach to implement this, e.g., via y = a*J*x + b*M*x.
> 
> -Eric
> 
> On Dec 10, 2013, at 5:03 AM, "Veltz Romain" <romain.veltz at inria.fr> wrote:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20131211/a0450afa/attachment.html 


More information about the Trilinos-Users mailing list