ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
Exx_LRI< Tdata > Class Template Reference

#include <Exx_LRI.h>

Collaboration diagram for Exx_LRI< Tdata >:

Public Member Functions

 Exx_LRI (const Exx_Info::Exx_Info_RI &info_in)
 
Exx_LRI operator= (const Exx_LRI &)=delete
 
Exx_LRI operator= (Exx_LRI &&)
 
void init (const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb)
 
void cal_exx_ions (const UnitCell &ucell, const bool write_cv=false)
 
void cal_exx_elec (const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > &Ds, const UnitCell &ucell, const Parallel_Orbitals &pv, const ModuleSymmetry::Symmetry_rotation *p_symrot=nullptr)
 
void cal_exx_force (const int &nat)
 
void cal_exx_stress (const double &omega, const double &lat0)
 
void reset_Cs (const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs_in)
 
void reset_Vs (const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in)
 

Public Attributes

std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > Hexxs
 
double Eexx
 
ModuleBase::matrix force_exx
 
ModuleBase::matrix stress_exx
 

Private Types

using TA = int
 
using Tcell = int
 
using TC = std::array< Tcell, Ndim >
 
using TAC = std::pair< TA, TC >
 
using TatomR = std::array< double, Ndim >
 

Private Member Functions

void post_process_Hexx (std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Hexxs_io) const
 
double post_process_Eexx (const double &Eexx_in) const
 

Private Attributes

const Exx_Info::Exx_Info_RIinfo
 
MPI_Comm mpi_comm
 
const K_Vectorsp_kv = nullptr
 
ORB_gaunt_table MGT
 
std::vector< double > orb_cutoff_
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > lcaos
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs
 
std::map< Conv_Coulomb_Pot_K::Coulomb_Method, Exx_Obj< Tdata > > exx_objs
 
RI::Exx< TA, Tcell, Ndim, Tdata > exx_lri
 
std::map< Conv_Coulomb_Pot_K::Coulomb_Method, std::pair< bool, std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > > > coulomb_settings
 

Static Private Attributes

static constexpr std::size_t Ndim = 3
 

Friends

class RPA_LRI< double, Tdata >
 
class RPA_LRI< std::complex< double >, Tdata >
 
class Exx_LRI_Interface< double, Tdata >
 
class Exx_LRI_Interface< std::complex< double >, Tdata >
 
class LR::ESolver_LR< double, double >
 
class LR::ESolver_LR< std::complex< double >, double >
 
class LR::OperatorLREXX< double >
 
class LR::OperatorLREXX< std::complex< double > >
 

Member Typedef Documentation

◆ TA

template<typename Tdata >
using Exx_LRI< Tdata >::TA = int
private

◆ TAC

template<typename Tdata >
using Exx_LRI< Tdata >::TAC = std::pair<TA,TC>
private

◆ TatomR

template<typename Tdata >
using Exx_LRI< Tdata >::TatomR = std::array<double,Ndim>
private

◆ TC

template<typename Tdata >
using Exx_LRI< Tdata >::TC = std::array<Tcell,Ndim>
private

◆ Tcell

template<typename Tdata >
using Exx_LRI< Tdata >::Tcell = int
private

Constructor & Destructor Documentation

◆ Exx_LRI()

template<typename Tdata >
Exx_LRI< Tdata >::Exx_LRI ( const Exx_Info::Exx_Info_RI info_in)
inline

Member Function Documentation

◆ cal_exx_elec()

template<typename Tdata >
void Exx_LRI< Tdata >::cal_exx_elec ( const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > &  Ds,
const UnitCell ucell,
const Parallel_Orbitals pv,
const ModuleSymmetry::Symmetry_rotation p_symrot = nullptr 
)
Here is the call graph for this function:

◆ cal_exx_force()

template<typename Tdata >
void Exx_LRI< Tdata >::cal_exx_force ( const int &  nat)
Here is the call graph for this function:

◆ cal_exx_ions()

template<typename Tdata >
void Exx_LRI< Tdata >::cal_exx_ions ( const UnitCell ucell,
const bool  write_cv = false 
)
Here is the call graph for this function:

◆ cal_exx_stress()

template<typename Tdata >
void Exx_LRI< Tdata >::cal_exx_stress ( const double &  omega,
const double &  lat0 
)
Here is the call graph for this function:

◆ init()

template<typename Tdata >
void Exx_LRI< Tdata >::init ( const MPI_Comm &  mpi_comm_in,
const UnitCell ucell,
const K_Vectors kv_in,
const LCAO_Orbitals orb 
)
Here is the call graph for this function:

◆ operator=() [1/2]

