Scine::Sparrow  5.0.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
OrbitalSteeringSettings.h
1 
7 #ifndef SPARROW_ORBITALSTEERINGSETTINGS_H
8 #define SPARROW_ORBITALSTEERINGSETTINGS_H
9 
10 #include <Utils/Settings.h>
12 
13 namespace Scine {
14 namespace Sparrow {
15 
16 static constexpr const char* numberOrbitalsToMixKey = "number_orbitals_to_mix";
17 static constexpr const char* mixingFrequencyKey = "mixing_frequency";
18 static constexpr const char* minimalAngleKey = "minimal_mixing_angle";
19 static constexpr const char* maximalAngleKey = "maximal_mixing_angle";
20 static constexpr const char* numberOrbitalsToConsiderKey = "number_orbitals_to_consider";
21 
23  public:
24  static constexpr const int SameNumberOfIterations = 0;
25  static constexpr const int AllOrbitals = 0;
26  static constexpr const char* SameMixer = "same_mixer";
28  Utils::UniversalSettings::IntDescriptor numberOrbitalsToMix("Sets the number of orbitals that will be mixed.");
29  numberOrbitalsToMix.setDefaultValue(10);
30  numberOrbitalsToMix.setMinimum(0);
31  _fields.push_back(numberOrbitalsToMixKey, std::move(numberOrbitalsToMix));
32 
34  "Sets after how many single point calculations a mixing occurs.");
35  mixingFrequency.setDefaultValue(5);
36  mixingFrequency.setMinimum(1);
37  _fields.push_back(mixingFrequencyKey, std::move(mixingFrequency));
38 
39  Utils::UniversalSettings::DoubleDescriptor minimalAngle("Sets the minimal angle for the mixing.");
40  minimalAngle.setDefaultValue(0);
41  minimalAngle.setMinimum(0);
42  minimalAngle.setMaximum(90);
43  _fields.push_back(minimalAngleKey, std::move(minimalAngle));
44 
45  Utils::UniversalSettings::DoubleDescriptor maximalAngle("Sets the maximal angle for the mixing.");
46  maximalAngle.setDefaultValue(90);
47  maximalAngle.setMinimum(0);
48  maximalAngle.setMaximum(90);
49  _fields.push_back(maximalAngleKey, std::move(maximalAngle));
50 
51  Utils::UniversalSettings::IntDescriptor numberOrbitalsToConsider(
52  "Sets the number of orbitals from which to sample the mixing pairs.");
53  numberOrbitalsToConsider.setDefaultValue(AllOrbitals);
54  numberOrbitalsToConsider.setMinimum(AllOrbitals);
55  _fields.push_back(numberOrbitalsToConsiderKey, std::move(numberOrbitalsToConsider));
56 
57  Utils::UniversalSettings::IntDescriptor maxScfIterations("Maximal number of iterations to reach self consistence.");
58  maxScfIterations.setMinimum(SameNumberOfIterations);
59  maxScfIterations.setDefaultValue(SameNumberOfIterations);
60 
61  _fields.push_back(Utils::SettingsNames::maxScfIterations, std::move(maxScfIterations));
62 
63  Utils::UniversalSettings::OptionListDescriptor mixer("Convergence acceleration to use.");
64  mixer.addOption(SameMixer);
65  mixer.addOption(Utils::SettingsNames::ScfMixers::noMixer);
66  mixer.addOption(Utils::SettingsNames::ScfMixers::diis);
67  mixer.addOption(Utils::SettingsNames::ScfMixers::ediis);
68  mixer.addOption(Utils::SettingsNames::ScfMixers::ediisDiis);
69  mixer.setDefaultOption(SameMixer);
70 
71  _fields.push_back(Utils::SettingsNames::mixer, mixer);
72 
73  resetToDefaults();
74  }
75 };
76 } // namespace Sparrow
77 } // namespace Scine
78 
79 #endif // SPARROW_ORBITALSTEERINGSETTINGS_H
Definition: OrbitalSteeringSettings.h:22