47 #ifndef MUELU_AMGXOPERATOR_DEF_HPP 
   48 #define MUELU_AMGXOPERATOR_DEF_HPP 
   51 #if defined (HAVE_MUELU_AMGX) 
   69                                                 Tpetra::MultiVector<double,int,int,Node>&       Y,
 
   77       for (
int i = 0; i < (int)Y.getNumVectors(); i++) {
 
   79           vectorTimer1_->start();
 
   81           mueluXdata = X.getData(i);
 
   82           mueluYdata = Y.getDataNonConst(i);
 
   84           if (comm->getSize() == 1) {
 
   85             amgxXdata = mueluXdata;
 
   86             amgxYdata = mueluYdata;
 
   89             int n = mueluXdata.
size();
 
   94             ArrayRCP<double> amgxXdata_nonConst = Teuchos::arcp_const_cast<
double>(amgxXdata);
 
   95             for (
int j = 0; j < n; j++) {
 
   96               amgxXdata_nonConst[muelu2amgx_[j]] = mueluXdata[j];
 
   97               amgxYdata         [muelu2amgx_[j]] = mueluYdata[j];
 
  101           AMGX_vector_upload(X_, N_, 1, &amgxXdata[0]);
 
  102           AMGX_vector_upload(Y_, N_, 1, &amgxYdata[0]);
 
  104           vectorTimer1_->stop();
 
  105           vectorTimer1_->incrementNumCalls();
 
  108         AMGX_solver_solve(Solver_, X_, Y_);
 
  111           vectorTimer2_->start();
 
  113           AMGX_vector_download(Y_,      &amgxYdata[0]);
 
  115           if (comm->getSize() > 1) {
 
  116             int n = mueluYdata.
size();
 
  118             for (
int j = 0; j < n; j++)
 
  119               mueluYdata[j] = amgxYdata[muelu2amgx_[j]];
 
  122           vectorTimer2_->stop();
 
  123           vectorTimer2_->incrementNumCalls();
 
  127     } 
catch (std::exception& e) {
 
  128       std::string errMsg = std::string(
"Caught an exception in MueLu::AMGXOperator::Apply():\n") + e.what() + 
"\n";
 
  139 #endif //if defined(HAVE_MUELU_AMGX) 
  141 #endif //ifdef MUELU_AMGXOPERATOR_DEF_HPP 
Teuchos::RCP< const Map > getRangeMap() const 
Returns the Tpetra::Map object associated with the range of this operator. 
void resize(const size_type n, const T &val=T())
void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const 
Returns a solution for the linear system AX=Y in the Tpetra::MultiVector X. 
Teuchos::RCP< const Map > getDomainMap() const 
Returns the Tpetra::Map object associated with the domain of this operator. 
Exception throws to report errors in the internal logical of the program. 
bool hasTransposeApply() const 
Indicates whether this operator supports applying the adjoint operator.