#include <threecenter.h>
|
| const Eigen::MatrixXd & | operator[] (Index i) const |
| Eigen::MatrixXd & | operator[] (Index i) |
| Index | auxsize () const |
| Index | get_mmin () const |
| Index | get_mmax () const |
| Index | get_nmin () const |
| Index | get_nmax () const |
| Index | msize () const |
| Index | nsize () const |
| void | Initialize (Index basissize, Index mmin, Index mmax, Index nmin, Index nmax) |
| void | Fill (const AOBasis &auxbasis, const AOBasis &dftbasis, const Eigen::MatrixXd &dft_orbitals) |
| void | Rebuild () |
| void | MultiplyRightWithAuxMatrix (const Eigen::MatrixXd &matrix) |
| void | MultiplyRightWithAuxMatrixLeading (const Eigen::MatrixXd &U, Index full_slices, Index lead) |
| | Rotate the auxiliary index of only the part of the tensor a consumer reads: all rows of slices [0, full_slices) and the first lead rows of slices [full_slices, lead).
|
| bool | PartiallyRotated () const |
| | Whether only a leading part was rotated since the last Fill.
|
| const Eigen::MatrixXd & | InvSqrt () const |
| const Eigen::MatrixXd & | AuxFrame () const |
| void | RestoreAuxFrame (const Eigen::MatrixXd &frame) |
| Eigen::MatrixXd | ToCurrentAuxFrame (const Eigen::MatrixXd &K) const |
| bool | AuxFrameIsOrthogonal () const |
| void | DressAuxIndex (const Eigen::MatrixXd &S) |
| | Dress the auxiliary index with S: M_fill -> M_fill S.
|
| void | UndressAuxIndex () |
| bool | Dressed () const |
| void | RotateOrbitals (const Eigen::MatrixXd &U, Index first, Index last) |
| | Change the orbital basis of levels [first, last] for QSGW: phi_i = sum_k U_ki psi_k, both orbital indices, all slices.
|
| | TCMatrix ()=default |
| virtual | ~TCMatrix ()=default |
| | TCMatrix (const TCMatrix &)=default |
| | TCMatrix (TCMatrix &&)=default |
| TCMatrix & | operator= (const TCMatrix &)=default |
| TCMatrix & | operator= (TCMatrix &&)=default |
| Index | Removedfunctions () const |
Definition at line 143 of file threecenter.h.
◆ AuxFrame()
| const Eigen::MatrixXd & votca::xtp::TCMatrix_gwbse::AuxFrame |
( |
| ) |
const |
|
inline |
◆ AuxFrameIsOrthogonal()
| bool votca::xtp::TCMatrix_gwbse::AuxFrameIsOrthogonal |
( |
| ) |
const |
◆ auxsize()
| Index votca::xtp::TCMatrix_gwbse::auxsize |
( |
| ) |
const |
|
inline |
◆ CoreExchange()
| Eigen::MatrixXd votca::xtp::TCMatrix_gwbse::CoreExchange |
( |
const AOBasis & | auxbasis, |
|
|
const AOBasis & | dftbasis, |
|
|
const Eigen::MatrixXd & | mos, |
|
|
Index | ncore, |
|
|
Index | qpmin, |
|
|
Index | qpmax ) |
|
static |
Exchange with the occupied levels 0..ncore-1 for the levels qpmin..qpmax of these MOs, with the bare Coulomb interaction: X(m,n) = - sum_{c < ncore} (m c | c n), from (m c | P) integrals filled for this purpose only. For frozen-core GW (rpamin = ncore > 0), whose Mmn has no rows for the core levels.
Definition at line 34 of file threecenter.cc.
◆ DressAuxIndex()
| void votca::xtp::TCMatrix_gwbse::DressAuxIndex |
( |
const Eigen::MatrixXd & | S | ) |
|
Dress the auxiliary index with S: M_fill -> M_fill S.
For a static environment the QM electrons interact through u = v + v_reac, which is 1 + R in the metric of M, and the screened interaction is W = [u^-1 - chi0]^-1. With S = (1 + R)^(1/2), that is exactly the ordinary RPA and correlation self-energy built from M S in place of M: every place that pairs two M's through the bare interaction pairs them through u instead.
S is in the fill-time frame, and is applied in whatever frame the integrals are in now; AuxFrame() records it, so ToCurrentAuxFrame still maps fill-time kernels correctly. Exchange-type sums that must keep the bare v take ToCurrentAuxFrame(identity) as their kernel once the frame is no longer orthogonal (see AuxFrameIsOrthogonal).
Throws if already dressed. Fill and Rebuild undress.
Definition at line 155 of file threecenter.cc.
◆ Dressed()
| bool votca::xtp::TCMatrix_gwbse::Dressed |
( |
| ) |
const |
|
inline |
◆ Fill()
| void votca::xtp::TCMatrix_gwbse::Fill |
( |
const AOBasis & | auxbasis, |
|
|
const AOBasis & | dftbasis, |
|
|
const Eigen::MatrixXd & | dft_orbitals ) |
◆ Fill3cMO()
| void votca::xtp::TCMatrix_gwbse::Fill3cMO |
( |
const AOBasis & | auxbasis, |
|
|
const AOBasis & | dftbasis, |
|
|
const Eigen::MatrixXd & | dft_orbitals ) |
|
private |
◆ get_mmax()
| Index votca::xtp::TCMatrix_gwbse::get_mmax |
( |
| ) |
const |
|
inline |
◆ get_mmin()
| Index votca::xtp::TCMatrix_gwbse::get_mmin |
( |
| ) |
const |
|
inline |
◆ get_nmax()
| Index votca::xtp::TCMatrix_gwbse::get_nmax |
( |
| ) |
const |
|
inline |
◆ get_nmin()
| Index votca::xtp::TCMatrix_gwbse::get_nmin |
( |
| ) |
const |
|
inline |
◆ Initialize()
◆ InvSqrt()
| const Eigen::MatrixXd & votca::xtp::TCMatrix_gwbse::InvSqrt |
( |
| ) |
const |
|
inline |
◆ msize()
| Index votca::xtp::TCMatrix_gwbse::msize |
( |
| ) |
const |
|
inline |
◆ MultiplyInFillFrame()
| void votca::xtp::TCMatrix_gwbse::MultiplyInFillFrame |
( |
const Eigen::MatrixXd & | A | ) |
|
|
private |
◆ MultiplyRightWithAuxMatrix()
| void votca::xtp::TCMatrix_gwbse::MultiplyRightWithAuxMatrix |
( |
const Eigen::MatrixXd & | matrix | ) |
|
◆ MultiplyRightWithAuxMatrixLeading()
| void votca::xtp::TCMatrix_gwbse::MultiplyRightWithAuxMatrixLeading |
( |
const Eigen::MatrixXd & | U, |
|
|
Index | full_slices, |
|
|
Index | lead ) |
Rotate the auxiliary index of only the part of the tensor a consumer reads: all rows of slices [0, full_slices) and the first lead rows of slices [full_slices, lead).
The BSE reads slices and rows up to its highest conduction level (lead) and, for the dielectric matrix, all rows of the occupied slices (full_slices). Rotating only those is exact for that use and skips the rows above the BSE window. The rest of the tensor is left in the old frame and is stale afterwards: AuxFrame() describes the rotated part, and dressing, which needs the whole tensor in one frame, throws until the next Fill or Rebuild.
Definition at line 97 of file threecenter.cc.
◆ nsize()
| Index votca::xtp::TCMatrix_gwbse::nsize |
( |
| ) |
const |
|
inline |
◆ operator[]() [1/2]
| Eigen::MatrixXd & votca::xtp::TCMatrix_gwbse::operator[] |
( |
Index | i | ) |
|
|
inline |
◆ operator[]() [2/2]
| const Eigen::MatrixXd & votca::xtp::TCMatrix_gwbse::operator[] |
( |
Index | i | ) |
const |
|
inline |
◆ PartiallyRotated()
| bool votca::xtp::TCMatrix_gwbse::PartiallyRotated |
( |
| ) |
const |
|
inline |
Whether only a leading part was rotated since the last Fill.
Definition at line 207 of file threecenter.h.
◆ Rebuild()
| void votca::xtp::TCMatrix_gwbse::Rebuild |
( |
| ) |
|
|
inline |
◆ RestoreAuxFrame()
| void votca::xtp::TCMatrix_gwbse::RestoreAuxFrame |
( |
const Eigen::MatrixXd & | frame | ) |
|
|
inline |
◆ RotateOrbitals()
| void votca::xtp::TCMatrix_gwbse::RotateOrbitals |
( |
const Eigen::MatrixXd & | U, |
|
|
Index | first, |
|
|
Index | last ) |
Change the orbital basis of levels [first, last] for QSGW: phi_i = sum_k U_ki psi_k, both orbital indices, all slices.
rows n in the window of every slice: M[m].rows <- U^T M[m].rows slices in the window: M[i] <- sum_k U_ki M[k]
Levels outside the window keep their orbitals. Everything that reads the tensor (RPA, self-energy, exchange) then works in the new basis without knowing about U. The auxiliary index is not touched.
- Parameters
-
| U | Rotation matrix (window x window), columns = new orbitals |
| first | First level of the window (absolute MO index) |
| last | Last level of the window (absolute MO index) |
Definition at line 243 of file threecenter.cc.
◆ ToCurrentAuxFrame()
| Eigen::MatrixXd votca::xtp::TCMatrix_gwbse::ToCurrentAuxFrame |
( |
const Eigen::MatrixXd & | K | ) |
const |
◆ UndressAuxIndex()
| void votca::xtp::TCMatrix_gwbse::UndressAuxIndex |
( |
| ) |
|
◆ aux_frame_
| Eigen::MatrixXd votca::xtp::TCMatrix_gwbse::aux_frame_ |
|
private |
◆ aux_frame_known_
| bool votca::xtp::TCMatrix_gwbse::aux_frame_known_ = true |
|
private |
◆ auxbasis_
| const AOBasis* votca::xtp::TCMatrix_gwbse::auxbasis_ = nullptr |
|
private |
◆ auxbasissize_
| Index votca::xtp::TCMatrix_gwbse::auxbasissize_ |
|
private |
◆ dft_orbitals_
| const Eigen::MatrixXd* votca::xtp::TCMatrix_gwbse::dft_orbitals_ = nullptr |
|
private |
◆ dftbasis_
| const AOBasis* votca::xtp::TCMatrix_gwbse::dftbasis_ = nullptr |
|
private |
◆ dressing_
| Eigen::MatrixXd votca::xtp::TCMatrix_gwbse::dressing_ |
|
private |
◆ matrix_
| std::vector<Eigen::MatrixXd> votca::xtp::TCMatrix_gwbse::matrix_ |
|
private |
◆ metric_tolerance
| double votca::xtp::TCMatrix_gwbse::metric_tolerance = 5e-7 |
|
staticconstexpr |
◆ mmax_
| Index votca::xtp::TCMatrix_gwbse::mmax_ |
|
private |
◆ mmin_
| Index votca::xtp::TCMatrix_gwbse::mmin_ |
|
private |
◆ mtotal_
| Index votca::xtp::TCMatrix_gwbse::mtotal_ |
|
private |
◆ nmax_
| Index votca::xtp::TCMatrix_gwbse::nmax_ |
|
private |
◆ nmin_
| Index votca::xtp::TCMatrix_gwbse::nmin_ |
|
private |
◆ ntotal_
| Index votca::xtp::TCMatrix_gwbse::ntotal_ |
|
private |
◆ partially_rotated_
| bool votca::xtp::TCMatrix_gwbse::partially_rotated_ = false |
|
private |
The documentation for this class was generated from the following files: