7 #ifndef SPARROW_TDDFTBSIGMAVECTOREVALUATOR_H
8 #define SPARROW_TDDFTBSIGMAVECTOREVALUATOR_H
18 template<Utils::Reference restrictedness>
21 enum class TDDFTBType { TDDFTB, TDA };
48 template<Utils::Reference restrictedness>
58 Utils::SpinTransition spinBlock = Utils::SpinTransition::Singlet,
59 TDDFTBType type = TDDFTBType::TDDFTB);
68 auto evaluate(
const Eigen::MatrixXd& guessVectors)
const ->
const Eigen::MatrixXd&
final;
74 void calculateAtomicEnergyWeightedTransitionCharges(
const Eigen::MatrixXd& transitionCharges);
78 auto calculateXBI(
const Eigen::VectorXd& guessVector)
const -> Eigen::MatrixXd;
82 auto calculateYAI(
const Eigen::VectorXd& XBI)
const -> Eigen::MatrixXd;
86 auto calculateAtomicContraction(
const Eigen::MatrixXd& YAIMatrix)
const -> Eigen::VectorXd;
90 template<
typename Derived,
typename OtherDerived>
91 void fillAdditionalSigmaMatrixTerms(
const Eigen::MatrixBase<Derived>& sigmaBlock,
92 const Eigen::MatrixBase<OtherDerived>& guessVector)
const;
96 void collapsed(
int newSubspaceDimension)
final;
100 auto factor()
const -> double;
108 std::shared_ptr<Eigen::MatrixXd> gammaMatrix_;
109 std::shared_ptr<Eigen::VectorXd> spinConstantsVector_;
111 Utils::SpinTransition spinBlock_{Utils::SpinTransition::Singlet};
112 Eigen::MatrixXd energyWeightedAtomicTransitionCharges_;
114 mutable Eigen::MatrixXd currentSigmaMatrix_;
119 return isTDA_ ? 2.0 : 4.0;
122 inline auto TDDFTBSigmaVectorEvaluator<Utils::Reference::Unrestricted>::factor() const ->
double {
123 return isTDA_ ? 1.0 : 2.0;
128 #endif // SPARROW_TDDFTBSIGMAVECTOREVALUATOR_H
TDDFTBSigmaVectorEvaluator(std::shared_ptr< Eigen::MatrixXd > gammaMatrix, std::shared_ptr< Eigen::VectorXd > spinConstants, const OrderedInput< restrictedness > &orderedInput, Utils::SpinTransition spinBlock=Utils::SpinTransition::Singlet, TDDFTBType type=TDDFTBType::TDDFTB)
Constructor taking a OrderedInput<restrictedness> object.
Definition: TDDFTBSigmaVectorEvaluator.cpp:26
Definition: TDDFTBSigmaVectorEvaluator.h:49
auto evaluate(const Eigen::MatrixXd &guessVectors) const -> const Eigen::MatrixXd &final
Calculates one sigma vector per input guess vector.
Definition: TDDFTBSigmaVectorEvaluator.cpp:40