NLPInterfacePack_NLPDirect.hpp

Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 // 
00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
00005 //                  Copyright (2003) Sandia Corporation
00006 // 
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 // 
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //  
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //  
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
00025 // 
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 #ifndef NLP_FIRST_ORDER_DIRECT_H
00030 #define NLP_FIRST_ORDER_DIRECT_H
00031 
00032 #include "NLPInterfacePack_NLPObjGrad.hpp"
00033 #include "Teuchos_AbstractFactory.hpp"
00034 
00035 namespace NLPInterfacePack {
00036 
00098 class NLPDirect : virtual public NLPObjGrad
00099 {
00100 public:
00101 
00103   typedef Teuchos::RCP<
00104     const Teuchos::AbstractFactory<MatrixOp> >               mat_fcty_ptr_t;
00106   typedef Teuchos::RCP<
00107     const Teuchos::AbstractFactory<MatrixSymOp> >            mat_sym_fcty_ptr_t;
00109   typedef Teuchos::RCP<
00110     const Teuchos::AbstractFactory<MatrixSymOpNonsing> > mat_sym_nonsing_fcty_ptr_t;
00111 
00119   void set_factories(
00120     const mat_sym_fcty_ptr_t             &factory_transDtD
00121     ,const mat_sym_nonsing_fcty_ptr_t    &factory_S
00122     );
00123 
00126 
00136   virtual size_type r() const;
00137 
00139 
00143 
00152   virtual Range1D var_dep() const;
00161   virtual Range1D var_indep() const;
00170   virtual Range1D con_decomp() const;
00179   virtual Range1D con_undecomp() const;
00180 
00182 
00185   
00200   virtual const mat_fcty_ptr_t factory_GcU() const;
00207   virtual const mat_fcty_ptr_t factory_D() const = 0;
00219   virtual const mat_fcty_ptr_t factory_Uz() const;
00232   virtual const mat_fcty_ptr_t factory_GcUD() const;
00233 
00238   virtual const mat_sym_fcty_ptr_t factory_transDtD() const;
00239   
00244   virtual const mat_sym_nonsing_fcty_ptr_t factory_S() const;
00245 
00247 
00250 
00302   virtual void calc_point(
00303     const Vector     &x
00304     ,value_type      *f
00305     ,VectorMutable   *c
00306     ,bool            recalc_c
00307     ,VectorMutable   *Gf
00308     ,VectorMutable   *py
00309     ,VectorMutable   *rGf
00310     ,MatrixOp        *GcU
00311     ,MatrixOp        *D
00312     ,MatrixOp        *Uz
00313     ) const = 0;
00314 
00342   virtual void calc_semi_newton_step(
00343     const Vector    &x
00344     ,VectorMutable  *c
00345     ,bool           recalc_c
00346     ,VectorMutable  *py
00347     ) const = 0;
00348 
00350 
00353 
00364   void initialize(bool test_setup);
00365 
00367 
00368 private:
00369   mat_sym_fcty_ptr_t             factory_transDtD_;
00370   mat_sym_nonsing_fcty_ptr_t     factory_S_;
00371 
00372 };  // end class NLPDirect
00373 
00374 } // end namespace NLPInterfacePack
00375 
00376 #endif   // NLP_FIRST_ORDER_DIRECT_H

Generated on Wed May 12 21:52:31 2010 for MOOCHO (Single Doxygen Collection) by  doxygen 1.4.7