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
DipoleMatrixCalculator.h
Go to the documentation of this file.
1 
7 #ifndef SPARROW_DIPOLEMATRIXCALCULATOR_H
8 #define SPARROW_DIPOLEMATRIXCALCULATOR_H
9 
10 #include <Utils/Typenames.h>
11 #include <exception>
12 
13 namespace Scine {
14 namespace Utils {
15 class DipoleMatrix;
16 }
17 namespace Sparrow {
18 
19 class DipoleMatrixTypeNotAvailableException : public std::exception {
20  public:
21  const char* what() const noexcept final {
22  return "Matrix type not available";
23  }
24 };
25 
29 enum class IntegralMethod { ObaraSaika, ClosedForm };
30 
35  public:
36  virtual ~DipoleMatrixCalculator() = default;
41  virtual const Utils::DipoleMatrix& getAODipoleMatrix() const = 0;
46  virtual Utils::DipoleMatrix getMODipoleMatrix() const = 0;
50  virtual void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix) = 0;
57  virtual void fillDipoleMatrix(const Eigen::RowVector3d& dipoleEvaluationCoordinate) = 0;
58 
62  virtual void initialize() = 0;
67  virtual void setIntegralMethod(const IntegralMethod& IntegralMethod) = 0;
71  virtual bool isValid() const = 0;
75  virtual void invalidate() = 0;
76 };
77 
78 } // namespace Sparrow
79 } // namespace Scine
80 
81 #endif // SPARROW_DIPOLEMATRIXCALCULATOR_H
virtual const Utils::DipoleMatrix & getAODipoleMatrix() const =0
Getter for the dipole matrix in atomic orbitals (AO) basis.
virtual void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix)=0
Setter for the dipole matrix in AO basis.
virtual void fillDipoleMatrix(const Eigen::RowVector3d &dipoleEvaluationCoordinate)=0
Calculates the dipole matrix in AO or MO basis. The method implementation decides if the dipole matri...
Definition: DipoleMatrixCalculator.h:19
virtual void setIntegralMethod(const IntegralMethod &IntegralMethod)=0
Setter for the desired dipole matrix integrals calculation method. This is right now only used by the...
Interface for the calculation of the dipole matrix in semiempirical methods.
Definition: DipoleMatrixCalculator.h:34
virtual void initialize()=0
Initialized the dipole matrix calculator and invalidates the current dipole matrix.
virtual Utils::DipoleMatrix getMODipoleMatrix() const =0
Getter for the dipole matrix in moleculat orbital (MO) basis.
virtual void invalidate()=0
Invalidates the underlying dipole matrices and forces a new calculation.
virtual bool isValid() const =0
Getter for the validity status of the dipole matrix.