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 BELOS_CG_ITERATION_HPP
00030 #define BELOS_CG_ITERATION_HPP
00031
00036 #include "BelosConfigDefs.hpp"
00037 #include "BelosTypes.hpp"
00038 #include "BelosIteration.hpp"
00039
00040 namespace Belos {
00041
00043
00044
00049 template <class ScalarType, class MV>
00050 struct CGIterationState {
00051
00053 Teuchos::RCP<const MV> R;
00054
00056 Teuchos::RCP<const MV> Z;
00057
00059 Teuchos::RCP<const MV> P;
00060
00062 Teuchos::RCP<const MV> AP;
00063
00064 CGIterationState() : R(Teuchos::null), Z(Teuchos::null),
00065 P(Teuchos::null), AP(Teuchos::null)
00066 {}
00067 };
00068
00070
00071
00083 class CGIterationInitFailure : public BelosError {public:
00084 CGIterationInitFailure(const std::string& what_arg) : BelosError(what_arg)
00085 {}};
00086
00093 class CGIterateFailure : public BelosError {public:
00094 CGIterateFailure(const std::string& what_arg) : BelosError(what_arg)
00095 {}};
00096
00103 class CGIterationOrthoFailure : public BelosError {public:
00104 CGIterationOrthoFailure(const std::string& what_arg) : BelosError(what_arg)
00105 {}};
00106
00113 class CGIterationLAPACKFailure : public BelosError {public:
00114 CGIterationLAPACKFailure(const std::string& what_arg) : BelosError(what_arg)
00115 {}};
00116
00118
00119
00120 template<class ScalarType, class MV, class OP>
00121 class CGIteration : virtual public Iteration<ScalarType,MV,OP> {
00122
00123 public:
00124
00126
00127
00141 virtual void initializeCG(CGIterationState<ScalarType,MV> newstate) = 0;
00142
00149 virtual CGIterationState<ScalarType,MV> getState() const = 0;
00151
00152 };
00153
00154 }
00155
00156 #endif