Go to the documentation of this file.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 TSFLINEARSOLVERBASEIMPL_HPP
00030 #define TSFLINEARSOLVERBASEIMPL_HPP
00031
00032 #include "TSFLinearSolverBaseDecl.hpp"
00033 #include "TSFPreconditioner.hpp"
00034 #include "TSFPreconditionerFactory.hpp"
00035 #include "Teuchos_ParameterList.hpp"
00036
00037
00038 using namespace Teuchos;
00039
00040
00041 namespace TSFExtended
00042 {
00043
00044 template <class Scalar> inline
00045 const ParameterList& LinearSolverBase<Scalar>::parameters() const
00046 {return params_;}
00047
00048 template <class Scalar> inline
00049 LinearSolverBase<Scalar>::LinearSolverBase(const ParameterList& params)
00050 : DefaultObjectWithVerbosity(),
00051 params_(params)
00052 {}
00053
00054 template <class Scalar> inline
00055 ParameterList& LinearSolverBase<Scalar>::parameters() {return params_;}
00056
00057
00058 template <class Scalar> inline
00059 string LinearSolverBase<Scalar>::verbosityParam() {return "Verbosity";}
00060
00061 template <class Scalar>
00062 template <typename T> inline
00063 void LinearSolverBase<Scalar>::setParameter(const ParameterList& params,
00064 T* dataPtr,
00065 const std::string& name)
00066 {
00067 if (!params.isParameter(name)) return;
00068
00069 TEST_FOR_EXCEPTION(!params.template isType<T>(name), std::runtime_error,
00070 "invalid type for parameter [" << name << "]");
00071
00072 *dataPtr = params.template get<T>(name);
00073 }
00074
00075 template <class Scalar> inline
00076 void LinearSolverBase<Scalar>::setUserPrec(const PreconditionerFactory<Scalar>& pf)
00077 {
00078 TEST_FOR_EXCEPTION(true, std::runtime_error,
00079 "User-defined preconditioning not allowed for generic "
00080 "linear solver subtypes");
00081 }
00082
00083 template <class Scalar> inline
00084 void LinearSolverBase<Scalar>::setUserPrec(const LinearOperator<Scalar>& P,
00085 const LinearSolver<Scalar>& pSolver)
00086 {
00087 TEST_FOR_EXCEPTION(true, std::runtime_error,
00088 "User-defined preconditioning not allowed for generic "
00089 "linear solver subtypes");
00090 }
00091
00092 }
00093
00094 #endif