00001 // @(#)root/quadp:$Id: TQpLinSolverSparse.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Eddy Offermann May 2004 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 /************************************************************************* 00013 * Parts of this file are copied from the OOQP distribution and * 00014 * are subject to the following license: * 00015 * * 00016 * COPYRIGHT 2001 UNIVERSITY OF CHICAGO * 00017 * * 00018 * The copyright holder hereby grants you royalty-free rights to use, * 00019 * reproduce, prepare derivative works, and to redistribute this software* 00020 * to others, provided that any changes are clearly documented. This * 00021 * software was authored by: * 00022 * * 00023 * E. MICHAEL GERTZ gertz@mcs.anl.gov * 00024 * Mathematics and Computer Science Division * 00025 * Argonne National Laboratory * 00026 * 9700 S. Cass Avenue * 00027 * Argonne, IL 60439-4844 * 00028 * * 00029 * STEPHEN J. WRIGHT swright@cs.wisc.edu * 00030 * Computer Sciences Department * 00031 * University of Wisconsin * 00032 * 1210 West Dayton Street * 00033 * Madison, WI 53706 FAX: (608)262-9777 * 00034 * * 00035 * Any questions or comments may be directed to one of the authors. * 00036 * * 00037 * ARGONNE NATIONAL LABORATORY (ANL), WITH FACILITIES IN THE STATES OF * 00038 * ILLINOIS AND IDAHO, IS OWNED BY THE UNITED STATES GOVERNMENT, AND * 00039 * OPERATED BY THE UNIVERSITY OF CHICAGO UNDER PROVISION OF A CONTRACT * 00040 * WITH THE DEPARTMENT OF ENERGY. * 00041 *************************************************************************/ 00042 00043 #ifndef ROOT_TQpLinSolverSparse 00044 #define ROOT_TQpLinSolverSparse 00045 00046 #include "TQpLinSolverBase.h" 00047 #ifndef ROOT_TQpProbSparse 00048 #include "TQpProbSparse.h" 00049 #endif 00050 #ifndef ROOT_TQpDataSparse 00051 #include "TQpDataSparse.h" 00052 #endif 00053 00054 #include "TDecompSparse.h" 00055 00056 /////////////////////////////////////////////////////////////////////////// 00057 // // 00058 // Implements the aspects of the solvers for dense general QP // 00059 // formulation that are specific to the dense case. // 00060 // // 00061 /////////////////////////////////////////////////////////////////////////// 00062 00063 class TQpProbSparse; 00064 class TQpLinSolverSparse : public TQpLinSolverBase 00065 { 00066 00067 protected: 00068 00069 TMatrixDSparse fKkt; 00070 TDecompSparse fSolveSparse; 00071 00072 public: 00073 TQpLinSolverSparse() {} 00074 TQpLinSolverSparse(TQpProbSparse *factory,TQpDataSparse *data); 00075 TQpLinSolverSparse(const TQpLinSolverSparse &another); 00076 00077 virtual ~TQpLinSolverSparse() {} 00078 00079 virtual void Factor (TQpDataBase *prob,TQpVar *vars); 00080 virtual void SolveCompressed(TVectorD &rhs); 00081 virtual void PutXDiagonal (TVectorD &xdiag); 00082 virtual void PutZDiagonal (TVectorD &zdiag); 00083 00084 TQpLinSolverSparse &operator= (const TQpLinSolverSparse &source); 00085 00086 ClassDef(TQpLinSolverSparse,1) // Qp linear solver class for Sparse formulation 00087 }; 00088 #endif