ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
LR::HamiltULR< T > Class Template Reference

#include <hamilt_ulr.hpp>

Collaboration diagram for LR::HamiltULR< T >:

Public Member Functions

template<typename TGint >
 HamiltULR (std::string &xc_kernel, const int &nspin, const int &naos, const std::vector< int > &nocc, const std::vector< int > &nvirt, const UnitCell &ucell_in, const std::vector< double > &orb_cutoff, Grid_Driver &gd_in, const psi::Psi< T > &psi_ks_in, const ModuleBase::matrix &eig_ks, TGint *gint_in, std::vector< std::shared_ptr< PotHxcLR > > &pot_in, const K_Vectors &kv_in, const std::vector< Parallel_2D > &pX_in, const Parallel_2D &pc_in, const Parallel_Orbitals &pmat_in)
 
 ~HamiltULR ()
 
void hPsi (const T *const psi_in, T *const hpsi, const int ld_psi, const int &nband) const
 
std::vector< Tmatrix () const
 
void global2local (T *lvec, const T *gvec, const int &nband) const
 copy global data (eigenvectors) to local memory
 

Private Attributes

const std::vector< int > & nocc
 
const std::vector< int > & nvirt
 
const std::vector< Parallel_2D > & pX
 
const int nk = 1
 
const int ldim = 1
 
const int gdim = 1
 
std::vector< hamilt::Operator< T > * > ops
 4 operator lists: uu, ud, du, dd
 
std::unique_ptr< elecstate::DensityMatrix< T, T > > DM_trans
 
std::function< void(const int &, const T *const)> cal_dm_trans
 
const bool tdm_sym = false
 whether to symmetrize the transition density matrix
 

Detailed Description

template<typename T>
class LR::HamiltULR< T >

Unristricted TDDFT (TDA) for open-shell systems The A matrix is diveded by 4 blocks: uu, ud, du, dd

Constructor & Destructor Documentation

◆ HamiltULR()

template<typename T >
template<typename TGint >
LR::HamiltULR< T >::HamiltULR ( std::string &  xc_kernel,
const int &  nspin,
const int &  naos,
const std::vector< int > &  nocc,
const std::vector< int > &  nvirt,
const UnitCell ucell_in,
const std::vector< double > &  orb_cutoff,
Grid_Driver gd_in,
const psi::Psi< T > &  psi_ks_in,
const ModuleBase::matrix eig_ks,
TGint gint_in,
std::vector< std::shared_ptr< PotHxcLR > > &  pot_in,
const K_Vectors kv_in,
const std::vector< Parallel_2D > &  pX_in,
const Parallel_2D pc_in,
const Parallel_Orbitals pmat_in 
)
inline
Parameters
nocc{up, down}
nvirt{up, down}
pX_in{up, down}
Here is the call graph for this function:

◆ ~HamiltULR()

template<typename T >
LR::HamiltULR< T >::~HamiltULR ( )
inline

Member Function Documentation

◆ global2local()

template<typename T >
void LR::HamiltULR< T >::global2local ( T lvec,
const T gvec,
const int &  nband 
) const
inline

copy global data (eigenvectors) to local memory

◆ hPsi()

template<typename T >
void LR::HamiltULR< T >::hPsi ( const T *const  psi_in,
T *const  hpsi,
const int  ld_psi,
const int &  nband 
) const
inline

band-wise act (also works for close-shell, but not efficient)

Here is the call graph for this function:

◆ matrix()

template<typename T >
std::vector< T > LR::HamiltULR< T >::matrix ( ) const
inline
Here is the call graph for this function:

Member Data Documentation

◆ cal_dm_trans

template<typename T >
std::function<void(const int&, const T* const)> LR::HamiltULR< T >::cal_dm_trans
private

◆ DM_trans

template<typename T >
std::unique_ptr<elecstate::DensityMatrix<T, T> > LR::HamiltULR< T >::DM_trans
private

transition density matrix in AO representation Hxc only: size=1, calculate on the same address for each bands Hxc+Exx: size=nbands, store the result of each bands for common use

◆ gdim

template<typename T >
const int LR::HamiltULR< T >::gdim = 1
private

◆ ldim

template<typename T >
const int LR::HamiltULR< T >::ldim = 1
private

◆ nk

template<typename T >
const int LR::HamiltULR< T >::nk = 1
private

◆ nocc

template<typename T >
const std::vector<int>& LR::HamiltULR< T >::nocc
private

◆ nvirt

template<typename T >
const std::vector<int>& LR::HamiltULR< T >::nvirt
private

◆ ops

template<typename T >
std::vector<hamilt::Operator<T>*> LR::HamiltULR< T >::ops
private

4 operator lists: uu, ud, du, dd

◆ pX

template<typename T >
const std::vector<Parallel_2D>& LR::HamiltULR< T >::pX
private

◆ tdm_sym

template<typename T >
const bool LR::HamiltULR< T >::tdm_sym = false
private

whether to symmetrize the transition density matrix


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