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
TDDFTBCalculator.h
Go to the documentation of this file.
1 
7 #ifndef SPARROW_TDDFTBCALCULATOR_H
8 #define SPARROW_TDDFTBCALCULATOR_H
9 
10 #include <Core/Interfaces/CalculatorWithReference.h>
12 #include <Utils/CalculatorBasics.h>
14 #include <Utils/Math/IterativeDiagonalizer/SpinAdaptedEigenContainer.h>
16 #include <Eigen/Core>
17 #include <Eigen/Sparse>
18 #include <chrono>
19 #include <memory>
20 #include <numeric>
21 namespace Scine {
22 namespace Core {
23 class Calculator;
24 } // namespace Core
25 namespace Utils {
26 class Settings;
27 class Results;
28 class Excitation;
29 class DipoleMatrix;
30 namespace LcaoUtils {
31 class ElectronicOccupation;
32 }
33 enum class SpinTransition;
34 } // namespace Utils
35 namespace Sparrow {
36 
37 class DFTBMethodWrapper;
38 class TDDFTBData;
39 template<Utils::Reference restrictedness>
40 class OrderedInput;
41 template<Utils::Reference restrictedness>
43 
73  public:
74  constexpr static const char* model = "TD-DFTB";
76  ~TDDFTBCalculator() final;
77 
87  const Core::Calculator& getReferenceCalculator() const final;
93  void setReferenceCalculator(std::shared_ptr<Core::Calculator> method) final;
100  void referenceCalculation() final;
101 
106  Utils::Results& results() final;
111  const Utils::Results& results() const final;
112 
116  Utils::Settings& settings() final;
120  const Utils::Settings& settings() const final;
124  std::string name() const final;
125 
129  void applySettings() final;
130 
131  template<Utils::Reference restrictedness>
133  int numberOfEnergyLevels = 0, int initialSubspaceDimension = 0,
134  Utils::SpinTransition spinBlock = Utils::SpinTransition::Singlet);
135 
145  const Utils::Results& calculate() final;
146 
150  void setGuess(std::shared_ptr<GuessSpecifier> guessVectorMatrix) final;
151  auto getGuess() const -> std::shared_ptr<GuessSpecifier> final;
152 
153  private:
154  void checkMemoryRequirement(int excitationsDim, int numberOfEnergyLevels);
155  template<Utils::Reference restrictedness>
156  void generateTransitionDipoleMoments(Utils::ElectronicTransitionResult& excitedStatesResults,
157  const std::vector<Utils::Excitation>& excitations) const;
158  auto isDFTB0(std::shared_ptr<DFTBMethodWrapper> method) const -> bool;
159 
160  template<Utils::Reference restrictedness>
161  void evalImpl(Utils::SpinAdaptedElectronicTransitionResult& transitionResult,
162  const Eigen::MatrixXd& transitionCharges, std::shared_ptr<Utils::DipoleMatrix> dipoleMatrix);
163  template<Utils::Reference restrictedness>
164  void solveEigenvalueProblem(Utils::SpinAdaptedElectronicTransitionResult& transitionResult,
165  const std::unique_ptr<TDDFTBEigenvalueSolver<restrictedness>>& solver, int numberOfRoots,
166  int initialSubspaceDimension);
167  std::shared_ptr<DFTBMethodWrapper> dftbMethod_;
168  std::shared_ptr<GuessSpecifier> guess_;
169  std::unique_ptr<Utils::Settings> settings_;
170  std::unique_ptr<TDDFTBData> tddftbData_;
171  std::vector<int> orderMap_;
172  std::vector<Utils::Excitation> excitations_;
173  Utils::Results results_;
174 };
175 } // namespace Sparrow
176 } // namespace Scine
177 
178 #endif // SPARROW_TDDFTBCALCULATOR_H
void referenceCalculation() final
This function gives the chance to perform a reference calculation. This is not needed if the calculat...
Definition: TDDFTBCalculator.cpp:57
std::string name() const final
Getter for the model name, in this case &quot;TDDFTB&quot;.
Definition: TDDFTBCalculator.cpp:85
const Utils::Results & calculate() final
Overridden calculate method, inherited from Core::CalculatorWithReference. This method works through ...
Definition: TDDFTBCalculator.cpp:124
Definition: LinearResponseCalculator.h:15
Definition: TDDFTBCalculator.h:72
Utils::Settings & settings() final
Accessor for the underlying settings.
Definition: TDDFTBCalculator.cpp:77
Utils::Results & results() final
Accessor for the Results stored.
Definition: TDDFTBCalculator.cpp:49
auto getGuess() const -> std::shared_ptr< GuessSpecifier > final
Returns the guess in the full singles space (no pruning)
Definition: TDDFTBCalculator.cpp:289
Definition: TDDFTBCalculator.h:42
Core::Calculator & getReferenceCalculator() final
Accessor for the ground state calculator.
Definition: TDDFTBCalculator.cpp:69
void setGuess(std::shared_ptr< GuessSpecifier > guessVectorMatrix) final
Sets the guess to be used in the next calculation. If empty, diagonal dominant guess will be used...
Definition: TDDFTBCalculator.cpp:284
void applySettings() final
Apply the settings contained in the settings_ member.
Definition: TDDFTBCalculator.cpp:89
void setReferenceCalculator(std::shared_ptr< Core::Calculator > method) final
Sets the ground state method to calculate excited states.
Definition: TDDFTBCalculator.cpp:37