[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