This file is indexed.

/usr/include/trilinos/MoochoPack_DecompositionSystemStateStepBuilderStd.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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
// @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 DECOMPOSITION_SYSTEM_STATE_STEP_BUILDER_STD_H
#define DECOMPOSITION_SYSTEM_STATE_STEP_BUILDER_STD_H

#include "MoochoPack_Types.hpp"
#ifndef MOOCHO_NO_BASIS_PERM_DIRECT_SOLVERS
#include "AbstractLinAlgPack_BasisSystemPerm.hpp"
#endif
#include "MoochoPack_NewDecompositionSelection_Strategy.hpp"

namespace OptionsFromStreamPack {
  class OptionsFromStream;
}

namespace MoochoPack {

/** \brief Standard builder object for creating DecompositionSystem, EvalNewPoint Step and other objects
 * and setting up some of the state object.
 *
 * This class is designed to be used by <tt>NLPAlgoConfig</tt> subclasses based on SQP
 * and performs many different tasks that are common to all of these algorithms.
 *
 * ToDo: Finish documentation!
 */
class DecompositionSystemStateStepBuilderStd
{
public:
  
  /** @name Enums for variaous options categories */
  //@{

  /** \brief . */
  enum ENullSpaceMatrixType {
    NULL_SPACE_MATRIX_AUTO, NULL_SPACE_MATRIX_EXPLICIT
    , NULL_SPACE_MATRIX_IMPLICIT };
  /** \brief . */
  enum ERangeSpaceMatrixType {
    RANGE_SPACE_MATRIX_AUTO, RANGE_SPACE_MATRIX_COORDINATE
    , RANGE_SPACE_MATRIX_ORTHOGONAL };

  //@}

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

  /** \brief . */
  struct SOptionValues {
    // Constructor (sets default values)
    SOptionValues();
    ENullSpaceMatrixType	null_space_matrix_type_;
    ERangeSpaceMatrixType	range_space_matrix_type_;
    int						max_dof_quasi_newton_dense_;    // If < 0, don't change default
  };

  //@}
  
  /** \brief . */
  typedef Teuchos::RCP<
    const OptionsFromStreamPack::OptionsFromStream>             options_ptr_t;

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

  /** \brief Set the options that will be used to configure the algorithmic objects.
   *
   *  @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 this object is no longer needed.
   */
  void set_options( const options_ptr_t& options );
  /** \brief . */
  const options_ptr_t& get_options() const;
  /** \brief Process the %NLP and process the options passed in from <tt>set_options()</tt>.
   * Postconditions:<ul>
   * <li> <tt>this->current_option_values()</tt> returns the options that will be
   *      used in all of the following method.
   * </ul>
   *
   * ToDo: Finish documentation!
   */
  void process_nlp_and_options(
    std::ostream          *trase_out
    ,NLP                  &nlp
    ,NLPFirstOrder        **nlp_foi
    ,NLPSecondOrder       **nlp_soi
    ,NLPDirect            **nlp_fod
    ,bool                 *tailored_approach
    );
  /** \brief Create the decomposition system object.
   *
   * ToDo: Finish documentation!
   */
  void create_decomp_sys(
    std::ostream                                       *trase_out
    ,NLP                                               &nlp
    ,NLPFirstOrder                                     *nlp_foi
    ,NLPSecondOrder                                    *nlp_soi
    ,NLPDirect                                         *nlp_fod
    ,bool                                              tailored_approach
    ,Teuchos::RCP<DecompositionSystem>         *decomp_sys
    );
  /** \brief Add the common iteration quantities to the state object.
   * 
   * ToDo: Finish documentation!
   */
  void add_iter_quantities(
    std::ostream                                           *trase_out
    ,NLP                                                   &nlp
    ,NLPFirstOrder                                         *nlp_foi
    ,NLPSecondOrder                                        *nlp_soi
    ,NLPDirect                                             *nlp_fod
    ,bool                                                  tailored_approach
    ,const Teuchos::RCP<DecompositionSystem>       &decomp_sys
    ,const Teuchos::RCP<NLPAlgoState>              &state
    );

  /** \brief Create the EvalNewPoint step object and allocated objects.
   *
   * ToDo: Finish documentation!
   */
  void create_eval_new_point(
    std::ostream                                                 *trase_out
    ,NLP                                                         &nlp
    ,NLPFirstOrder                                               *nlp_foi
    ,NLPSecondOrder                                              *nlp_soi
    ,NLPDirect                                                   *nlp_fod
    ,bool                                                        tailored_approach
    ,const Teuchos::RCP<DecompositionSystem>             &decomp_sys
    ,Teuchos::RCP<IterationPack::AlgorithmStep>          *eval_new_point_step
    ,Teuchos::RCP<CalcFiniteDiffProd>                    *calc_fd_prod
    ,Teuchos::RCP<VariableBoundsTester>                  *bounds_tester
    ,Teuchos::RCP<NewDecompositionSelection_Strategy>    *new_decomp_selection_strategy
    );

  /** \brief Return the current option values being used.
   */
  SOptionValues& current_option_values();

private:
  
  // ///////////////////////////
  // Private data members

  /// Smart pointer to options
  options_ptr_t   options_;

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

#ifndef MOOCHO_NO_BASIS_PERM_DIRECT_SOLVERS
  Teuchos::RCP<BasisSystemPerm> basis_sys_perm_;
#endif

  // /////////////////////////
  // 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 DecompositionSystemStateStepBuilderStd

// ///////////////////////////////
// Inline members

inline
DecompositionSystemStateStepBuilderStd::SOptionValues&
DecompositionSystemStateStepBuilderStd::current_option_values()
{
  return cov_;
}

}  // end namespace MoochoPack

#endif // DECOMPOSITION_SYSTEM_STATE_STEP_BUILDER_STD_H