Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

operator/domainDecomp.hh
Go to the documentation of this file.
00001 /* Domain Decomposition solvers
00002  */
00003 
00004 #ifndef solverDomainDecomp_hh
00005 #define solverDomainDecomp_hh
00006 
00007 #include "basics/typedefs.hh"
00008 #include "operator/compositions.hh"
00009 #include "operator/solverFabric.hh"
00010 #include "operator/submatrix.hh"
00011 #include "space/domainDecomp.hh"
00012 #include "toolbox/sequence.hh"
00013 #include "toolbox/set.hh"
00014 
00015 namespace concepts {
00016 
00017  // ************************************************************** DDSolver **
00018 
00030   template<class F, class G = typename Realtype<F>::type>
00031   class DDSolver : public Operator<F> {
00032   public:
00043     DDSolver(DDSpace<G>& spc, Sequence<SparseMatrix<F>*>& A, bool explSchur,
00044              SolverFabric<F>& innerSolver,
00045              SolverFabric<F>& schurComplSolver,
00046              SolverFabric<F>* schurComplPrecond = 0);
00047     virtual ~DDSolver();
00051     virtual void operator()(const Function<F>& fncY, Function<F>& fncX);
00052     void operator()(const Vector<F>& fncY, Vector<F>& fncX);
00053   protected:
00054     virtual std::ostream& info(std::ostream& os) const;
00055   private:
00057     DDSpace<G>& spc_;
00059     Set<IndexRange> indicesB_;
00061     uint n_;
00063     Set<uint> domains_;
00065     DummySpace<G>* spc_B_;
00067     Sequence<const SparseMatrix<F>*> A_;
00071     Sequence<SubMatrixN<SparseMatrix<F> >*> A_II_, A_IB_, A_BI_, A_BB_;
00073     Sequence<Operator<F>*> A_II_inv_;
00075     Sequence<Operator<F>*> S_;
00077     Operator<F>* S_0_inv_;
00079     Operator<F>* S_inv_;
00080   };
00081 
00082 
00083 } // namespace concepts
00084 
00085 #endif // solverDomainDecomp_hh
00086 

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)