[Trilinos-Users] Belos with Tpetra

VAHER S. (369821) S.VAHER.369821 at swansea.ac.uk
Fri Oct 18 03:09:27 MDT 2013

Dear All,

I have an existing FEM software, which uses direct solvers like PARDISO and MA41. Because of large CFD problem I would like to use also iterative solvers.

I managed to implement Belos with Epetra (Trilinos 11.4.1), but as I understand I cannot use OpenMP with Epetra (I would like to run on many core and shared memory). Now I am implementing Belos with Tpetra, but as I ask SolverFactory to create new solver:

   RCP < Belos::SolverManager <ScalarType, MV, OP > > newSolver
         = factory.create (solverName, solverParams);

with following typedefs:
    typedef double ScalarType;
    typedef int LocalOrdinal;
    typedef int GlobalOrdinal;
    typedef Kokkos::DefaultNode::DefaultNodeType NodeType;
    typedef Tpetra::MultiVector<ScalarType, LocalOrdinal, GlobalOrdinal, NodeType> MV;
    typedef Tpetra::CrsMatrix<ScalarType, LocalOrdinal, GlobalOrdinal, NodeType> OP;


   Belos::SolverFactory< ScalarType, MV, OP > factory;

I get following compiling error:

trilinos-11.4.1-Source/packages/belos/src/BelosMultiVecTraits.hpp:80:56: error: ‘this_type_is_missing_a_specialization’ is not a member of ‘Tpetra::MultiVector<double, int, int, Kokkos::SerialNode>’

Does it mean that SolverManager is expecting class which has different types compared to what factory.create is returning? If this is the case, how to ensure that the types are same in these classes? I have read the comment in source file, but I still don't know what I am doing wrong.

Thank you for your answer in advance.


PS! I assume that I should use Kokkos::OpenMP instead of Kokkos::DefaultNode for OpenMP, but I guess that its not the issue here.

More information about the Trilinos-Users mailing list