56 #ifndef AMESOS2_PARDISOMKL_DECL_HPP 
   57 #define AMESOS2_PARDISOMKL_DECL_HPP 
   61 #include <Teuchos_StandardParameterEntryValidators.hpp> 
   64 #include "Amesos2_SolverCore.hpp" 
   65 #include "Amesos2_PardisoMKL_FunctionMap.hpp" 
   81   template <
class Matrix,
 
   97     typedef typename super_type::scalar_type                         scalar_type;
 
   98     typedef typename super_type::local_ordinal_type           local_ordinal_type;
 
   99     typedef typename super_type::global_ordinal_type         global_ordinal_type;
 
  100     typedef typename super_type::global_size_type               global_size_type;
 
  104     typedef typename type_map::type                           solver_scalar_type;
 
  105     typedef typename type_map::magnitude_type              solver_magnitude_type;
 
  109     typedef typename 
TypeMap<Amesos2::PardisoMKL,local_ordinal_type>
::type int_t;
 
  129                Teuchos::RCP<Vector>       X,
 
  130                Teuchos::RCP<const Vector> B);
 
  178     int 
solve_impl(const Teuchos::Ptr<MultiVecAdapter<Vector> >       X,
 
  179                    const Teuchos::Ptr<const MultiVecAdapter<Vector> > B) const;
 
  280     mutable Teuchos::Array<solver_scalar_type> 
xvals_;
 
  282     mutable Teuchos::Array<solver_scalar_type> 
bvals_;
 
  303     static const int_t maxfct_;
 
  304     static const int_t mnum_;
 
  307     static const bool complex_
 
  308     = Meta::or_<Meta::is_same<solver_scalar_type, PMKL::_MKL_Complex8>::value,
 
  309                 Meta::is_same<solver_scalar_type, PMKL::_DOUBLE_COMPLEX_t>::value>::value;
 
  319 #ifdef HAVE_TEUCHOS_COMPLEX 
  320   typedef Meta::make_list6<float,
 
  323                            std::complex<double>,
 
  325                            PMKL::_DOUBLE_COMPLEX_t> supported_scalars;
 
  327 typedef Meta::make_list2<float,
 
  328                          double> supported_scalars;
 
  334 #endif  // AMESOS2_PARDISOMKL_DECL_HPP 
Amesos2::SolverCore: A templated interface for interaction with third-party direct sparse solvers...
Definition: Amesos2_SolverCore_decl.hpp:105
Teuchos::Array< solver_scalar_type > nzvals_
Stores the values of the nonzero entries for PardisoMKL. 
Definition: Amesos2_PardisoMKL_decl.hpp:274
Map types to solver-specific data-types and enums. 
Definition: Amesos2_TypeMap.hpp:82
int_t n_
Number of equations in the sparse linear system. 
Definition: Amesos2_PardisoMKL_decl.hpp:289
int_t nrhs_
number of righthand-side vectors 
Definition: Amesos2_PardisoMKL_decl.hpp:293
void set_pardiso_mkl_matrix_type(int_t mtype=0)
Definition: Amesos2_PardisoMKL_def.hpp:609
static const int_t msglvl_
The messaging level. Set to 1 if you wish for Pardiso MKL to print statistical info. 
Definition: Amesos2_PardisoMKL_decl.hpp:300
Teuchos::Array< solver_scalar_type > bvals_
Persisting, contiguous, 1D store for B. 
Definition: Amesos2_PardisoMKL_decl.hpp:282
std::string name() const 
Return the name of this solver. 
Definition: Amesos2_SolverCore_def.hpp:509
void * pt_[64]
PardisoMKL internal data address pointer. 
Definition: Amesos2_PardisoMKL_decl.hpp:285
Provides traits about solvers. 
Definition: Amesos2_SolverTraits.hpp:70
Teuchos::Array< int_t > perm_
Permutation vector. 
Definition: Amesos2_PardisoMKL_decl.hpp:291
Amesos2 interface to the PardisoMKL package. 
Definition: Amesos2_PardisoMKL_decl.hpp:83
int numericFactorization_impl()
PardisoMKL specific numeric factorization. 
Definition: Amesos2_PardisoMKL_def.hpp:179
Teuchos::Array< int_t > rowptr_
Stores the row indices of the nonzero entries. 
Definition: Amesos2_PardisoMKL_decl.hpp:278
int symbolicFactorization_impl()
Perform symbolic factorization of the matrix using PardisoMKL. 
Definition: Amesos2_PardisoMKL_def.hpp:147
bool loadA_impl(EPhase current_phase)
Reads matrix data into internal structures. 
Definition: Amesos2_PardisoMKL_def.hpp:511
Teuchos::Array< solver_scalar_type > xvals_
Persisting, contiguous, 1D store for X. 
Definition: Amesos2_PardisoMKL_decl.hpp:280
void setParameters_impl(const Teuchos::RCP< Teuchos::ParameterList > ¶meterList)
Definition: Amesos2_PardisoMKL_def.hpp:306
int solve_impl(const Teuchos::Ptr< MultiVecAdapter< Vector > > X, const Teuchos::Ptr< const MultiVecAdapter< Vector > > B) const 
PardisoMKL specific solve. 
Definition: Amesos2_PardisoMKL_def.hpp:206
Passes functions to TPL functions based on type. 
Definition: Amesos2_FunctionMap.hpp:76
void check_pardiso_mkl_error(EPhase phase, int_t error) const 
Throws an appropriate runtime error in the event that error < 0 . 
Definition: Amesos2_PardisoMKL_def.hpp:556
Provides access to interesting solver traits. 
Teuchos::Array< int_t > colind_
Stores the location in Ai_ and Aval_ that starts row j. 
Definition: Amesos2_PardisoMKL_decl.hpp:276
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters_impl() const 
Definition: Amesos2_PardisoMKL_def.hpp:409
bool matrixShapeOK_impl() const 
Determines whether the shape of the matrix is OK for this solver. 
Definition: Amesos2_PardisoMKL_def.hpp:297
int_t mtype_
The matrix type. We deal only with unsymmetrix matrices. 
Definition: Amesos2_PardisoMKL_decl.hpp:287
int_t iparm_[64]
Definition: Amesos2_PardisoMKL_decl.hpp:297
int preOrdering_impl()
Performs pre-ordering on the matrix to increase efficiency. 
Definition: Amesos2_PardisoMKL_def.hpp:136