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 UPDATE_REDUCED_SIGMA_STEP_H
00030 #define UPDATE_REDUCED_SIGMA_STEP_H
00031
00032 #include "IterationPack_AlgorithmStep.hpp"
00033 #include "Teuchos_StandardCompositionMacros.hpp"
00034 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00035
00036 #include "MoochoPack_Types.hpp"
00037 #include "IterationPack_AlgorithmStep.hpp"
00038
00039 #include "OptionsFromStreamPack_SetOptionsFromStreamNode.hpp"
00040 #include "OptionsFromStreamPack_SetOptionsToTargetBase.hpp"
00041
00042 namespace MoochoPack {
00043
00050 class UpdateReducedSigma_Step
00051 : public IterationPack::AlgorithmStep
00052 {
00053 public:
00054
00055 enum e_update_methods
00056 {
00057 ALWAYS_EXPLICIT,
00058 BFGS_PRIMAL,
00059 BFGS_DUAL_NO_CORRECTION,
00060 BFGS_DUAL_EXPLICIT_CORRECTION,
00061 BFGS_DUAL_SCALING_CORRECTION
00062 };
00063
00082 STANDARD_MEMBER_COMPOSITION_MEMBERS( e_update_methods, update_method);
00083
00087 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00088 , poss_type assoc_step_poss);
00089
00090
00091 void print_step( const IterationPack::Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00092 , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
00094
00097 UpdateReducedSigma_Step(
00098
00099 const e_update_methods update_method = ALWAYS_EXPLICIT
00100 );
00102
00103 private:
00104 void FormReducedSigmaExplicitly(NLPAlgo& algo, IpState& s, EJournalOutputLevel olevel, std::ostream& out);
00105
00106
00107 };
00108
00109 const char UpdateReducedSigma_opt_grp_name[] = "UpdateReducedSigma";
00110 class UpdateReducedSigma_StepSetOptions
00111 : public OptionsFromStreamPack::SetOptionsFromStreamNode,
00112 public OptionsFromStreamPack::SetOptionsToTargetBase< UpdateReducedSigma_Step >
00113 {
00114 public:
00115 UpdateReducedSigma_StepSetOptions(
00116 UpdateReducedSigma_Step* target = 0,
00117 const char opt_grp_name[] = UpdateReducedSigma_opt_grp_name );
00118
00119 protected:
00120
00122 void setOption( int option_num, const std::string& option_value );
00123
00124 };
00125
00126
00127 }
00128
00129 #endif // UPDATE_REDUCED_SIGMA_STEP_H