00001 00005 class SchwarzDD : public MLSolver 00006 00007 { 00008 protected: 00009 virtual SpaceId noOfOverlapSpaces() const; 00010 00011 public: 00012 00013 SchwarzDD (const MLSolver_prm& pm); 00014 ~SchwarzDD () {} 00015 00016 virtual bool solve (StartVectorMode start); 00017 00018 virtual String description () const; 00019 virtual int getWork (const PrecondWork work_tp) const; 00020 virtual real getStorage () const; 00021 00022 CLASS_INFO 00023 }; 00024 00025 00026 00081 class AddSchwarzDD : public SchwarzDD 00082 00083 { 00084 public: 00085 00086 AddSchwarzDD (const MLSolver_prm& pm); 00087 ~AddSchwarzDD () {} 00088 00089 virtual bool solve (StartVectorMode start); 00090 00091 virtual int getWork (const PrecondWork work_tp) const; 00092 virtual real getStorage () const; 00093 virtual String description () const; 00094 00095 CLASS_INFO 00096 }; 00097 00098 00099 00119 class SymSchwarzDD : public SchwarzDD 00120 00121 { 00122 protected: 00123 VecSimplest(Handle(LinEqVector)) linear_subproblem_res; 00124 00125 public: 00126 00127 SymSchwarzDD (const MLSolver_prm& pm); 00128 ~SymSchwarzDD () {} 00129 00130 virtual void init(); 00131 00132 virtual bool solve (StartVectorMode start); 00133 00134 virtual int getWork (const PrecondWork work_tp) const; 00135 virtual String description () const; 00136 00137 CLASS_INFO 00138 }; 00139 00140 00141 00161 class CoarseAddCoarseSchwarzDD : public AddSchwarzDD 00162 00163 { 00164 protected: 00165 Handle(LinEqVector) coarseRhs; 00166 virtual SpaceId noOfOverlapSpaces() const; 00167 virtual SpaceId coarseSpace() const; 00168 public: 00169 00170 CoarseAddCoarseSchwarzDD (const MLSolver_prm& pm); 00171 ~CoarseAddCoarseSchwarzDD () {} 00172 00173 virtual bool solve (StartVectorMode start); 00174 virtual void init (); 00175 00176 virtual String description () const; 00177 00178 CLASS_INFO 00179 }; 00180 00181 00182