This file is indexed.

/usr/include/trilinos/MoochoPack_NLPAlgoConfigIP.hpp is in libtrilinos-dev 10.4.0.dfsg-1ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// @HEADER
// ***********************************************************************
// 
// Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
//                  Copyright (2003) Sandia Corporation
// 
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
// license for use of this work by or on behalf of the U.S. Government.
// 
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of the
// License, or (at your option) any later version.
//  
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//  
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
// Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
// 
// ***********************************************************************
// @HEADER

#ifndef ALGO_CONFIG_IP_H
#define ALGO_CONFIG_IP_H

#include "MoochoPack_NLPAlgoConfig.hpp"
#include "MoochoPack_NLPAlgo.hpp"
#include "MoochoPack_DecompositionSystemStateStepBuilderStd.hpp"
#include "OptionsFromStreamPack_OptionsFromStream.hpp"

namespace MoochoPack {

/** \brief This is a do all configuration class for <tt>NLPAlgo</tt>.
 *
 * Options specific for to this configuration class and the classes that
 * it works with that can be set through <tt>this->set_options()</tt>, see the file
 * <tt>\ref Algo_ConfigIP_opts "Moocho.opt.NLPAlgoConfigIP"</tt>.
 *
 * Note that all built-in support for basis permutations and direct sparse solvers
 * can be left out if the macro MOOCHO_NO_BASIS_PERM_DIRECT_SOLVERS is defined.
 * 
 * ToDo: Finish documentation!
 */
class NLPAlgoConfigIP : public NLPAlgoConfig {
public:

  /** \brief . */
  NLPAlgoConfigIP();

  /** \brief . */
  ~NLPAlgoConfigIP();

  /** Overridden from NLPAlgoConfig */
  //@{

  /** \brief Set the <tt>OptionsFromStream</tt> object that will be used for specifying the options.
   *
   *  @param  options
   *               [in] If \c NULL then no options will be set.  If <tt>!=NULL</tt> then
   *               this is the \c OptionsFromStream object that will be used to extract the
   *               options to use for the algorithm.  The state of this object must
   *               be maintained by the client until \c config_algo_cntr() is called
   *               and it is at this point that the options are read.
   *
   */
  void set_options( const options_ptr_t& options );
  /** \brief . */
  const options_ptr_t& get_options() const;
  /** \brief . */
  void config_algo_cntr(NLPAlgoContainer* algo_cntr, std::ostream* trase_out);
  /** \brief . */
  void init_algo(NLPAlgoInterface* algo);

  //@}

public:

  /** @name Enums for variaous options categories */
  //@{

  /** \brief . */
  enum EQuasiNewton {
    QN_AUTO, QN_BFGS, QN_PBFGS, QN_LBFGS, QN_LPBFGS };
  /** \brief . */
  enum EHessianInitialization {
    INIT_HESS_AUTO, INIT_HESS_IDENTITY, INIT_HESS_FIN_DIFF_SCALE_IDENTITY
    , INIT_HESS_FIN_DIFF_SCALE_DIAGONAL, INIT_HESS_FIN_DIFF_SCALE_DIAGONAL_ABS };
  /** \brief . */
  enum EQPSolverType {
    QP_AUTO, QP_QPSOL, QP_QPOPT, QP_QPKWIK, QP_QPSCHUR };
  /** \brief . */
  enum ELineSearchMethod {
    LINE_SEARCH_AUTO, LINE_SEARCH_NONE, LINE_SEARCH_DIRECT
    , LINE_SEARCH_2ND_ORDER_CORRECT, LINE_SEARCH_WATCHDOG
    , LINE_SEARCH_FILTER };
  /** \brief . */
  enum EMeritFunctionType {
    MERIT_FUNC_AUTO, MERIT_FUNC_L1, MERIT_FUNC_MOD_L1
    , MERIT_FUNC_MOD_L1_INCR };
  /** \brief . */
  enum EL1PenaltyParamUpdate {
    L1_PENALTY_PARAM_AUTO, L1_PENALTY_PARAM_WITH_MULT
    , L1_PENALTY_PARAM_MULT_FREE };

  //@}

  /** @name Struct for options values */
  //@{

  /** \brief . */
  struct SOptionValues {
    // Constructor (sets default values)
    SOptionValues();
    // Variable Reduction,  Range/Null space decompositions
    value_type				max_basis_cond_change_frac_;	// If < , don't change default
    // Reduced Hessian Approximations
    bool					exact_reduced_hessian_;
    EQuasiNewton			quasi_newton_;
    int						num_lbfgs_updates_stored_;      // If < 0, don't change default
    bool					lbfgs_auto_scaling_;
    EHessianInitialization	hessian_initialization_;
    // QP subproblem solvers
    EQPSolverType			qp_solver_type_;
    bool                    reinit_hessian_on_qp_fail_;
    // Line search methods
    ELineSearchMethod		line_search_method_;
    EMeritFunctionType		merit_function_type_;
    EL1PenaltyParamUpdate	l1_penalty_param_update_;
    int						full_steps_after_k_;			// If < 0, do not use this option at all.
  };

  //@}

private:

  /// Builder class for some common code
  DecompositionSystemStateStepBuilderStd   decomp_sys_step_builder_;

  /// Smart pointer to options
  options_ptr_t      options_;

  /// Options structs
  SOptionValues       uov_; // options set by user
  SOptionValues       cov_; // current option values actually used

  // ///////////////////////////////////////////////////////
  // Private member functions

  /// Read in the options from a stream
  static void readin_options(
    const OptionsFromStreamPack::OptionsFromStream& options
    , SOptionValues *option_values, std::ostream* trase_out );

  /// Set the defaults for options not set by the user
  static void set_default_options(
    const SOptionValues& user_option_values
    , SOptionValues *current_option_values
    , std::ostream* trase_out );

};	// end class NLPAlgoConfigIP

/** \defgroup Algo_ConfigIP_opts Options for NLPAlgoConfigIP.
 *
 * The following is the contents of the file <tt>Moocho.opt.NLPAlgoConfigIP</tt>
 * which are options specific to the class <tt>MoochoPack::NLPAlgoConfigIP</tt>
 * and the class objects that it configures.
 *
 * \verbinclude Moocho.opt.NLPAlgoConfigIP
 */

}	// end namespace MoochoPack 

#endif	// ALGO_CONFIG_IP_H