00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: steepestDescent.h,v 1.24.20.4 2007/08/07 09:12:35 aleru Exp $ 00005 // 00006 00007 #ifndef BALL_MOLMEC_MINIMIZATION_STEEPESTDESCENT_H 00008 #define BALL_MOLMEC_MINIMIZATION_STEEPESTDESCENT_H 00009 00010 #ifndef BALL_MOLMEC_MINIMIZATION_ENERGYMINIMIZER_H 00011 # include <BALL/MOLMEC/MINIMIZATION/energyMinimizer.h> 00012 #endif 00013 00014 #ifndef BALL_MOLMEC_MINIMIZATION_LINESEARCH_H 00015 # include <BALL/MOLMEC/MINIMIZATION/lineSearch.h> 00016 #endif 00017 00018 namespace BALL 00019 { 00023 class BALL_EXPORT SteepestDescentMinimizer 00024 : public EnergyMinimizer 00025 { 00026 00027 public: 00028 00032 00033 BALL_CREATE(SteepestDescentMinimizer) 00034 00035 00037 SteepestDescentMinimizer(); 00038 00041 SteepestDescentMinimizer(ForceField& force_field); 00042 00045 SteepestDescentMinimizer(ForceField& force_field,SnapShotManager *ssm); 00046 00049 SteepestDescentMinimizer(ForceField& force_field, const Options& options); 00050 00053 SteepestDescentMinimizer(ForceField& force_field, SnapShotManager* ssm, const Options& options); 00054 00057 SteepestDescentMinimizer(const SteepestDescentMinimizer& minimizer); 00058 00061 virtual ~SteepestDescentMinimizer(); 00062 00064 00067 00070 const SteepestDescentMinimizer& operator = (const SteepestDescentMinimizer& minimizer); 00071 00073 00076 00079 virtual bool specificSetup(); 00080 00082 00085 00094 virtual bool minimize(Size steps = 0, bool resume = false); 00095 00102 virtual double findStep(); 00103 00109 virtual void updateDirection(); 00110 00111 protected: 00112 00114 00117 00121 LineSearch line_search_; 00123 00124 }; 00125 } // namespace BALL 00126 00127 #endif // BALL_MOLMEC_MINIMIZATION_STEEPESTDESCENT_H