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
OrbitalSteeringCalculator.h
1 
7 #ifndef SPARROW_ORBITALSTEERINGCALCULATOR_H
8 #define SPARROW_ORBITALSTEERINGCALCULATOR_H
9 
10 #include <Core/Interfaces/CalculatorWithReference.h>
11 
12 namespace Scine {
13 namespace Utils {
14 class Results;
15 } // namespace Utils
16 namespace Sparrow {
17 
18 class GenericMethodWrapper;
19 class OrbitalSteeringSettings;
20 
22  public:
23  struct InvalidCalculatorTypeForOrbitalSteerer final : public std::exception {
25  const char* what() const noexcept final {
26  return error.c_str();
27  }
28  std::string error;
29  };
30  static constexpr const char* model = "orbital_steering";
41  void setReferenceCalculator(std::shared_ptr<Core::Calculator> referenceCalculator) final;
45  void referenceCalculation() final;
46 
51  Core::Calculator& getReferenceCalculator() final;
56  const Core::Calculator& getReferenceCalculator() const final;
57 
62  const Utils::Results& calculate() final;
63 
68  std::string name() const final;
69 
74  Utils::Settings& settings() final;
79  const Utils::Settings& settings() const final;
83  void applySettings() final;
88  Utils::Results& results() final;
93  const Utils::Results& results() const final;
94 
95  private:
96  void logSteering(double oldEnergy, double newEnergy);
97  std::shared_ptr<GenericMethodWrapper> method_;
98  std::unique_ptr<OrbitalSteeringSettings> settings_;
99  int numberOfCalculations_;
100 };
101 
102 } // namespace Sparrow
103 } // namespace Scine
104 
105 #endif // SPARROW_ORBITALSTEERINGCALCULATOR_H
~OrbitalSteeringCalculator() final
Virtual destructor.
Core::Calculator & getReferenceCalculator() final
Accessor for the reference calculator.
Definition: OrbitalSteeringCalculator.cpp:41
A MethodWrapper running Generic calculations.
Definition: GenericMethodWrapper.h:38
std::string name() const final
Getter for the name of the calculator with reference.
Definition: OrbitalSteeringCalculator.cpp:121
Utils::Results & results() final
Accessor for the saved instance of Utils::Results.
Definition: OrbitalSteeringCalculator.cpp:139
const Utils::Results & calculate() final
The main function running the calculation with reference.
Definition: OrbitalSteeringCalculator.cpp:49
Definition: OrbitalSteeringSettings.h:22
void applySettings() final
Method to apply the settings stored in the settings data structure.
Definition: OrbitalSteeringCalculator.cpp:133
void referenceCalculation() final
Performs a reference calculation.
Definition: OrbitalSteeringCalculator.cpp:37
Utils::Settings & settings() final
Accessor for the settings.
Definition: OrbitalSteeringCalculator.cpp:125
Definition: OrbitalSteeringCalculator.h:21
OrbitalSteeringCalculator()
Default constructor.
Definition: OrbitalSteeringCalculator.cpp:25
void setReferenceCalculator(std::shared_ptr< Core::Calculator > referenceCalculator) final
Sets the calculator to be used to perform the reference calculation. In the derived classes care must...
Definition: OrbitalSteeringCalculator.cpp:29