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 EVAL_NEW_POINT_TAILORED_APPROACH_STEP_H
00030 #define EVAL_NEW_POINT_TAILORED_APPROACH_STEP_H
00031
00032 #include "MoochoPack_Types.hpp"
00033 #include "IterationPack_AlgorithmStep.hpp"
00034 #include "ConstrainedOptPack_VariableBoundsTester.hpp"
00035 #include "NLPInterfacePack_NLPDirectTester.hpp"
00036 #include "Teuchos_StandardCompositionMacros.hpp"
00037 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00038
00039 namespace MoochoPack {
00040
00047 class EvalNewPointTailoredApproach_Step
00048 : public IterationPack::AlgorithmStep
00049 {
00050 public:
00051
00055 enum EFDDerivTesting { FD_DEFAULT, FD_TEST, FD_NO_TEST };
00057
00060
00062 typedef Teuchos::RCP<const MatrixOp> D_ptr_t;
00064 STANDARD_COMPOSITION_MEMBERS( NLPDirectTester, deriv_tester );
00066 STANDARD_COMPOSITION_MEMBERS( VariableBoundsTester, bounds_tester );
00071 STANDARD_MEMBER_COMPOSITION_MEMBERS( EFDDerivTesting, fd_deriv_testing );
00072
00074 EvalNewPointTailoredApproach_Step(
00075 const deriv_tester_ptr_t& deriv_tester
00076 , const bounds_tester_ptr_t& bounds_tester
00077 , EFDDerivTesting fd_deriv_testing = FD_DEFAULT
00078 );
00079
00081
00085 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00086 , poss_type assoc_step_poss);
00088 void print_step( const Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00089 , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
00091
00094
00099 virtual void uninitialize_Y_Uy(
00100 MatrixOp *Y
00101 ,MatrixOp *Uy
00102 ) = 0;
00103
00117 virtual void calc_py_Y_Uy(
00118 const NLPDirect &nlp
00119 ,const D_ptr_t &D
00120 ,VectorMutable *py
00121 ,MatrixOp *Y
00122 ,MatrixOp *Uy
00123 ,EJournalOutputLevel olevel
00124 ,std::ostream &out
00125 ) = 0;
00126
00133 virtual void recalc_py(
00134 const MatrixOp &D
00135 ,VectorMutable *py
00136 ,EJournalOutputLevel olevel
00137 ,std::ostream &out
00138 ) = 0;
00139
00142 virtual void print_calc_py_Y_Uy(
00143 std::ostream& out, const std::string& leading_str
00144 ) const = 0;
00145
00147
00148 private:
00149
00150
00151 EvalNewPointTailoredApproach_Step();
00152
00153 };
00154
00155 }
00156
00157 #endif // EVAL_NEW_POINT_TAILORED_APPROACH_STEP_H