[Trilinos-Users] [EXTERNAL] Re: Xpetra wrappers around existing Tpetra objects
Andrey Prokopenko
aprokop at sandia.gov
Fri Jun 3 13:22:20 EDT 2016
Hi Martin,
If "MueLu as a solver' you mean a standalone solver, then you just need
to add the following lines to what Jonathan wrote:
Tpetra::MultiVector<> rhs, initial_guess;
int max_its = 40;
M->IsPreconditioner(false);
M->Iterate(rhs, initial_guess, max_its);
-Andrey
On 06/03/2016 10:43 AM, Martin Vymazal wrote:
> Hello Jonathan,
>
> thank you very much, this helps. I think that's all I need, but I was
> wondering about one more thing - is there a similarly easy way to use
> MueLu as a solver?
>
> Best regards,
>
> Martin
>
>
> On 2016-06-03 17:28, Jonathan Hu wrote:
>> Hi Martin,
>>
>> Yes, there are easier ways to use MueLu with an existing
>> Tpetra::CrsMatrix. You do not need to convert to Xpetra. Something
>> like this will work in your case:
>>
>> Teuchos::RCP<Tpetra::CrsMatrix<> > A;
>> ParameterList paramList;
>> //set the MueLu options
>> Teuchos::RCP<MueLu::TpetraOperator> M =
>> MueLu::CreateTpetraPreconditioner(A, paramList);
>>
>> M is a Tpetra::Operator and can be used directly with Belos.
>>
>> This is described in more detail in the user's guide
>> (muelu/doc/UsersGuide/mueluguide.pdf) on page 22. Thank you for the
>> feedback on the documentation ... I'll see if we can make the
>> migration path clearer for first-time users.
>>
>> Regards,
>> Jonathan
>>
>> Martin Vymazal wrote on 06/03/2016 08:10 AM:
>>> Hello,
>>>
>>> I have an RCP pointer to Tpetra::CrsMatrix called A and I would
>>> like to pass this to MueLu Hierarchy object. It seems that the only
>>> option is to wrap A, the right-hand side vector and the vector of
>>> unknows in Xpetra RCP pointers. The following compiles (I found a
>>> similar code in the MueLU tutorial):
>>>
>>> Teuchos::RCP<Xpetra::CrsMatrix<>> exA = Teuchos::rcp(new
>>> Xpetra::TpetraCrsMatrix<>(A));
>>> Teuchos::RCP<Xpetra::CrsMatrixWrap<>> exAWrap = Teuchos::rcp(new
>>> Xpetra::CrsMatrixWrap<>(exA));
>>> RCP<Xpetra::Matrix<>> xpetra_A =
>>> Teuchos::rcp_dynamic_cast<Xpetra::Matrix<>>(exAWrap);
>>>
>>> MueLu::Hierarchy<Scalar, LocalOrdinal, GlobalOrdinal> H(xpetra_A);
>>> H.SetDefaultVerbLevel(MueLu::Medium);
>>>
>>> Could you please confirm that the first line only creates a shallow
>>> copy of A? Is there any easier/more correct/more elegant way of
>>> constructing xpetra_A? I'm also stuck at this point, because now I
>>> need Xpetra-style pointers to the map that was used to construct
>>> (Tpetra) A in order to construct Xpetra-style right-hand side
>>> multivector (or pointer to it). How do I get Xpetra vectors from
>>> Tpetra vectors, given the fact that the map of A is a Tpetra map?
>>>
>>> Thank you for your help.
>>>
>>> Martin
>>>
>>> P. S. MueLu looks interesting, but the documentation (especially the
>>> Xpetra part) could be a bit more extensive ... It looks like there's
>>> a lot of attention paid to users who migrate from Epetra to Tpetra,
>>> but what about those, who already have codebase which is exclusively
>>> Tpetra-based? Are they supposed to move everything to Xpetra in
>>> order to be able to use MueLu?
>>> _______________________________________________
>>> Trilinos-Users mailing list
>>> Trilinos-Users at trilinos.org
>>> https://trilinos.org/mailman/listinfo/trilinos-users
>>>
>>
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at trilinos.org
>> https://trilinos.org/mailman/listinfo/trilinos-users
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at trilinos.org
> https://trilinos.org/mailman/listinfo/trilinos-users
More information about the Trilinos-Users
mailing list