7 #ifndef SPARROW_CISLINEARRESPONSETIMEDEPENDENTCALCULATOR_H
8 #define SPARROW_CISLINEARRESPONSETIMEDEPENDENTCALCULATOR_H
11 #include <Core/Interfaces/CalculatorWithReference.h>
14 #include <Utils/Math/IterativeDiagonalizer/SpinAdaptedEigenContainer.h>
17 #include <Eigen/Sparse>
29 class ElectronicOccupation;
31 enum class SpinTransition;
35 class NDDOMethodWrapper;
50 constexpr
static const char* model =
"CIS-NDDO";
100 std::string
name()
const final;
117 template<Utils::Reference restrictedness>
119 int numberOfEnergyLevels = 0,
int initialSubspaceDimension = 0,
120 Utils::SpinTransition spinBlock = Utils::SpinTransition::Singlet);
134 void setGuess(std::shared_ptr<GuessSpecifier> guessVectorMatrix)
final;
138 auto getGuess()
const -> std::shared_ptr<GuessSpecifier>
final;
141 void setExcitedStatesParam(Utils::Reference restrictedness, Utils::SpinTransition spinBlock);
142 void prepareIntegralScreening();
143 void checkMemoryRequirement(
int excitationsDim,
int numberOfEnergyLevels);
144 template<Utils::Reference restrictedness>
146 Utils::SpinTransition spinBlock)
const;
148 std::shared_ptr<NDDOMethodWrapper> nddoMethod_;
149 std::unique_ptr<Utils::Settings> settings_;
150 std::unique_ptr<CISData> cisData_;
151 std::shared_ptr<GuessSpecifier> guess_;
152 std::vector<std::multimap<double, int, std::greater<double>>> integralsThresholds_;
153 std::vector<int> orderMap_;
160 #endif // SPARROW_CISLINEARRESPONSETIMEDEPENDENTCALCULATOR_H
void applySettings() final
Apply the settings contained in the settings_ member.
Definition: CISLinearResponseTimeDependentCalculator.cpp:89
Definition: TimeDependentUtils.h:22
Definition: LinearResponseCalculator.h:15
auto getGuess() const -> std::shared_ptr< GuessSpecifier > final
Returns the guess in the full singles space (no pruning)
Definition: CISLinearResponseTimeDependentCalculator.cpp:331
Utils::Settings & settings() final
Accessor for the underlying settings.
Definition: CISLinearResponseTimeDependentCalculator.cpp:77
CISLinearResponseTimeDependentCalculator()
TODO: Active space?
Definition: CISLinearResponseTimeDependentCalculator.cpp:46
void setReferenceCalculator(std::shared_ptr< Core::Calculator > method) final
Sets the ground state method to calculate excited states.
Definition: CISLinearResponseTimeDependentCalculator.cpp:38
Definition: CISLinearResponseTimeDependentCalculator.h:48
Core::Calculator & getReferenceCalculator() final
Accessor for the ground state calculator.
Definition: CISLinearResponseTimeDependentCalculator.cpp:69
void referenceCalculation() final
This function gives the chance to perform a reference calculation. This is not needed if the calculat...
Definition: CISLinearResponseTimeDependentCalculator.cpp:58
Utils::Results & results() final
Accessor for the Results stored in this method wrapper.
Definition: CISLinearResponseTimeDependentCalculator.cpp:50
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: CISLinearResponseTimeDependentCalculator.cpp:327
std::string name() const final
Getter for the model name, in this case "CIS".
Definition: CISLinearResponseTimeDependentCalculator.cpp:85
This class contains the infos needed to perform a CIS calculation. This way excited states properties...
Definition: CISData.h:24
Utils::ElectronicTransitionResult solve(Utils::SpinAdaptedContainer< restrictedness, Eigen::VectorXd > energyDifferenceVector, int numberOfEnergyLevels=0, int initialSubspaceDimension=0, Utils::SpinTransition spinBlock=Utils::SpinTransition::Singlet)
Solves the first roots of the CIS Matrix in a direct way.
Definition: CISLinearResponseTimeDependentCalculator.cpp:127
const Utils::Results & calculate() final
Overridden calculate method, inherited from Core::CalculatorWithReference. This method works through ...
Definition: CISLinearResponseTimeDependentCalculator.cpp:203