10 #ifndef __Belos_InnerSolver_hpp 
   11 #define __Belos_InnerSolver_hpp 
   32   template<
class Scalar, 
class MV, 
class OP>
 
   45     RCP<const OP> A = problem->getOperator (); 
 
   46     RCP<MV> X_orig = problem->getLHS ();
 
   48            "problemWithNewRHS(): The original LinearProblem's " 
   49            "initial guess / current approximate solution (getLHS())" 
   50            " is null.  We need an initial guess or current approxim" 
   51            "ate solution in order to know the domain of the (right-" 
   52            "preconditioned, if applicable) operator.  This is " 
   53            "because Belos::MultiVecTraits does not include the idea" 
   54            " of the domain and range of an operator, or the space " 
   55            "to which a vector belongs.");
 
   57            "problemWithNewRHS(): the given new right-hand side B " 
   59     RCP<MV> X = MVT::CloneCopy (problem->getLHS ());
 
   61     RCP<lp_type> lp (
new lp_type (A, X, B));
 
   62     lp->setLeftPrec (problem->getLeftPrec ());
 
   63     lp->setRightPrec (problem->getRightPrec ());
 
  105   template<
class Scalar, 
class MV, 
class OP>
 
  172      const int maxItersPerRestart,
 
  173      const int maxNumRestarts) = 0;
 
  232   template<
class Scalar, 
class MV, 
class OP>
 
  242       using Teuchos::rcpFromRef;
 
  245        "Belos::InnerSolver is not able to solve the " 
  246        "transposed system.");
 
  247       RCP<const MV> x_ptr = rcpFromRef (x);
 
  248       RCP<MV> y_ptr = rcpFromRef (y);
 
  249       (void) Op.
solve (y_ptr, x_ptr);
 
  261   template<
class Scalar, 
class MV, 
class OP>
 
  265       (void) Scalar::this_specialization_is_not_defined();
 
  266       (void) MV::this_specialization_is_not_defined();
 
  267       (void) OP::this_specialization_is_not_defined();
 
  290   template<
class Scalar, 
class MV, 
class OP>
 
  307       using Teuchos::rcp_implicit_cast;
 
  328       using Teuchos::rcp_dynamic_cast;
 
  332       RCP<wrapper_type> wrapper = rcp_dynamic_cast<
wrapper_type> (op, 
true);
 
  333       return wrapper->getInnerSolver();
 
  339 #endif // __Belos_InnerSolver_hpp 
virtual Teuchos::RCP< const Teuchos::ParameterList > getCurrentParameters() const =0
Current parameters for the inner solver implementation. 
 
Teuchos::RCP< LinearProblem< Scalar, MV, OP > > problemWithNewRHS(const Teuchos::RCP< const LinearProblem< Scalar, MV, OP > > &problem, const Teuchos::RCP< const MV > &B)
New LinearProblem with different right-hand side. 
 
bool is_null(const boost::shared_ptr< T > &p)
 
static Teuchos::RCP< inner_solver_type > getInnerSolver(const Teuchos::RCP< operator_type > &op)
Return the given wrapper's inner solver object. 
 
static Teuchos::RCP< OP > makeInnerSolverOperator(const Teuchos::RCP< InnerSolver< Scalar, MV, OP > > &solver)
Wrap the given inner solver in a wrapper_type. 
 
Undefined wrapper type, to check at compile time whether InnerSolverTraits has been specialized...
 
bool nonnull(const std::shared_ptr< T > &p)
 
bool is_null(const std::shared_ptr< T > &p)
 
Represents the result of an inner solve. 
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
Declaration of basic traits for the multivector type. 
 
Class which defines basic traits for the operator type. 
 
ETrans
Whether to apply the (conjugate) transpose of an operator. 
 
Traits class which defines basic operations on multivectors. 
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
virtual InnerSolveResult solve(const Teuchos::RCP< MV > &X, const Teuchos::RCP< const MV > &B, const magnitude_type convTol, const int maxItersPerRestart, const int maxNumRestarts)=0
Solve  for the given right-hand side(s) B. 
 
Wrap an InnerSolver in an OP (operator). 
 
A linear system to solve, and its associated information. 
 
Class which describes the linear problem to be solved by the iterative solver. 
 
Teuchos::ScalarTraits< Scalar >::magnitudeType magnitude_type
 
UndefinedWrapperType< Scalar, MV, OP > wrapper_type
 
virtual ~InnerSolver()
Virtual destructor, for correctness. 
 
static void Apply(const InnerSolver< Scalar, MV, OP > &Op, const MV &x, MV &y, ETrans trans=NOTRANS)
 
InnerSolver< scalar_type, multivector_type, operator_type > inner_solver_type
 
Class which defines basic traits for the operator type.