00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_SUBCLASS_HELPERS_HPP
00030 #define THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_SUBCLASS_HELPERS_HPP
00031
00032
00033 #include "Thyra_LinearOpWithSolveBase.hpp"
00034
00035
00036 namespace Thyra {
00037
00038
00046 template<class Scalar>
00047 void assertSupportsSolveMeasureType(
00048 const LinearOpWithSolveBase<Scalar> &lows,
00049 const ETransp M_trans,
00050 const SolveMeasureType &solveMeasureType
00051 );
00052
00053
00054 }
00055
00056
00057
00058
00059
00060
00061
00062 template<class Scalar>
00063 void Thyra::assertSupportsSolveMeasureType(
00064 const LinearOpWithSolveBase<Scalar> &lows,
00065 const ETransp M_trans,
00066 const SolveMeasureType &solveMeasureType
00067 )
00068 {
00069 TEST_FOR_EXCEPTION(
00070 !solveSupportsSolveMeasureType(lows,M_trans,solveMeasureType),
00071 std::logic_error,
00072 "Error, the LinearOpWithSolve object \"" << lows.description() << "\"\n"
00073 "for M_trans = " << toString(M_trans) << " does not support the solve"
00074 " measure = "
00075 << toString(solveMeasureType.numerator)
00076 << "/"
00077 << toString(solveMeasureType.denominator)
00078 << "!"
00079 );
00080 }
00081
00082
00083
00084 #endif // THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_SUBCLASS_HELPERS_HPP