ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions
LR Namespace Reference

Namespaces

namespace  HSolver
 

Classes

class  ESolver_LR
 Excited State Solver: Linear Response TDDFT (Tamm Dancoff Approximation) More...
 
class  HamiltLR
 
class  HamiltULR
 
class  KernelXC
 Calculate the exchange-correlation (XC) kernel ($f_{xc}=\delta^2E_xc/\delta\rho^2$) and store its components. More...
 
class  LR_Spectrum
 
class  OperatorLRDiag
 Diag part of A operator: [AX]_iak = (e_ak - e_ik) X_iak. More...
 
class  OperatorLREXX
 
class  OperatorLRHxc
 Hxc part of A operator for LR-TDDFT. More...
 
class  PotHxcLR
 
struct  TGint
 
struct  TGint< double >
 
struct  TGint< std::complex< double > >
 

Typedefs

template<typename T >
using Real = typename GetTypeReal< T >::type
 

Enumerations

enum  MO_TYPE {
  OO , VO , VV , OO ,
  VO , VV
}
 
enum  MO_TYPE {
  OO , VO , VV , OO ,
  VO , VV
}
 

Functions

template<typename T >
void ao_to_mo_forloop_serial (const std::vector< container::Tensor > &mat_ao, const psi::Psi< T > &coeff, const int &nocc, const int &nvirt, T *const mat_mo, const MO_TYPE type=VO)
 
template<typename T >
void ao_to_mo_blas (const std::vector< container::Tensor > &mat_ao, const psi::Psi< T > &coeff, const int &nocc, const int &nvirt, T *const mat_mo, const bool add_on=true, const MO_TYPE type=VO)
 
template<typename T >
void ao_to_mo_pblas (const std::vector< container::Tensor > &mat_ao, const Parallel_2D &pmat_ao, const psi::Psi< T > &coeff, const Parallel_2D &pcoeff, const int &naos, const int &nocc, const int &nvirt, const Parallel_2D &pmat_mo, T *const mat_mo, const bool add_on=true, const MO_TYPE type=VO)
 
template<>
void ao_to_mo_pblas (const std::vector< container::Tensor > &mat_ao, const Parallel_2D &pmat_ao, const psi::Psi< double > &coeff, const Parallel_2D &pcoeff, const int &naos, const int &nocc, const int &nvirt, const Parallel_2D &pmat_mo, double *mat_mo, const bool add_on, const MO_TYPE type)
 
template<>
void ao_to_mo_pblas (const std::vector< container::Tensor > &mat_ao, const Parallel_2D &pmat_ao, const psi::Psi< std::complex< double > > &coeff, const Parallel_2D &pcoeff, const int &naos, const int &nocc, const int &nvirt, const Parallel_2D &pmat_mo, std::complex< double > *const mat_mo, const bool add_on, const MO_TYPE type)
 
template<>
void ao_to_mo_forloop_serial (const std::vector< container::Tensor > &mat_ao, const psi::Psi< double > &coeff, const int &nocc, const int &nvirt, double *mat_mo, const MO_TYPE type)
 
template<>
void ao_to_mo_forloop_serial (const std::vector< container::Tensor > &mat_ao, const psi::Psi< std::complex< double > > &coeff, const int &nocc, const int &nvirt, std::complex< double > *const mat_mo, const MO_TYPE type)
 
template<>
void ao_to_mo_blas (const std::vector< container::Tensor > &mat_ao, const psi::Psi< double > &coeff, const int &nocc, const int &nvirt, double *mat_mo, const bool add_on, const MO_TYPE type)
 
template<>
void ao_to_mo_blas (const std::vector< container::Tensor > &mat_ao, const psi::Psi< std::complex< double > > &coeff, const int &nocc, const int &nvirt, std::complex< double > *const mat_mo, const bool add_on, const MO_TYPE type)
 
