## File: SensDenseGenSchurDriver.hpp

package info (click to toggle)
coinor-ipopt 3.11.9-2.1
 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 // Copyright 2009, 2011 Hans Pirnay // All Rights Reserved. // This code is published under the Eclipse Public License. // // Date : 2009-11-19 #ifndef __ASIFTSCHURDRIVER_HPP__ #define __ASIFTSCHURDRIVER_HPP__ #include "SensSchurDriver.hpp" #include "SensBacksolver.hpp" #include "IpDenseGenMatrix.hpp" namespace Ipopt { class DenseGenSchurDriver: public SchurDriver { public: DenseGenSchurDriver(SmartPtr backsolver, SmartPtr pcalc, SmartPtr data_B); virtual ~DenseGenSchurDriver(); /** Creates the SchurMatrix from B and P */ virtual bool SchurBuild(); /** Calls the factorization routine for the SchurMatrix */ virtual bool SchurFactorize(); /** Performs a backsolve on S and : Solves the system * * \f[\left[\begin{array}{c|c} * K & E\\\hline * E^T & 0 * \end{array} * \right] * \left[\begin{array}{c}x \\ y\end{array}\right] = * \left[\begin{array}{c}f \\ g\end{array}\right]\f] * * y will be stored in g at exit. * Kf should hold * * \f$K^{-1}f\f$ * * if it has been computed previously. If it is not available, just * pass in Kf=NULL and it will be computed internally. */ virtual bool SchurSolve(SmartPtr x, SmartPtr f, SmartPtr g, SmartPtr Kf=NULL); /** DEPRECATED Performs a backsolve on S and K virtual bool SchurSolve(SmartPtr lhs, SmartPtr rhs, SmartPtr delta_u); */ private: SmartPtr ift_data_; SmartPtr backsolver_; SmartPtr S_; }; } #endif