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_BASE_DEF_HPP
00030 #define THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_BASE_DEF_HPP
00031
00032
00033 #include "Thyra_LinearOpWithSolveFactoryBase_decl.hpp"
00034
00035
00036 namespace Thyra {
00037
00038
00039 template<class Scalar>
00040 bool LinearOpWithSolveFactoryBase<Scalar>::acceptsPreconditionerFactory() const
00041 {
00042 return false;
00043 }
00044
00045
00046 template<class Scalar>
00047 void LinearOpWithSolveFactoryBase<Scalar>::setPreconditionerFactory(
00048 const RCP<PreconditionerFactoryBase<Scalar> > &precFactory
00049 ,const std::string &precFactoryName
00050 )
00051 {
00052 TEST_FOR_EXCEPTION(
00053 true,std::logic_error
00054 ,"Error, the concrete implementation described as \'"<<this->description()<<"\' did not override this "
00055 "setPreconditionerFactory(...) function and the default implementation throws this exception!"
00056 );
00057 }
00058
00059
00060 template<class Scalar>
00061 RCP<PreconditionerFactoryBase<Scalar> >
00062 LinearOpWithSolveFactoryBase<Scalar>::getPreconditionerFactory() const
00063 {
00064 return Teuchos::null;
00065 }
00066
00067
00068 template<class Scalar>
00069 void LinearOpWithSolveFactoryBase<Scalar>::unsetPreconditionerFactory(
00070 RCP<PreconditionerFactoryBase<Scalar> > *precFactory
00071 ,std::string *precFactoryName
00072 )
00073 {
00074 if(precFactory) *precFactory = Teuchos::null;
00075 if(precFactoryName) *precFactoryName = "";
00076 }
00077
00078
00079 template<class Scalar>
00080 void LinearOpWithSolveFactoryBase<Scalar>::initializeAndReuseOp(
00081 const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc
00082 ,LinearOpWithSolveBase<Scalar> *Op
00083 ) const
00084 {
00085 this->initializeOp(fwdOpSrc,Op);
00086 }
00087
00088
00089 template<class Scalar>
00090 bool LinearOpWithSolveFactoryBase<Scalar>::supportsPreconditionerInputType(
00091 const EPreconditionerInputType precOpType
00092 ) const
00093 {
00094 return false;
00095 }
00096
00097
00098 template<class Scalar>
00099 void LinearOpWithSolveFactoryBase<Scalar>::initializePreconditionedOp(
00100 const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc
00101 ,const RCP<const PreconditionerBase<Scalar> > &prec
00102 ,LinearOpWithSolveBase<Scalar> *Op
00103 ,const ESupportSolveUse supportSolveUse
00104 ) const
00105 {
00106 TEST_FOR_EXCEPTION(
00107 true,std::logic_error
00108 ,"Error, the concrete implementation described as \'"<<this->description()<<"\' did not override this "
00109 "initializePreconditionedOp(...) function and the default implementation throws this exception!"
00110 );
00111 }
00112
00113
00114 template<class Scalar>
00115 void LinearOpWithSolveFactoryBase<Scalar>::initializeApproxPreconditionedOp(
00116 const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc
00117 ,const RCP<const LinearOpSourceBase<Scalar> > &approxFwdOpSrc
00118 ,LinearOpWithSolveBase<Scalar> *Op
00119 ,const ESupportSolveUse supportSolveUse
00120 ) const
00121 {
00122 TEST_FOR_EXCEPTION(
00123 true,std::logic_error
00124 ,"Error, the concrete implementation described as \'"<<this->description()<<"\' did not override this "
00125 "initializePreconditionedOp(...) function and the default implementation throws this exception!"
00126 );
00127 }
00128
00129
00130 }
00131
00132
00133 #endif // THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_BASE_DEF_HPP