template<typename T >
std::vector< container::Tensorcal_dm_trans_pblas (const T *const X_istate, const Parallel_2D &px, const psi::Psi< T > &c, const Parallel_2D &pc, const int naos, const int nocc, const int nvirt, const Parallel_2D &pmat, const T factor=(T) 1.0, const MO_TYPE type=MO_TYPE::VO)
 calculate the 2d-block transition density matrix in AO basis using p?gemm
 
template<typename T >
std::vector< container::Tensorcal_dm_trans_blas (const T *const X_istate, const psi::Psi< T > &c, const int &nocc, const int &nvirt, const T factor=(T) 1.0, const MO_TYPE type=MO_TYPE::VO)
 calculate the 2d-block transition density matrix in AO basis using ?gemm
 
template<typename T >
std::vector< container::Tensorcal_dm_trans_forloop_serial (const T *const X_istate, const psi::Psi< T > &c, const int &nocc, const int &nvirt, const T factor=(T) 1.0, const MO_TYPE type=MO_TYPE::VO)
 calculate the 2d-block transition density matrix in AO basis using for loop (for test)
 
template<>
std::vector< container::Tensorcal_dm_trans_pblas (const double *const X_istate, const Parallel_2D &px, const psi::Psi< double > &c, const Parallel_2D &pc, const int naos, const int nocc, const int nvirt, const Parallel_2D &pmat, const double factor, const MO_TYPE type)
 
template<>
std::vector< container::Tensorcal_dm_trans_pblas (const std::complex< double > *const X_istate, const Parallel_2D &px, const psi::Psi< std::complex< double > > &c, const Parallel_2D &pc, const int naos, const int nocc, const int nvirt, const Parallel_2D &pmat, const std::complex< double > factor, const MO_TYPE type)
 
template<>
std::vector< container::Tensorcal_dm_trans_forloop_serial (const double *const X_istate, const psi::Psi< double > &c, const int &nocc, const int &nvirt, const double factor, const MO_TYPE type)
 
template<>
std::vector< container::Tensorcal_dm_trans_forloop_serial (const std::complex< double > *const X_istate, const psi::Psi< std::complex< double > > &c, const int &nocc, const int &nvirt, const std::complex< double > factor, const MO_TYPE type)
 
template<>
std::vector< container::Tensorcal_dm_trans_blas (const double *const X_istate, const psi::Psi< double > &c, const int &nocc, const int &nvirt, const double factor, const MO_TYPE type)
 
template<>
std::vector< container::Tensorcal_dm_trans_blas (const std::complex< double > *const X_istate, const psi::Psi< std::complex< double > > &c, const int &nocc, const int &nvirt, const std::complex< double > factor, const MO_TYPE type)
 
Velocity_op< std::complex< double > > get_velocity_matrix_R (const UnitCell &ucell, const Grid_Driver &gd, const Parallel_Orbitals &pmat, const TwoCenterBundle &two_center_bundle)
 get the velocity matrix v(R)
 
double lorentz_delta (const double dfreq_au, const double eta_au)
 
double gauss_delta (const double dfreq_au, const double eta_au)
 
template<typename T >
ModuleBase::Vector3< Tconvert_vector_to_vector3 (const std::vector< std::complex< double > > &vec)
 
template<>
ModuleBase::Vector3< double > convert_vector_to_vector3 (const std::vector< std::complex< double > > &vec)
 
template<>
ModuleBase::Vector3< std::complex< double > > convert_vector_to_vector3 (const std::vector< std::complex< double > > &vec)
 
void cal_eig_ks_diff (double *const eig_ks_diff, const double *const eig_ks, const Parallel_2D &px, const int nk, const int nocc, const int nvirt)
 

Typedef Documentation

◆ Real

template<typename T >
using LR::Real = typedef typename GetTypeReal<T>::type

Enumeration Type Documentation

◆ MO_TYPE [1/2]

