votca 2026-dev
Loading...
Searching...
No Matches
votca::xtp::exact_pole_sums Namespace Reference

Functions

double Value (const ExactPoles &poles, const double *residues, double w)
 S_n(w) at one frequency.
double Derivative (const ExactPoles &poles, const double *residues, double w)
 dS_n/dw at one frequency
Eigen::VectorXd Values (const ExactPoles &poles, const double *residues, const Eigen::VectorXd &w)
Eigen::VectorXd Values (const ExactPoles &poles, const double *residues, const Eigen::VectorXd &w, const double *mode_factors)
Eigen::VectorXd ValuesDirect (const ExactPoles &poles, const double *residues, const Eigen::VectorXd &w)
 The same sum term by term at every frequency (reference for tests).
Eigen::VectorXd ValuesDirect (const ExactPoles &poles, const double *residues, const Eigen::VectorXd &w, const double *mode_factors)
Eigen::VectorXd ValuesDirectWeighted (const ExactPoles &poles, const double *weights, const Eigen::VectorXd &w)
 sum_p a_p f(w - z_p) with given weights a_p (e.g. r_n1 r_n2)
Eigen::MatrixXd OffDiagonal (const ExactPoles &poles, const Eigen::MatrixXd &residues_all, const Eigen::VectorXd &w)

Function Documentation

◆ Derivative()

double votca::xtp::exact_pole_sums::Derivative ( const ExactPoles & poles,
const double * residues,
double w )

dS_n/dw at one frequency

Definition at line 88 of file exact_pole_sums.cc.

◆ OffDiagonal()

Eigen::MatrixXd votca::xtp::exact_pole_sums::OffDiagonal ( const ExactPoles & poles,
const Eigen::MatrixXd & residues_all,
const Eigen::VectorXd & w )

Off-diagonal elements for all pairs of the Q levels whose residues are the columns of residues_all (npoles x Q): O(n1,n2) = sum_p r_n1(p) r_n2(p) [f(w_n1 - z_p) + f(w_n2 - z_p)], f(t) = t / (t^2 + eta^2), diagonal zero, as blocked matrix products.

Definition at line 280 of file exact_pole_sums.cc.

◆ Value()

double votca::xtp::exact_pole_sums::Value ( const ExactPoles & poles,
const double * residues,
double w )

S_n(w) at one frequency.

Definition at line 63 of file exact_pole_sums.cc.

◆ Values() [1/2]

Eigen::VectorXd votca::xtp::exact_pole_sums::Values ( const ExactPoles & poles,
const double * residues,
const Eigen::VectorXd & w )

S_n at many frequencies. For batches of 24 or more, the poles far from the frequencies (more than twice the half-width h of their range away from its centre) are summed at Chebyshev nodes of the range and interpolated; the number of nodes falls with the distance (48 down to 16 beyond 10 h), always with an interpolation error far below rounding. The near poles are summed at every frequency.

Definition at line 183 of file exact_pole_sums.cc.

◆ Values() [2/2]

Eigen::VectorXd votca::xtp::exact_pole_sums::Values ( const ExactPoles & poles,
const double * residues,
const Eigen::VectorXd & w,
const double * mode_factors )

The same with a factor per mode s: sum_{m,s} c_s r(m,s)^2 f(w - z_ms) (c_s >= 0; modes with c_s = 0 are skipped; nullptr means all 1). Used by the plasmon-pole self-energy, whose poles have the same form.

Definition at line 188 of file exact_pole_sums.cc.

◆ ValuesDirect() [1/2]

Eigen::VectorXd votca::xtp::exact_pole_sums::ValuesDirect ( const ExactPoles & poles,
const double * residues,
const Eigen::VectorXd & w )

The same sum term by term at every frequency (reference for tests).

Definition at line 141 of file exact_pole_sums.cc.

◆ ValuesDirect() [2/2]

Eigen::VectorXd votca::xtp::exact_pole_sums::ValuesDirect ( const ExactPoles & poles,
const double * residues,
const Eigen::VectorXd & w,
const double * mode_factors )

Definition at line 152 of file exact_pole_sums.cc.

◆ ValuesDirectWeighted()

Eigen::VectorXd votca::xtp::exact_pole_sums::ValuesDirectWeighted ( const ExactPoles & poles,
const double * weights,
const Eigen::VectorXd & w )

sum_p a_p f(w - z_p) with given weights a_p (e.g. r_n1 r_n2)

Definition at line 146 of file exact_pole_sums.cc.