source: ThirdParty/mpqc_open/src/lib/math/optimize/conv.h@ 47b463

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 47b463 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: 4.5 KB
Line 
1//
2// conv.h
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _math_optimize_conv_h
29#define _math_optimize_conv_h
30
31#ifdef __GNUC__
32#pragma interface
33#endif
34
35#include <util/state/state.h>
36#include <util/class/class.h>
37#include <math/scmat/matrix.h>
38#include <math/optimize/function.h>
39
40namespace sc {
41
42// //////////////////////////////////////////////////////////////////////
43
44/** The Convergence class is used by the optimizer to determine when an
45optimization is converged. The KeyVal input for Convergence is given
46below. Giving none of these keywords is the same as giving the following
47input:
48<pre>
49 conv<Convergence>: (
50 max_disp = 1.0e-6
51 max_grad = 1.0e-6
52 graddisp = 1.0e-6
53 )
54</pre>
55*/
56class Convergence: virtual public SavableState {
57 protected:
58 RefSCVector grad_;
59 RefSCVector x_;
60 RefSCVector nextx_;
61 int use_max_disp_;
62 double max_disp_;
63 int use_max_grad_;
64 double max_grad_;
65 int use_rms_disp_;
66 double rms_disp_;
67 int use_rms_grad_;
68 double rms_grad_;
69 int use_graddisp_;
70 double graddisp_;
71
72 void check_conv(const char *heading,
73 double val, double bound,
74 int &pass, int &fail);
75
76 void set_defaults();
77 public:
78 Convergence();
79 Convergence(double tolerance);
80 Convergence(StateIn&);
81
82 /** The KeyVal constructor reads the following keywords:
83
84 <dl>
85
86 <dt><tt>max_disp</tt><dd> The value of the maximum displacement
87 must be less then the value of this keyword for the calculation to
88 be converged. The default is to not check this parameter.
89 However, if no other keyword are given, default convergence
90 parameters are chosen as described above.
91
92 <dt><tt>max_grad</tt><dd> The value of the maximum gradient must be
93 less then the value of this keyword for the calculation to be
94 converged. The default is to not check this parameter. However,
95 if no other keyword are given, default convergence parameters are
96 chosen as described above.
97
98 <dt><tt>rms_disp</tt><dd> The value of the RMS of the displacements
99 must be less then the value of this keyword for the calculation to
100 be converged. The default is to not check this parameter.
101 However, if no other keyword are given, default convergence
102 parameters are chosen as described above.
103
104 <dt><tt>rms_grad</tt><dd> The value of the RMS of the gradients
105 must be less then the value of this keyword for the calculation to
106 be converged. The default is to not check this parameter.
107 However, if no other keyword are given, default convergence
108 parameters are chosen as described above.
109
110 <dt><tt>graddisp</tt><dd> The value of the scalar product of the
111 gradient vector with the displacement vector must be less then the
112 value of this keyword for the calculation to be converged. The
113 default is to not check this parameter. However, if no other
114 keyword are given, default convergence parameters are chosen as
115 described above.
116
117 </dl> */
118 Convergence(const Ref<KeyVal>&);
119 virtual ~Convergence();
120
121 void save_data_state(StateOut&);
122
123 /// Set the current gradient and displacement.
124 virtual void get_grad(const Ref<Function> &);
125 virtual void get_x(const Ref<Function> &);
126 virtual void set_nextx(const RefSCVector &);
127
128 /// Set the current gradient and displacement to null.
129 virtual void reset();
130
131 /// Return nonzero if the optimization has converged.
132 virtual int converged();
133};
134
135}
136
137#endif
138
139// Local Variables:
140// mode: c++
141// c-file-style: "CLJ"
142// End:
Note: See TracBrowser for help on using the repository browser.