45#ifndef THYRA_GENERAL_SOLVE_CRITERIA_BELOS_STATUS_TEST_DECL_HPP
46#define THYRA_GENERAL_SOLVE_CRITERIA_BELOS_STATUS_TEST_DECL_HPP
48#include "Thyra_SolveSupportTypes.hpp"
52#include "Teuchos_VerboseObject.hpp"
64 :
public Belos::StatusTest<Scalar, MultiVectorBase<Scalar>, LinearOpBase<Scalar> >,
65 public Teuchos::VerboseObject<GeneralSolveCriteriaBelosStatusTest<Scalar> >
72 typedef MultiVectorBase<Scalar>
MV;
74 typedef LinearOpBase<Scalar>
OP;
76 typedef typename ScalarTraits<Scalar>::magnitudeType
ScalarMag;
87 const int convergenceTestFrequency);
101 virtual void reset();
103 virtual void print(std::ostream& os,
int indent)
const;
108 SolveCriteria<Scalar> solveCriteria_;
109 int convergenceTestFrequency_;
114 Array<ScalarMag> r0_nrm_;
115 Array<ScalarMag> b_nrm_;
116 Array<ScalarMag> lastNumerator_;
117 Array<ScalarMag> lastDenominator_;
118 Array<ScalarMag> lastAchievedTol_;
124 ScalarMag computeReductionFunctional(ESolveMeasureNormType measureType,
125 const Ptr<
const ReductionFunctional<Scalar> > &reductFunc,
126 const Ptr<
const VectorBase<Scalar> > &x,
127 const Ptr<
const VectorBase<Scalar> > &r
130 void printRhsStatus(
const int currIter,
const int j, std::ostream &out,
131 int indent = 0)
const;
140template<
class Scalar>
141RCP<GeneralSolveCriteriaBelosStatusTest<Scalar> >
143 const SolveCriteria<Scalar> &solveCriteria,
144 const int convergenceTestFrequency
147 RCP<GeneralSolveCriteriaBelosStatusTest<Scalar> >
149 gscbst->setSolveCriteria(solveCriteria, convergenceTestFrequency);
Subclass of Belos::StatusTest that implements every possible form of SolveCriteria that exists by for...
GeneralSolveCriteriaBelosStatusTest()
void setSolveCriteria(const SolveCriteria< Scalar > &solveCriteria, const int convergenceTestFrequency)
RCP< GeneralSolveCriteriaBelosStatusTest< Scalar > > createGeneralSolveCriteriaBelosStatusTest(const SolveCriteria< Scalar > &solveCriteria, const int convergenceTestFrequency)
Nonmember constructor.
MultiVectorBase< Scalar > MV
virtual Belos::StatusType getStatus() const
virtual Belos::StatusType checkStatus(Belos::Iteration< Scalar, MV, OP > *iSolver)
LinearOpBase< Scalar > OP
ScalarTraits< Scalar >::magnitudeType ScalarMag
ArrayView< const ScalarMag > achievedTol() const
virtual void print(std::ostream &os, int indent) const