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
DFTBDipoleMatrixCalculator.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_DFTBDIPOLEMATRIXCALCULATOR_H
9 #define SPARROW_DFTBDIPOLEMATRIXCALCULATOR_H
10 
14 #include <Utils/Typenames.h>
15 #include <memory>
16 
17 namespace Scine {
18 
19 namespace Utils {
20 class MolecularOrbitals;
21 class AtomsOrbitalsIndexes;
22 } // namespace Utils
23 
24 namespace Sparrow {
25 
37 template<class DFTBMethod>
39  public:
44  static std::unique_ptr<DFTBDipoleMatrixCalculator<DFTBMethod>> create(DFTBMethod& method);
54  const Utils::DipoleMatrix& getAODipoleMatrix() const final;
63  void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix) final;
65  void fillDipoleMatrix(const Eigen::RowVector3d& dipoleEvaluationCoordinate) final;
66 
68  void initialize() final;
70  void setIntegralMethod(const IntegralMethod& IntegralMethod) final;
72  void invalidate() final;
74  bool isValid() const final;
75 
76  private:
77  explicit DFTBDipoleMatrixCalculator(DFTBMethod& method);
78  bool valid_{false};
79  Utils::DipoleMatrix dipoleMatrixMO_;
80  const DFTBMethod& method_;
81 
82  const Utils::PositionCollection positions_;
83  const Utils::MolecularOrbitals& coefficientMatrix_;
84  const Eigen::MatrixXd& overlapMatrix_;
85  const Utils::AtomsOrbitalsIndexes& aoIndex_;
86 };
87 
88 } // namespace Sparrow
89 } // namespace Scine
90 
91 #endif // SPARROW_DFTBDIPOLEMATRIXCALCULATOR_H
void fillDipoleMatrix(const Eigen::RowVector3d &dipoleEvaluationCoordinate) final
Calculates the MO dipole matrix for the DFTB methods.
Definition: DFTBDipoleMatrixCalculator.cpp:56
static std::unique_ptr< DFTBDipoleMatrixCalculator< DFTBMethod > > create(DFTBMethod &method)
Factory method for the DFTBDipoleMatrixCalculator. This returns a unique pointer to a DFTBDipoleMatri...
Definition: DFTBDipoleMatrixCalculator.cpp:30
Class responsible for the calculation of the dipole matrix in MO basis for DFTB methods. This class calculates the dipole matrix in MO basis according to R. RĂ¼ger, E. van Lenthe, T. Heine and L. Visscher, Tight-Binding Approximations to Time-Dependent Density Functional Theory.
Definition: DFTBDipoleMatrixCalculator.h:38
void initialize() final
Initialize the underlying dipole matrix.
Definition: DFTBDipoleMatrixCalculator.cpp:83
void setIntegralMethod(const IntegralMethod &IntegralMethod) final
This does nothing in DFTB as there is just one method currently to calculate Dipole Matrix...
Definition: DFTBDipoleMatrixCalculator.cpp:51
Interface for the calculation of the dipole matrix in semiempirical methods.
Definition: DipoleMatrixCalculator.h:34
const Utils::DipoleMatrix & getAODipoleMatrix() const final
Getter for the AO dipole matrix. Throws an exception.
Definition: DFTBDipoleMatrixCalculator.cpp:36
~DFTBDipoleMatrixCalculator() final
Virtual destructor.
void invalidate() final
Invalidates the underlying dipole matrices and forces a new calculation.
Definition: DFTBDipoleMatrixCalculator.cpp:90
bool isValid() const final
Checks the validity of the underlying dipole matrix.
Definition: DFTBDipoleMatrixCalculator.cpp:95
Utils::DipoleMatrix getMODipoleMatrix() const final
Getter for the MO dipole matrix. Returns an rvalue.
Definition: DFTBDipoleMatrixCalculator.cpp:41
void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix) final
Setter for the AO dipole matrix. Here it throws an exception.
Definition: DFTBDipoleMatrixCalculator.cpp:46