00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef INIT_FIN_DIFF_REDUCED_HESSIAN_STEP_H
00030 #define INIT_FIN_DIFF_REDUCED_HESSIAN_STEP_H
00031
00032 #include "IterationPack_AlgorithmStep.hpp"
00033 #include "MoochoPack_quasi_newton_stats.hpp"
00034 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00035
00036 namespace MoochoPack {
00037
00069 class InitFinDiffReducedHessian_Step
00070 : public IterationPack::AlgorithmStep
00071 {
00072 public:
00073
00076
00078 enum EInitializationMethod { SCALE_IDENTITY, SCALE_DIAGONAL, SCALE_DIAGONAL_ABS };
00079
00081 InitFinDiffReducedHessian_Step(
00082 EInitializationMethod initialization_method = SCALE_IDENTITY
00083 ,value_type max_cond = 1e+1
00084 ,value_type min_diag = 1e-8
00085 ,value_type step_scale = 1e-1
00086 );
00087
00089 STANDARD_MEMBER_COMPOSITION_MEMBERS(EInitializationMethod,initialization_method);
00090
00092 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,max_cond);
00093
00095 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,min_diag);
00096
00098 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,step_scale);
00099
00101
00105 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00106 , poss_type assoc_step_poss);
00108 void print_step( const Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00109 , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
00111
00112
00113 private:
00114 quasi_newton_stats_iq_member quasi_newton_stats_;
00115
00116 };
00117
00118 }
00119
00120 #endif // INIT_FIN_DIFF_REDUCED_HESSIAN_STEP_H