Go to the documentation of this file.00001
00002
00003 #ifndef constrainedSP_hh
00004 #define constrainedSP_hh
00005
00006 #include <memory>
00007 #include "compositions.hh"
00008 #include "sparseMatrix.hh"
00009
00010 namespace concepts {
00011
00012
00013 template<typename F>
00014 class SolverFabric;
00015
00016
00017
00027 class Constrained : public Operator<Real> {
00028 public:
00034 Constrained(SparseMatrix<Real>& S, SparseMatrix<Real>& C,
00035 const Vector<Real>& g, SolverFabric<Real>& fabric);
00036 virtual void operator()(const Function<Real>& fncY, Function<Real>& fncX);
00037 protected:
00038 virtual std::ostream& info(std::ostream& os) const;
00039 private:
00040 SparseMatrix<Real>& C_, &S_;
00041 SparseMatrix<Real> Ct_;
00042 std::auto_ptr<SparseMatrix<Real> > CCt_;
00043 const Vector<Real>& g_;
00044 Vector<Real> SRg_;
00045 std::auto_ptr<Operator<Real> > CCtinv_, solver_;
00046 std::auto_ptr<concepts::Compose<Real> > R_, Qmin_, CtC_, QS_, QSQ_;
00047 std::auto_ptr<LiCoI<Real> > Q_;
00048 std::auto_ptr<LiCo<Real> > Sp_;
00049 SolverFabric<Real>& fabric_;
00050 };
00051
00052 }
00053
00054 #endif // constrainedSP_hh