21#ifndef VOTCA_XTP_VXC_POTENTIAL_H
22#define VOTCA_XTP_VXC_POTENTIAL_H
63 const Eigen::MatrixXd& density_matrix,
64 const std::vector<Eigen::MatrixXd>& response_matrices)
const;
66 const Eigen::MatrixXd& dmat_beta)
const;
75 const Eigen::MatrixXd& dmat_alpha,
const Eigen::MatrixXd& dmat_beta,
76 const std::vector<std::array<Eigen::MatrixXd, 2>>& response)
const;
85 Eigen::MatrixXd
PulayGradient(
const Eigen::MatrixXd& density_matrix,
129 const Eigen::MatrixXd& dmat_beta,
130 const AOBasis& dftbasis)
const;
132 const Eigen::MatrixXd& dmat_beta,
154 double sigma_ab,
double sigma_bb)
const;
160 double* exc,
double* vrho,
double* vsigma)
const;
162 double* exc,
double* vrho,
double* vsigma)
const;
166 double* vsigma,
double* v2rho2,
double* v2rhosigma,
167 double* v2sigma2)
const;
172 double* vsigma,
double* v2rho2,
double* v2rhosigma,
173 double* v2sigma2)
const;
Container to hold Basisfunctions for all atoms.
static constexpr Index kPointBlock
void EvaluateXCSpinBatch(Index n, const double *rho, const double *sigma, double *exc, double *vrho, double *vsigma) const
Eigen::MatrixXd GridWeightGradient(const Eigen::MatrixXd &density_matrix, const QMMolecule &atoms) const
Eigen::MatrixXd PulayGradient(const Eigen::MatrixXd &density_matrix, const AOBasis &dftbasis) const
void EvaluateFXCSpinBatch(Index n, const double *rho, const double *sigma, double *vsigma, double *v2rho2, double *v2rhosigma, double *v2sigma2) const
XC_entry_spin EvaluateXCSpin(double rho_a, double rho_b, double sigma_aa, double sigma_ab, double sigma_bb) const
void EvaluateXCBatch(Index n, const double *rho, const double *sigma, double *exc, double *vrho, double *vsigma) const
Eigen::MatrixXd PulayGradientUKS(const Eigen::MatrixXd &dmat_alpha, const Eigen::MatrixXd &dmat_beta, const AOBasis &dftbasis) const
XC_entry EvaluateXC(double rho, double sigma) const
void EvaluateFXCBatch(Index n, const double *rho, const double *sigma, double *vsigma, double *v2rho2, double *v2rhosigma, double *v2sigma2) const
Mat_p_Energy IntegrateVXC(const Eigen::MatrixXd &density_matrix) const
void setXCfunctional(const std::string &functional)
std::vector< std::array< Eigen::MatrixXd, 2 > > IntegrateFXCSpin(const Eigen::MatrixXd &dmat_alpha, const Eigen::MatrixXd &dmat_beta, const std::vector< std::array< Eigen::MatrixXd, 2 > > &response) const
Vxc_Potential(const Grid &grid)
static double getExactExchange(const std::string &functional)
std::vector< Eigen::MatrixXd > IntegrateFXC(const Eigen::MatrixXd &density_matrix, const std::vector< Eigen::MatrixXd > &response_matrices) const
Eigen::MatrixXd GridWeightGradientUKS(const Eigen::MatrixXd &dmat_alpha, const Eigen::MatrixXd &dmat_beta, const QMMolecule &atoms) const
SpinResult IntegrateVXCSpin(const Eigen::MatrixXd &dmat_alpha, const Eigen::MatrixXd &dmat_beta) const
Provides a means for comparing floating point numbers.
Eigen::MatrixXd vxc_alpha