40template <
typename _Scalar,
typename _ONVBasis>
52 size_t number_of_states;
67 CI(
const ONVBasis& onv_basis,
const size_t number_of_states = 1) :
68 onv_basis {onv_basis},
69 number_of_states {number_of_states} {}
83 template <
typename Solver>
87 solver.perform(environment);
91 const auto eigenpairs = environment.
eigenpairs(this->number_of_states);
93 std::vector<LinearExpansion<Scalar, ONVBasis>> linear_expansions {};
94 linear_expansions.reserve(number_of_states);
96 std::vector<Scalar> energies {};
97 energies.reserve(this->number_of_states);
99 for (
const auto& eigenpair : eigenpairs) {
100 linear_expansions.emplace_back(onv_basis, eigenpair.eigenvector());
101 energies.push_back(eigenpair.eigenvalue());
Definition: EigenproblemEnvironment.hpp:35
std::vector< Eigenpair< double, Scalar > > eigenpairs(const size_t number_of_requested_eigenpairs=1) const
Definition: EigenproblemEnvironment.hpp:154
QCStructure< LinearExpansion< Scalar, ONVBasis >, Scalar > optimize(Solver &solver, EigenproblemEnvironment< Scalar > &environment) const
Definition: CI.hpp:84
_Scalar Scalar
Definition: CI.hpp:44
_ONVBasis ONVBasis
Definition: CI.hpp:47
CI(const ONVBasis &onv_basis, const size_t number_of_states=1)
Definition: CI.hpp:67
Definition: QCStructure.hpp:36
Definition: BaseOneElectronIntegralBuffer.hpp:25