[Trilinos-Users] Xpetra wrappers around existing Tpetra objects
Martin Vymazal
martin.vymazal at vki.ac.be
Fri Jun 3 12:43:28 EDT 2016
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
More information about the Trilinos-Users
mailing list