22#ifndef VOTCA_XTP_UKS_CONVERGENCEACC_H
23#define VOTCA_XTP_UKS_CONVERGENCEACC_H
77 std::function<
SpinFock(
const Eigen::MatrixXd& ,
78 const Eigen::MatrixXd& )>;
90 SpinDensity
Iterate(
const SpinDensity& dmat, SpinFock&
H,
107 Index nocclevels)
const;
116 const Eigen::VectorXd& v,
Index nao_alpha,
Index nocclevels_alpha,
132 const Eigen::VectorXd& v,
const Eigen::MatrixXd& C_alpha,
133 Index nocclevels_alpha,
const Eigen::MatrixXd& C_beta,
135 double finite_diff_step = 1
e-3)
const;
148 Index nocclevels_alpha,
const Eigen::MatrixXd& H_AO_beta,
151 double& predicted_energy_change)
const;
160 Index nocclevels)
const;
162 void Levelshift(Eigen::MatrixXd&
H,
const Eigen::MatrixXd& MOs_old,
166 const Eigen::MatrixXd&
H)
const;
169 const Eigen::MatrixXd& err_beta)
const;
207 Index nocclevels,
double& predicted_energy_change)
const;
KSmode
Occupation model used when constructing density matrices.
Logger is used for thread-safe output of messages.
double CombinedError(const Eigen::MatrixXd &err_alpha, const Eigen::MatrixXd &err_beta) const
tools::EigenSystem SolveFockmatrix(const Eigen::MatrixXd &H) const
double direct_min_pre_energy_
ConvergenceAcc::KSmode KSmode
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > UnflattenCoupledRotation(const Eigen::VectorXd &v, Index nao_alpha, Index nocclevels_alpha, Index nao_beta, Index nocclevels_beta) const
static constexpr Index kAutoStartIteration
Index consecutive_adiis_failures_
SpinDensity DensityMatrix(const tools::EigenSystem &MOs_alpha, const tools::EigenSystem &MOs_beta) const
void Levelshift(Eigen::MatrixXd &H, const Eigen::MatrixXd &MOs_old, const options &opt, Index nocclevels) const
std::vector< Eigen::MatrixXd > mathist_beta_
static constexpr double kMinTrustRadius
static constexpr Index kMaxConsecutiveADIISFailures
void setOverlap(AOOverlap &S, double etol)
void setLogger(Logger *log)
void Configure(const options &opt_alpha, const options &opt_beta)
Eigen::MatrixXd direct_min_pre_MOs_beta_
bool getUseMixing() const
Eigen::VectorXd BuildCoupledSigmaVector(const Eigen::VectorXd &v, const Eigen::MatrixXd &C_alpha, Index nocclevels_alpha, const Eigen::MatrixXd &C_beta, Index nocclevels_beta, const CoupledFockBuilder &coupled_fock_builder, double finite_diff_step=1e-3) const
Eigen::MatrixXd BuildErrorMatrix(const Eigen::MatrixXd &dmat, const Eigen::MatrixXd &H) const
ConvergenceAcc::options options
SpinDensity Iterate(const SpinDensity &dmat, SpinFock &H, tools::EigenSystem &MOs_alpha, tools::EigenSystem &MOs_beta, double totE)
std::vector< Eigen::MatrixXd > dmatHist_alpha_
Eigen::MatrixXd direct_min_pre_MOs_alpha_
bool direct_min_floor_hit_
Eigen::MatrixXd DirectMinimizationRotation(const Eigen::MatrixXd &H_AO, const tools::EigenSystem &MOs, Index nocclevels, double &predicted_energy_change) const
Eigen::MatrixXd UnflattenRotation(const Eigen::VectorXd &v_ov, Index nao, Index nocclevels) const
Eigen::VectorXd direct_min_pre_MOs_beta_energies_
double trust_radius_current_
std::vector< double > diiserror_history_
std::vector< Eigen::MatrixXd > dmatHist_beta_
std::vector< double > totE_
CoupledFockBuilder coupled_fock_builder_
Eigen::VectorXd direct_min_pre_MOs_alpha_energies_
Eigen::MatrixXd DensityMatrixGroundState_unres(const Eigen::MatrixXd &MOs, Index nocclevels) const
static constexpr Index kTrailingWindowSize
double direct_min_predicted_change_
static constexpr double kMeanRatioTolerance
std::function< SpinFock(const Eigen::MatrixXd &, const Eigen::MatrixXd &)> CoupledFockBuilder
double getDIIsError() const
std::vector< Eigen::MatrixXd > mathist_alpha_
Eigen::MatrixXd Sminusahalf
Index total_iteration_count_
void setCoupledFockBuilder(const CoupledFockBuilder &builder)
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > CoupledAugmentedHessianStep(const Eigen::MatrixXd &H_AO_alpha, const tools::EigenSystem &MOs_alpha, Index nocclevels_alpha, const Eigen::MatrixXd &H_AO_beta, const tools::EigenSystem &MOs_beta, Index nocclevels_beta, const CoupledFockBuilder &coupled_fock_builder, double trust_radius, double &predicted_energy_change) const
Provides a means for comparing floating point numbers.
Eigen::MatrixXd total() const