42#ifndef THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_SUBCLASS_HELPERS_HPP
43#define THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_SUBCLASS_HELPERS_HPP
46#include "Thyra_LinearOpWithSolveBase.hpp"
47#include "Teuchos_toString.hpp"
75void assertSupportsSolveMeasureType(
91void Thyra::assertSolveSupports(
101 "Error, the LinearOpWithSolve object \"" << lows.
description() <<
"\"\n"
102 "for M_trans = " << toString(M_trans) <<
" does not support the solve"
104 << ( nonnull(solveCriteria) ? toString(*solveCriteria) : std::string(
"null") )
111template<
class Scalar>
112void Thyra::assertSupportsSolveMeasureType(
113 const LinearOpWithSolveBase<Scalar> &lows,
114 const EOpTransp M_trans,
115 const SolveMeasureType &solveMeasureType
119 !solveSupportsSolveMeasureType(lows,M_trans,solveMeasureType),
121 "Error, the LinearOpWithSolve object \"" << lows.description() <<
"\"\n"
122 "for M_trans = " << toString(M_trans) <<
" does not support the solve"
124 << toString(solveMeasureType.numerator)
126 << toString(solveMeasureType.denominator)
virtual std::string description() const
Base class for all linear operators that can support a high-level solve operation.
bool solveSupports(EOpTransp transp) const
Return if solve() supports the argument transp.
void assertSolveSupports(const LinearOpWithSolveBase< Scalar > &lows, const EOpTransp M_trans, const Ptr< const SolveCriteria< Scalar > > solveCriteria=Teuchos::null)
Assert that a LOWSB object supports a particular solve type.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
T_To & dyn_cast(T_From &from)
std::string toString(const T &t)
Simple struct that defines the requested solution criteria for a solve.