Enumerator
OO 
VO 
VV 
OO 
VO 
VV 

◆ MO_TYPE [2/2]

Enumerator
OO 
VO 
VV 
OO 
VO 
VV 

Function Documentation

◆ ao_to_mo_blas() [1/3]

template<>
void LR::ao_to_mo_blas ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< double > &  coeff,
const int &  nocc,
const int &  nvirt,
double *  mat_mo,
const bool  add_on,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_blas() [2/3]

template<>
void LR::ao_to_mo_blas ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< std::complex< double > > &  coeff,
const int &  nocc,
const int &  nvirt,
std::complex< double > *const  mat_mo,
const bool  add_on,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_blas() [3/3]

template<typename T >
void LR::ao_to_mo_blas ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< T > &  coeff,
const int &  nocc,
const int &  nvirt,
T *const  mat_mo,
const bool  add_on = true,
const MO_TYPE  type = VO 
)
Here is the caller graph for this function:

◆ ao_to_mo_forloop_serial() [1/3]

template<>
void LR::ao_to_mo_forloop_serial ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< double > &  coeff,
const int &  nocc,
const int &  nvirt,
double *  mat_mo,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_forloop_serial() [2/3]

template<>
void LR::ao_to_mo_forloop_serial ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< std::complex< double > > &  coeff,
const int &  nocc,
const int &  nvirt,
std::complex< double > *const  mat_mo,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_forloop_serial() [3/3]

template<typename T >
void LR::ao_to_mo_forloop_serial ( const std::vector< container::Tensor > &  mat_ao,
const psi::Psi< T > &  coeff,
const int &  nocc,
const int &  nvirt,
T *const  mat_mo,
const MO_TYPE  type = VO 
)
Here is the caller graph for this function:

◆ ao_to_mo_pblas() [1/3]