template<typename Tdata >
Exx_LRI Exx_LRI< Tdata >::operator= ( const Exx_LRI< Tdata > &  )
delete

◆ operator=() [2/2]

template<typename Tdata >
Exx_LRI Exx_LRI< Tdata >::operator= ( Exx_LRI< Tdata > &&  )

◆ post_process_Eexx()

template<typename Tdata >
double Exx_LRI< Tdata >::post_process_Eexx ( const double &  Eexx_in) const
private
Here is the call graph for this function:

◆ post_process_Hexx()

template<typename Tdata >
void Exx_LRI< Tdata >::post_process_Hexx ( std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Hexxs_io) const
private
Here is the call graph for this function:

◆ reset_Cs()

template<typename Tdata >
void Exx_LRI< Tdata >::reset_Cs ( const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Cs_in)
inline

◆ reset_Vs()

template<typename Tdata >
void Exx_LRI< Tdata >::reset_Vs ( const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Vs_in)
inline

Friends And Related Symbol Documentation

◆ Exx_LRI_Interface< double, Tdata >

template<typename Tdata >
friend class Exx_LRI_Interface< double, Tdata >
friend

◆ Exx_LRI_Interface< std::complex< double >, Tdata >

template<typename Tdata >
friend class Exx_LRI_Interface< std::complex< double >, Tdata >
friend

◆ LR::ESolver_LR< double, double >

template<typename Tdata >
friend class LR::ESolver_LR< double, double >
friend

◆ LR::ESolver_LR< std::complex< double >, double >

template<typename Tdata >
friend class LR::ESolver_LR< std::complex< double >, double >
friend

◆ LR::OperatorLREXX< double >

template<typename Tdata >
friend class LR::OperatorLREXX< double >
friend

◆ LR::OperatorLREXX< std::complex< double > >

template<typename Tdata >
friend class LR::OperatorLREXX< std::complex< double > >
friend

◆ RPA_LRI< double, Tdata >

template<typename Tdata >
friend class RPA_LRI< double, Tdata >
friend

◆ RPA_LRI< std::complex< double >, Tdata >

template<typename Tdata >
friend class RPA_LRI< std::complex< double >, Tdata >
friend

Member Data Documentation

◆ abfs

template<typename Tdata >
std::vector<std::vector<std::vector<Numerical_Orbital_Lm> > > Exx_LRI< Tdata >::abfs
private

◆ coulomb_settings

template<typename Tdata >
std::map<Conv_Coulomb_Pot_K::Coulomb_Method, std::pair<bool, std::map<Conv_Coulomb_Pot_K::Coulomb_Type, std::vector<std::map<std::string,std::string> > > > > Exx_LRI< Tdata >::coulomb_settings
private

◆ Eexx

template<typename Tdata >
double Exx_LRI< Tdata >::Eexx

◆ exx_lri

template<typename Tdata >
RI::Exx<TA,Tcell,Ndim,Tdata> Exx_LRI< Tdata >::exx_lri
private

◆ exx_objs

template<typename Tdata >
std::map<Conv_Coulomb_Pot_K::Coulomb_Method, Exx_Obj<Tdata> > Exx_LRI< Tdata >::exx_objs
private

◆ force_exx

template<typename Tdata >
ModuleBase::matrix Exx_LRI< Tdata >::force_exx

◆ Hexxs

template<typename Tdata >
std::vector< std::map<TA, std::map<TAC, RI::Tensor<Tdata> > > > Exx_LRI< Tdata >::Hexxs

◆ info

template<typename Tdata >
const Exx_Info::Exx_Info_RI& Exx_LRI< Tdata >::info
private

◆ lcaos

template<typename Tdata >
std::vector<std::vector<std::vector<Numerical_Orbital_Lm> > > Exx_LRI< Tdata >::lcaos
private

◆ MGT

template<typename Tdata >
ORB_gaunt_table Exx_LRI< Tdata >::MGT
private

◆ mpi_comm

template<typename Tdata >
MPI_Comm Exx_LRI< Tdata >::mpi_comm
private

◆ Ndim

template<typename Tdata >
constexpr std::size_t Exx_LRI< Tdata >::Ndim = 3
staticconstexprprivate

◆ orb_cutoff_

template<typename Tdata >
std::vector<double> Exx_LRI< Tdata >::orb_cutoff_
private

◆ p_kv

template<typename Tdata >
const K_Vectors* Exx_LRI< Tdata >::p_kv = nullptr
private

◆ stress_exx

template<typename Tdata >
ModuleBase::matrix Exx_LRI< Tdata >::stress_exx

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