[Trilinos-Users] Comparing ML to BoomerAMG
Travis Austin
austin at txcorp.com
Thu Jan 3 16:31:54 MST 2013
Mike,
Understood. Didn't dig in enough to find all of the "isa's". Thanks. I'll let you know if there are any issues.
Travis
===============================
Travis Austin, Ph.D
VP, Computational Mathematics
Tech-X Corporation
5621 Arapahoe Ave
Boulder, CO 80303
austin at txcorp.com
===============================
On Jan 3, 2013, at 3:02 PM, "Heroux, Michael A" <maherou at sandia.gov> wrote:
> Travis,
>
> Yes, this class is supposed to allow you to use hypre with Trilinos iterative solvers. It implements the Epetra_BasicRowMatrix interface (which "isa" Epetra_RowMatrix and "isa" Epetra_Operator), so a fully-constructed EpetraExt_HypreIJMatrix can be passed in as both the UserMatrix and the PrecOperator (using SetUserMatrix and SetPrecOperator, resp).
>
> The Apply method is the hypre SpMV and the ApplyInverse method is the hypre preconditioner "solve" function, which will behave differently depending on which hypre parameters you select.
>
> I don't know if this class is used much. It was written a number of years ago by a grad student. It worked at the time, but may be fragile. If you run into issues, let me know.
>
> Mike
>
> From: Travis Austin <austin at txcorp.com>
> Date: Thursday, January 3, 2013 4:36 PM
> To: Trilinos Users <Trilinos-Users at software.sandia.gov>
> Subject: [EXTERNAL] [Trilinos-Users] Comparing ML to BoomerAMG
>
>
> I'm looking through EpetraExt, in particular the subdirectory, hypre, and it states that the EpetraExt_HypreIJMatrix is
> meant to give Hypre users access to Trilinos solvers. Is this also meant to give access to hypre preconditioners to
> AztecOO? I'd assume so but I'm not quite sure how to do it and was hoping for some hints before jumping right into it.
>
> Here are my thoughts so far. I have the following code below for using ML as a preconditioner with gmres. I need a
> SetPrecOperator that takes something like MLPrec which appears to be an EpetraOperator. However, I do not see
> an EpetraOperator in EpetraExt_HypreIJMatrix but I do see the following:
>
> int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y); (**)
>
> This can be used to apply the preconditioner so perhaps this would be what I want to use ti apply a preconditioner from
> hypre? Not sure. Upon looking some more it seems that you need to write a class that extends Epetra_Operator and
> has an apply of the same form as (**) above.
>
> ======================= My current code ===========================
> // ---------------------------------------
> // Solve the system using Krylov solvers
> // ---------------------------------------
> Epetra_LinearProblem problem(&A,&uh,&f);
>
> AztecOO solver(problem);
>
> ML_Epetra::SetDefaults("SA",MLList);ML_Epetra::SetDefaults("SA",MLList);
> MLList.set("smoother: type", "Gauss-Seidel");
> MLList.set("ML output", 10);
>
> ML_Epetra::MultiLevelPreconditioner * MLPrec = NULL;
> MLPrec = new ML_Epetra::MultiLevelPreconditioner(A, MLList, true);
>
> // tell AztecOO to use this preconditioner, then solve
> solver.SetPrecOperator(MLPrec);
> solver.SetAztecOption(AZ_solver, AZ_gmres);
>
> int MaxIters = 1000;
> solver.Iterate(MaxIters, 1e-12);
>
>
> ===============================
> Travis Austin, Ph.D
> VP, Computational Mathematics
> Tech-X Corporation
> 5621 Arapahoe Ave
> Boulder, CO 80303
> austin at txcorp.com
> ===============================
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20130103/d66dd5ab/attachment-0001.html
More information about the Trilinos-Users
mailing list