Scine::Sparrow  3.1.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
NDDOMethodWrapper.h
Go to the documentation of this file.
1 
7 #ifndef SPARROW_NDDOMETHODWRAPPER_H
8 #define SPARROW_NDDOMETHODWRAPPER_H
9 
13 
14 namespace Scine {
15 
16 namespace Utils {
17 class Settings;
18 class ScfMethod;
19 class SpinAdaptedMatrix;
20 } // namespace Utils
21 
22 namespace Sparrow {
23 class CISData;
24 class DipoleMatrixCalculator;
25 
30 class NDDOMethodWrapper : public Utils::CloneInterface<Utils::Abstract<NDDOMethodWrapper>, GenericMethodWrapper> {
31  public:
37  ~NDDOMethodWrapper() override;
43  Utils::PropertyList possibleProperties() const override;
44 
45  friend class NDDOStatesHandler;
46 
51  CISData getCISData() const;
52 
53  protected:
54  // Extracted method from all copy constructors and copy assignment operators.
55  template<class NDDOMethod>
56  void copyInto(NDDOMethod& instance, const NDDOMethod& classToCopy) {
57  auto results = classToCopy.results();
58  instance.settings() = classToCopy.settings();
59  // Concurrent calling of the logger introduces race conditions
60  // that eventually trigger a segfault
61  instance.setStructure(*classToCopy.getStructure());
62  instance.results() = std::move(results);
63  instance.loadState(classToCopy.getState());
64  instance.setLog(classToCopy.getLog());
65  }
66  virtual Eigen::MatrixXd getOneElectronMatrix() const = 0;
67  virtual Utils::SpinAdaptedMatrix getTwoElectronMatrix() const = 0;
68  virtual CISData getCISDataImpl() const = 0;
69  void assembleResults(const std::string& description) final;
70 
71  void applySettings(std::unique_ptr<Utils::Settings>& settings, Utils::ScfMethod& method);
72  bool getZPVEInclusion() const final;
73 };
74 
75 } // namespace Sparrow
76 } // namespace Scine
77 
78 #endif // SPARROW_NDDOMETHODWRAPPER_H
Abstract class acting as a genericWrapper for NDDO methods.
Definition: NDDOMethodWrapper.h:30
CISData getCISData() const
This function is needed in the calcualtion of the CIS matrix in linear response method.
Definition: NDDOMethodWrapper.cpp:105
Utils::PropertyList possibleProperties() const override
Get the list of the possible properties to calculate analytically. Since it is the same for all NDDO...
Definition: NDDOMethodWrapper.cpp:28
NDDOMethodWrapper()
Constructor. It plays with the befriended states handler by giving it a *this reference.
This class contains the infos needed to perform a CIS calculation. This way excited states properties...
Definition: CISData.h:24