00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _MULTIGRID_OPTIONS_HPP_
00021 #define _MULTIGRID_OPTIONS_HPP_
00022
00023 #include <ParametrizableObject.hpp>
00024
00025 class MultiGridOptions
00026 : public ParametrizableObject
00027 {
00028 private:
00029 std::ostream& put(std::ostream& os) const
00030 {
00031 os << this->identifier();
00032 return os;
00033 }
00034
00035 public:
00036 static const char* identifier()
00037 {
00038
00039 return "multigrid";
00040 }
00041
00042 real_t epsilon()
00043 {
00044 real_t eps;
00045 get("epsilon",eps);
00046 return eps;
00047 }
00048
00049 real_t omega()
00050 {
00051 real_t omega;
00052 get("omega",omega);
00053 return omega;
00054 }
00055
00056 int maxiter()
00057 {
00058 int maxiter;
00059 get("maxiter",maxiter);
00060 return maxiter;
00061 }
00062
00063 int level()
00064 {
00065 int level;
00066 get("level",level);
00067 return level;
00068 }
00069
00070 int mu1()
00071 {
00072 int mu1;
00073 get("mu1",mu1);
00074 return mu1;
00075 }
00076
00077 int mu2()
00078 {
00079 int mu2;
00080 get("mu2",mu2);
00081 return mu2;
00082 }
00083
00084 int nu1()
00085 {
00086 int nu1;
00087 get("nu1",nu1);
00088 return nu1;
00089 }
00090
00091 int nu2()
00092 {
00093 int nu2;
00094 get("nu2",nu2);
00095 return nu2;
00096 }
00097
00098 explicit MultiGridOptions()
00099 {
00100
00101 add(new IntegerParameter(1, "maxiter"));
00102
00103 add(new IntegerParameter(3, "level"));
00104
00105 add(new IntegerParameter(2, "nu1"));
00106
00107 add(new IntegerParameter(2, "nu2"));
00108
00109 add(new IntegerParameter(1, "mu1"));
00110
00111 add(new IntegerParameter(1, "mu2"));
00112
00113 add(new DoubleParameter (1E-4,"epsilon"));
00114
00115 add(new DoubleParameter (2./3.,"omega"));
00116 }
00117
00118 ~MultiGridOptions()
00119 {
00120 ;
00121 }
00122
00123 };
00124
00125 #endif // _MULTIGRID_OPTIONS_HPP_
00126