/usr/include/trilinos/IterationPack_AlgorithmStep.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 | // @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 ALGORITHM_STEP_H
#define ALGORITHM_STEP_H
#include <iosfwd>
#include "IterationPack_Types.hpp"
namespace IterationPack {
/** \brief Base type for all objects that perform steps in an <tt>Algorithm</tt>.
*/
class AlgorithmStep {
public:
/** \brief . */
typedef size_t poss_type;
/** @name Pure virtual functions that must be overridden */
//@{
/** \brief Called by <tt>Algorithm</tt> to perform a main, pre or post step at step_poss and assoc_step_poss.
*
* @return Should return false if this step object has terminated the algorithm or
* redirected control to another step. In this case it is assumed that <tt>this</tt> called
* <tt>algo\ref Algorithm::terminate ".terminate(...)"</tt>
* or <tt>algo\ref Algorithm::do_step_next ".do_step_next(...)"</tt>.
*/
virtual bool do_step(
Algorithm& algo
,poss_type step_poss
,EDoStepType type
,poss_type assoc_step_poss
) = 0;
//@}
/** @name Virtual functions with default implementations */
//@{
/** \brief . */
virtual ~AlgorithmStep() {}
/** \brief Called by <tt>Algorithm</tt> just before the algorithm is run.
*
* This allows step objects to reinitialize themselves just before
* an algorithm is run.
*
* The default implementation does nothing.
*/
virtual void initialize_step(
Algorithm& algo
,poss_type step_poss
,EDoStepType type
,poss_type assoc_step_poss
)
{}
/** \brief Called by <tt>Algorithm</tt> to inform when a runtime configuration change
* is finihed.
*
* This function is only called when the algorithm is already running
* but the configuration has changed.
*
* The default implementation does nothing.
*/
virtual void inform_updated(
Algorithm& algo
,poss_type step_poss
,EDoStepType type
,poss_type assoc_step_poss
)
{}
/** \brief Called by <tt>Algorithm</tt> just after an algorithm is terminiated.
*
* This allows step objects to perform any final processing or cleanup
* just after an algorithm is finished.
*
* The default implementation does nothing.
*/
virtual void finalize_step(
Algorithm& algo
,poss_type step_poss
,EDoStepType type
,poss_type assoc_step_poss
)
{}
/** \brief Called by <tt>Algorithm::print_algorithm()</tt> to print out what this step does in Matlab like format.
*
* The default does nothing.
*/
virtual void print_step(
const Algorithm& algo
,poss_type step_poss
,EDoStepType type
,poss_type assoc_step_poss
, std::ostream& out
,const std::string& leading_str
) const
{}
//@}
}; // end class AlgorithmStep
} // end namespace IterationPack
#endif // ALGORITHM_STEP_H
|