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_BASE_HPP
00030 #define THYRA_LINEAR_OP_WITH_SOLVE_BASE_HPP
00031
00032 #include "Thyra_LinearOpWithSolveBaseDecl.hpp"
00033 #include "Thyra_LinearOpBase.hpp"
00034
00035 namespace Thyra {
00036
00037 template <class RangeScalar, class DomainScalar>
00038 bool LinearOpWithSolveBase<RangeScalar,DomainScalar>::solveSupportsConj(EConj conj) const
00039 {
00040 return true;
00041 }
00042
00043 template <class RangeScalar, class DomainScalar>
00044 bool LinearOpWithSolveBase<RangeScalar,DomainScalar>::solveTransposeSupportsConj(EConj conj) const
00045 {
00046 return false;
00047 }
00048
00049 template <class RangeScalar, class DomainScalar>
00050 bool LinearOpWithSolveBase<RangeScalar,DomainScalar>::solveSupportsSolveMeasureType(EConj conj, const SolveMeasureType& solveMeasureType) const
00051 {
00052 return solveMeasureType.useDefault();
00053 }
00054
00055 template <class RangeScalar, class DomainScalar>
00056 bool LinearOpWithSolveBase<RangeScalar,DomainScalar>::solveTransposeSupportsSolveMeasureType(EConj conj, const SolveMeasureType& solveMeasureType) const
00057 {
00058 return solveMeasureType.useDefault();
00059 }
00060
00061 template <class RangeScalar, class DomainScalar>
00062 void LinearOpWithSolveBase<RangeScalar,DomainScalar>::solveTranspose(
00063 const EConj conj
00064 ,const MultiVectorBase<DomainScalar> &B
00065 ,MultiVectorBase<RangeScalar> *X
00066 ,const int numBlocks
00067 ,const BlockSolveCriteria<PromotedScalar> blockSolveCriteria[]
00068 ,SolveStatus<PromotedScalar> blockSolveStatus[]
00069 ) const
00070 {
00071 TEST_FOR_EXCEPTION(
00072 true,std::logic_error
00073 ,"LinearOpWithSolveBase<"<<Teuchos::ScalarTraits<RangeScalar>::name()<<","<<Teuchos::ScalarTraits<DomainScalar>::name()<<">::solveTranspose(...): "
00074 "Error, the concrete subclass described as { " << this->description() << " } "
00075 " with this->solveTransposeSupportsConj("<<toString(conj)<<")="<<this->solveTransposeSupportsConj(conj)
00076 << " did not override this function and does not support transposes."
00077 );
00078 }
00079
00080 }
00081
00082 #endif // THYRA_LINEAR_OP_WITH_SOLVE_BASE_HPP