source: ThirdParty/mpqc_open/src/lib/math/optimize/mcsearch.h@ bbc982

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since bbc982 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 1.9 KB
Line 
1//
2// mcsearch.h
3//
4// Based on line search routines found in lbfgs.f on the WWW.
5//
6
7#ifndef _math_optimize_mcsearch_h
8#define _math_optimize_mcsearch_h
9
10#ifdef __GNUC__
11#pragma interface
12#endif
13
14#include <math/optimize/opt.h>
15#include <util/misc/autovec.h>
16
17namespace sc {
18
19/** This performs line searches with cubic steps. It is based on the
20 Fortran MCSRCH and MCSTEP routines produced by: Argonne National
21 Laboratory. MINPACK Project. June 1983 Jorge J. More', David
22 J. Thuente.
23*/
24class MCSearch: public LineOpt {
25 protected:
26
27 // These are originally from the lb3 common block.
28 double gtol_, stpmin_, stpmax_;
29
30 // Local variables in mcsrch
31 double dg, fm, fx, fy, dgm, dgx, dgy, fxm, fym, stx, sty, dgxm,
32 dgym;
33 int infoc;
34 double finit, width, stmin, stmax;
35 bool stage1;
36 double width1, ftest1;
37 bool brackt;
38 double dginit, dgtest;
39
40 // Local variables in mcstep
41 double p, q, r__, s, sgnd, stpc, stpf, stpq, gamma, theta;
42 bool bound;
43
44 // these are saved from call to call
45 int info_;
46 auto_vec<double> wa_;
47
48 void
49 mcstep(double *stx, double *fx, double *dx,
50 double *sty, double *fy, double *dy, double *stp,
51 double *fp, double *dp, bool *brackt, double *stpmin,
52 double *stpmax, int *info);
53
54 void
55 mcsrch(int *n, double *x, double *f,
56 double *g, double *s, double *stp, double *ftol,
57 double *xtol, int *maxfev, int *info, int *nfev,
58 double *wa);
59
60
61 void mcinit();
62 public:
63
64 /** The MCSearch KeyVal CTOR does not read any input. See
65 the LineOpt KeyVal CTOR for parameters that it takes.
66 */
67 MCSearch(const Ref<KeyVal>&);
68 ~MCSearch();
69 int update();
70
71 void init(RefSCVector& direction);
72 void init(RefSCVector& direction, Ref<Function> function);
73
74};
75
76}
77
78#endif
79
80// Local Variables:
81// mode: c++
82// c-file-style: "CLJ"
83// End:
Note: See TracBrowser for help on using the repository browser.