template<>
void LR::ao_to_mo_pblas ( const std::vector< container::Tensor > &  mat_ao,
const Parallel_2D pmat_ao,
const psi::Psi< double > &  coeff,
const Parallel_2D pcoeff,
const int &  naos,
const int &  nocc,
const int &  nvirt,
const Parallel_2D pmat_mo,
double *  mat_mo,
const bool  add_on,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_pblas() [2/3]

template<>
void LR::ao_to_mo_pblas ( const std::vector< container::Tensor > &  mat_ao,
const Parallel_2D pmat_ao,
const psi::Psi< std::complex< double > > &  coeff,
const Parallel_2D pcoeff,
const int &  naos,
const int &  nocc,
const int &  nvirt,
const Parallel_2D pmat_mo,
std::complex< double > *const  mat_mo,
const bool  add_on,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ ao_to_mo_pblas() [3/3]

template<typename T >
void LR::ao_to_mo_pblas ( const std::vector< container::Tensor > &  mat_ao,
const Parallel_2D pmat_ao,
const psi::Psi< T > &  coeff,
const Parallel_2D pcoeff,
const int &  naos,
const int &  nocc,
const int &  nvirt,
const Parallel_2D pmat_mo,
T *const  mat_mo,
const bool  add_on = true,
const MO_TYPE  type = VO 
)
Here is the caller graph for this function:

◆ cal_dm_trans_blas() [1/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_blas ( const double *const  X_istate,
const psi::Psi< double > &  c,
const int &  nocc,
const int &  nvirt,
const double  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_blas() [2/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_blas ( const std::complex< double > *const  X_istate,
const psi::Psi< std::complex< double > > &  c,
const int &  nocc,
const int &  nvirt,
const std::complex< double >  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_blas() [3/3]

template<typename T >
std::vector< container::Tensor > LR::cal_dm_trans_blas ( const T *const  X_istate,
const psi::Psi< T > &  c,
const int &  nocc,
const int &  nvirt,
const T  factor = (T) 1.0,
const MO_TYPE  type = MO_TYPE::VO 
)

calculate the 2d-block transition density matrix in AO basis using ?gemm

Here is the caller graph for this function:

◆ cal_dm_trans_forloop_serial() [1/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_forloop_serial ( const double *const  X_istate,
const psi::Psi< double > &  c,
const int &  nocc,
const int &  nvirt,
const double  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_forloop_serial() [2/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_forloop_serial ( const std::complex< double > *const  X_istate,
const psi::Psi< std::complex< double > > &  c,
const int &  nocc,
const int &  nvirt,
const std::complex< double >  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_forloop_serial() [3/3]

template<typename T >
std::vector< container::Tensor > LR::cal_dm_trans_forloop_serial ( const T *const  X_istate,
const psi::Psi< T > &  c,
const int &  nocc,
const int &  nvirt,
const T  factor = (T) 1.0,
const MO_TYPE  type = MO_TYPE::VO 
)

calculate the 2d-block transition density matrix in AO basis using for loop (for test)

Here is the caller graph for this function:

◆ cal_dm_trans_pblas() [1/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_pblas ( const double *const  X_istate,
const Parallel_2D px,
const psi::Psi< double > &  c,
const Parallel_2D pc,
const int  naos,
const int  nocc,
const int  nvirt,
const Parallel_2D pmat,
const double  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_pblas() [2/3]

template<>
std::vector< container::Tensor > LR::cal_dm_trans_pblas ( const std::complex< double > *const  X_istate,
const Parallel_2D px,
const psi::Psi< std::complex< double > > &  c,
const Parallel_2D pc,
const int  naos,
const int  nocc,
const int  nvirt,
const Parallel_2D pmat,
const std::complex< double >  factor,
const MO_TYPE  type 
)
Here is the call graph for this function:

◆ cal_dm_trans_pblas() [3/3]

template<typename T >
std::vector< container::Tensor > LR::cal_dm_trans_pblas ( const T *const  X_istate,
const Parallel_2D px,
const psi::Psi< T > &  c,
const Parallel_2D pc,
const int  naos,
const int  nocc,
const int  nvirt,
const Parallel_2D pmat,
const T  factor = (T) 1.0,
const MO_TYPE  type = MO_TYPE::VO 
)

calculate the 2d-block transition density matrix in AO basis using p?gemm

\[ \tilde{\rho}_{\mu_j\mu_b}=\sum_{jb}c_{j,\mu_j}X_{jb}c^*_{b,\mu_b} \]

Here is the caller graph for this function:

◆ cal_eig_ks_diff()

void LR::cal_eig_ks_diff ( double *const  eig_ks_diff,
const double *const  eig_ks,
const Parallel_2D px,
const int  nk,
const int  nocc,
const int  nvirt 
)
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ convert_vector_to_vector3() [1/3]

template<typename T >
ModuleBase::Vector3< T > LR::convert_vector_to_vector3 ( const std::vector< std::complex< double > > &  vec)
inline

◆ convert_vector_to_vector3() [2/3]

template<>
ModuleBase::Vector3< double > LR::convert_vector_to_vector3 ( const std::vector< std::complex< double > > &  vec)
inline

◆ convert_vector_to_vector3() [3/3]

template<>
ModuleBase::Vector3< std::complex< double > > LR::convert_vector_to_vector3 ( const std::vector< std::complex< double > > &  vec)
inline

◆ gauss_delta()

double LR::gauss_delta ( const double  dfreq_au,
const double  eta_au 
)
inline

◆ get_velocity_matrix_R()

Velocity_op< std::complex< double > > LR::get_velocity_matrix_R ( const UnitCell ucell,
const Grid_Driver gd,
const Parallel_Orbitals pmat,
const TwoCenterBundle two_center_bundle 
)
inline

get the velocity matrix v(R)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lorentz_delta()

double LR::lorentz_delta ( const double  dfreq_au,
const double  eta_au 
)
inline
Here is the caller graph for this function: