LAMA
|
00001 00033 #ifndef LAMA_IterativeSolverCreator_HPP_ 00034 #define LAMA_IterativeSolverCreator_HPP_ 00035 00036 // for dll_import 00037 #include <lama/config.hpp> 00038 00039 // base classes 00040 #include <lama/solver/creator/SolverCreator.hpp> 00041 00042 //qi, phoenix, fusion 00043 #include <boost/config/warning_disable.hpp> 00044 #include <boost/spirit/include/qi.hpp> 00045 #include <boost/spirit/include/phoenix_core.hpp> 00046 #include <boost/spirit/include/phoenix_operator.hpp> 00047 #include <boost/spirit/include/phoenix_fusion.hpp> 00048 #include <boost/spirit/include/phoenix_stl.hpp> 00049 #include <boost/spirit/home/phoenix/bind/bind_member_function.hpp> 00050 #include <boost/fusion/include/adapt_struct.hpp> 00051 #include <boost/variant/recursive_variant.hpp> 00052 00053 namespace lama 00054 { 00055 00056 namespace phoenix = boost::phoenix; 00057 namespace qi = boost::spirit::qi; 00058 namespace ascii = boost::spirit::ascii; 00059 00060 class LAMA_DLL_IMPORTEXPORT IterativeSolverCreator : public SolverCreator 00061 { 00062 public: 00063 using SolverCreator::RuleType; 00064 00065 virtual ~IterativeSolverCreator(); 00066 00070 virtual RuleType& getCreatorRule() = 0; 00071 00072 protected: 00073 using SolverCreator::InternRuleType; 00074 00075 IterativeSolverCreator(); 00076 00077 RuleType mRPreconditioner; 00078 InternRuleType mRIterativeSolver; 00079 00080 using SolverCreator::mRSolver; 00081 00082 private: 00083 LAMA_LOG_DECL_STATIC_LOGGER(logger); 00084 }; 00085 00086 } // namespace lama 00087 00088 #endif // LAMA_IterativeSolverCreator_HPP_