[Trilinos-Users] AztecOO intermediate solution

Heroux, Mike MHeroux at CSBSJU.EDU
Tue May 6 22:53:21 MDT 2014


The  Epetra_Vector object 'x' you pass in to AztecOO should always have the most recent solution. The only exception is for GMRES, where 'x' is updated only after the least-squares problem is solved at the end of the Arnoldi process.  But this is a property of GMRES.

However, AztecOO performs preconditioning on the right side (solves $A M^{-1} M x = b$, where $M^{-1}$ is your preconditioner, an approximation to $A^{-1}$).  As a result, during the iterations, and prior to return from the solver, the 'x' vector actually contains the solution to the right-preconditioned problem $y = M x$.

$y = M x$ implies that $x = M^{-1} y $, so you can recover the true $x$ during an intermediate stage by applying your preconditioner to the Epetra_Vector object 'x' and keeping the resulting vector in a separate Epetra_Vector object.

You can get AztecOO solvers to compute the true solution be defining your own AztecOO_StatusTest object to compute it.

All of this is fairly advanced usage, and introduces another call to your preconditioner, only for the purpose of getting the current solution vector, so you would only want to get intermediate results occasionally.  This approach would required quite a bit of knowledge about AztecOO, and AztecOO_StatusTest, but it is quite doable with not much coding.  Of course, if you are mostly interested in GMRES, there is no good way to obtain intermediate solutions.

If you want to avoid the issues of right preconditioning, you could consider Belos, which allows you to perform left or right preconditioning.  If you perform left preconditioning, the solution vector will always be available, again with the exception of GMRES.

I hope this helps.

Mike

From: Duk-Soon Oh <duksoon at cct.lsu.edu<mailto:duksoon at cct.lsu.edu>>
Date: Tuesday, May 6, 2014 2:41 PM
To: "trilinos-users at software.sandia.gov<mailto:trilinos-users at software.sandia.gov>" <trilinos-users at software.sandia.gov<mailto:trilinos-users at software.sandia.gov>>
Subject: [Trilinos-Users] AztecOO intermediate solution

Dear All,

I am using AztecOO with a custom preconditioner I made. I know that I can obtain intermediate relative residuals by setting AZ_output. However, it seems that is is not straightforward for me to get an intermediate solution of the linear system I am trying to solve. Could you tell me if there is a method to print intermediate solutions?

Best,

Duk-Soon


More information about the Trilinos-Users mailing list