ERKALE
ERKALE - DFT from Hel
 All Classes Functions Variables Friends Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Casida Class Reference

Class for performing Casida calculations. More...

#include <casida.h>

Public Member Functions

 Casida ()
 Dummy constructor.
 
 Casida (const Settings &set, const BasisSet &basis, const arma::vec &E, const arma::mat &C, const arma::mat &P, const std::vector< double > &occs)
 Constructor for spin-unpolarized calculation.
 
 Casida (const Settings &set, const BasisSet &basis, const arma::vec &Ea, const arma::vec &Eb, const arma::mat &Ca, const arma::mat &Cb, const arma::mat &Pa, const arma::mat &Pb, const std::vector< double > &occa, const std::vector< double > &occb)
 Constructor for spin-polarized calculation.
 
 ~Casida ()
 Destructor.
 
arma::mat transition (const BasisSet &bas, const arma::vec &q) const
 Compute the q-dependent transition.
 
arma::mat transition (const BasisSet &bas, double q) const
 Compute the spherically averaged, q-dependent transition.
 
arma::mat dipole_transition (const BasisSet &bas) const
 Compute the dipole transition spectrum.
 

Private Member Functions

void Kcoul (const BasisSet &basis, const Settings &set)
 
void Kxc (const BasisSet &bas, double tol, int x_func, int c_func)
 
double esq (states_pair_t ip, bool ispin) const
 Calculate $ (\epsilon_{l\tau} - \epsilon_{k\tau})^2 $.
 
double fe (states_pair_t ip, bool ispin) const
 Calculate $ \sqrt{ (f_{i\sigma} - f_{j\sigma}) (\epsilon_{j\sigma}-\epsilon_{i\sigma}) } $.
 
void form_pairs (const Settings &set, const std::vector< std::vector< double > > occs)
 Form pairs and occupations.
 
arma::mat matrix_transform (bool ispin, const arma::mat &m) const
 Transform given AO matrix to MO.
 
arma::cx_mat matrix_transform (bool ispin, const arma::cx_mat &m) const
 Transform given AO matrix to MO.
 
void parse_coupling (const Settings &set)
 Common routines for constructors.
 
void calc_K (const Settings &set, const BasisSet &bas)
 Construct the K matrices.
 
void coulomb_fit (const BasisSet &basis, std::vector< arma::mat > &munu, arma::mat &ab_inv, const Settings &set) const
 Compute the Coulomb fitting integrals $ (\mu \nu | a) $ and the matrix $ (a|b)^{-1} $.
 
void solve ()
 Solve the Casida equation.
 
arma::mat transition (const std::vector< arma::mat > &M) const
 Compute the transition speeds using the matrix elements given by M.
 
arma::mat transition (const std::vector< arma::cx_mat > &M) const
 Compute the transition speeds using the matrix elements given by M.
 

Private Attributes

std::vector< std::vector
< states_pair_t > > 
pairs
 List of electron-hole pairs included in calculation.
 
enum coupling_mode coupling
 How to couple electron-hole pairs (IPA, RPA, TDLDA)
 
std::vector< arma::vec > f
 Occupancies of orbitals.
 
std::vector< size_t > nocc
 Number of occupied orbitals.
 
std::vector< size_t > nvirt
 Number of virtual orbitals.
 
std::vector< arma::vec > E
 MO energies for spin up and spin down.
 
std::vector< arma::mat > C
 MO coefficient matrices for spin up and spin down.
 
std::vector< arma::mat > P
 Density matrices.
 
std::vector< std::vector
< arma::mat > > 
dipmat
 Dipole matrix elements: [nspin][3][norb,norb].
 
arma::mat K
 
arma::vec w_i
 Eigenvalues of Casida's equation (and later on, the excitation energies)
 
arma::mat F_i
 Eigenvectors of Casida's equation.
 

Detailed Description

Class for performing Casida calculations.

Member Function Documentation

void Casida::Kcoul ( const BasisSet basis,
const Settings set 
)
private

This routine constructs the Coulomb coupling matrix $ K_{\rm Coul}(ij\sigma, kl\tau) = \int d^3r d^3r' \psi_{i\sigma}({\bf r}) \psi_{j\sigma}({\bf r}) \frac 1 {\left| {\bf r} - {\bf r}' \right|} \psi_{k\tau}(r') \psi_{l\tau}(r') $ (Eq. 2.6 in Jamorski et al [1996]).

Only the same-spin couplings are computed, since spin up - spin down couplings are not necessary even for TDLDA.

To save memory, the result is stored in the K matrix.

void Casida::Kxc ( const BasisSet bas,
double  tol,
int  x_func,
int  c_func 
)
private

This routine constructs the exchange-correlation coupling matrix $ K_{\rm XC}(ij\sigma, kl\tau) = \int d^3r d^3r' \psi_{i\sigma}({\bf r}) \psi_{j\sigma}({\bf r}) \frac {\delta^2 E_{xc} [\rho_\uparrow,\rho_\downarrow]} {\delta \rho_\sigma ({\bf r}) \delta \rho_\tau ({\bf r})} \psi_{k\tau}(r') \psi_{l\tau}(r') $

Only the same-spin couplings are computed, since spin up - spin down couplings are not necessary even for TDLDA.

To save memory, the result is stored in the K matrix.


The documentation for this class was generated from the following files: