|
ConstrainedOptPack: C++ Tools for Constrained (and Unconstrained) Optimization
Version of the Day
|
00001 #if 0 00002 00003 // @HEADER 00004 // *********************************************************************** 00005 // 00006 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization 00007 // Copyright (2003) Sandia Corporation 00008 // 00009 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00010 // license for use of this work by or on behalf of the U.S. Government. 00011 // 00012 // Redistribution and use in source and binary forms, with or without 00013 // modification, are permitted provided that the following conditions are 00014 // met: 00015 // 00016 // 1. Redistributions of source code must retain the above copyright 00017 // notice, this list of conditions and the following disclaimer. 00018 // 00019 // 2. Redistributions in binary form must reproduce the above copyright 00020 // notice, this list of conditions and the following disclaimer in the 00021 // documentation and/or other materials provided with the distribution. 00022 // 00023 // 3. Neither the name of the Corporation nor the names of the 00024 // contributors may be used to endorse or promote products derived from 00025 // this software without specific prior written permission. 00026 // 00027 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00028 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00029 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00030 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00031 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00032 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00033 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00034 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00035 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00036 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00037 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00038 // 00039 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00040 // 00041 // *********************************************************************** 00042 // @HEADER 00043 00044 #include "ConstrainedOptPack_MatrixHessianSuperBasicInitDiagonal.hpp" 00045 #include "DenseLinAlgPack_DVectorClass.hpp" 00046 #include "Midynamic_cast_verbose.h" 00047 00048 namespace ConstrainedOptPack { 00049 00050 MatrixHessianSuperBasicInitDiagonal::MatrixHessianSuperBasicInitDiagonal() 00051 : B_RR_init_(NULL) 00052 {} 00053 00054 void MatrixHessianSuperBasicInitDiagonal::initialize( 00055 size_type n 00056 ,size_type n_R 00057 ,const size_type i_x_free[] 00058 ,const size_type i_x_fixed[] 00059 ,const EBounds bnd_fixed[] 00060 ,const B_RR_ptr_t& B_RR_ptr 00061 ,const B_RX_ptr_t& B_RX_ptr 00062 ,BLAS_Cpp::Transp B_RX_trans 00063 ,const B_XX_ptr_t& B_XX_ptr 00064 ) 00065 { 00066 using Teuchos::dyn_cast; 00067 00068 // Validate the B_RR supports this interface 00069 #ifdef _WINDOWS 00070 B_RR_init_ = &dynamic_cast<MatrixSymInitDiag&>( 00071 const_cast<MatrixSymWithOpFactorized&>(*B_RR_ptr) 00072 ); 00073 #else 00074 B_RR_init_ = &dyn_cast<MatrixSymInitDiag>( 00075 const_cast<MatrixSymWithOpFactorized&>(*B_RR_ptr) 00076 ); 00077 #endif 00078 00079 MatrixHessianSuperBasic::initialize( 00080 n,n_R,i_x_free,i_x_fixed,bnd_fixed 00081 ,B_RR_ptr,B_RX_ptr,B_RX_trans,B_XX_ptr 00082 ); 00083 } 00084 00085 // Overridden from MatrixSymInitDiag 00086 00087 void MatrixHessianSuperBasicInitDiagonal::init_identity( 00088 size_type n, value_type alpha ) 00089 { 00090 assert_initialized(); 00091 B_RR_init_->init_identity(n,alpha); 00092 MatrixHessianSuperBasic::initialize( 00093 n,n,NULL,NULL,NULL 00094 ,this->B_RR_ptr() 00095 ,this->B_RX_ptr(),this->B_RX_trans() 00096 ,this->B_XX_ptr() 00097 ); 00098 } 00099 00100 void MatrixHessianSuperBasicInitDiagonal::init_diagonal( 00101 const DVectorSlice& diag ) 00102 { 00103 assert_initialized(); 00104 B_RR_init_->init_diagonal(diag); 00105 MatrixHessianSuperBasic::initialize( 00106 diag.size(),diag.size(),NULL,NULL,NULL 00107 ,this->B_RR_ptr() 00108 ,this->B_RX_ptr(),this->B_RX_trans() 00109 ,this->B_XX_ptr() 00110 ); 00111 } 00112 00113 } // end namespace ConstrainedOptPack 00114 00115 #endif // 0
1.7.6.1