ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ModuleGint::PhiOperator Class Reference

The class phiOperator is used to perform operations on the wave function matrix phi, dphi, etc. More...

#include <phi_operator.h>

Collaboration diagram for ModuleGint::PhiOperator:

Public Types

enum class  Triangular_Matrix { Upper , Lower , Full }
 

Public Member Functions

 PhiOperator ()=default
 
void set_bgrid (std::shared_ptr< const BigGrid > biggrid)
 
int get_rows () const
 
int get_cols () const
 
template<typename T >
void set_phi (T *phi) const
 
void set_phi_dphi (double *phi, double *dphi_x, double *dphi_y, double *dphi_z) const
 
void set_ddphi (double *ddphi_xx, double *ddphi_xy, double *ddphi_xz, double *ddphi_yy, double *ddphi_yz, double *ddphi_zz) const
 
template<typename T >
void phi_mul_dm (const T *const phi, const HContainer< T > &dm, const bool is_symm, T *const phi_dm) const
 
template<typename T >
void phi_mul_vldr3 (const T *const vl, const T dr3, const T *const phi, T *const result) const
 
template<typename T >
void phi_mul_phi (const T *const phi_i, const T *const phi_j, HContainer< T > &hr, const Triangular_Matrix triangular_matrix) const
 
template<typename T >
void phi_dot_phi (const T *const phi_i, const T *const phi_j, T *const rho) const
 
void phi_dot_dphi (const double *phi, const double *dphi_x, const double *dphi_y, const double *dphi_z, ModuleBase::matrix *fvl) const
 
void phi_dot_dphi_r (const double *phi, const double *dphi_x, const double *dphi_y, const double *dphi_z, ModuleBase::matrix *svl) const
 
void cal_env_gamma (const double *phi, const double *wfc, const vector< int > &trace_lo, double *rho) const
 
void cal_env_k (const double *phi, const std::complex< double > *wfc, const vector< int > &trace_lo, const int ik, const int nspin, const int npol, const int lgd, const std::vector< Vec3d > &kvec_c, const std::vector< Vec3d > &kvec_d, double *rho) const
 

Private Member Functions

void init_atom_pair_start_end_idx_ ()
 
const std::pair< int, int > & get_atom_pair_start_end_idx_ (int a, int b) const
 
bool is_atom_on_mgrid (int atom_idx, int mgrid_idx) const
 

Private Attributes

int rows_
 
int cols_
 
std::vector< int > meshgrids_local_idx_
 
std::shared_ptr< const BigGridbiggrid_
 
std::vector< std::vector< Vec3d > > atoms_relative_coords_
 
std::vector< bool > is_atom_on_mgrid_
 
std::vector< int > atoms_startidx_
 
std::vector< int > atoms_phi_len_
 
std::vector< std::pair< int, int > > atom_pair_start_end_idx_
 

Detailed Description

The class phiOperator is used to perform operations on the wave function matrix phi, dphi, etc.

In fact, the variables and functions of this class could be placed in the BigGrid class, but the lifecycle of the BigGrid class is relatively long. We do not want the BigGrid to contain too many member variables, as this could lead to excessive memory usage. Therefore, we separate this class out, so it can be destroyed after use.

Member Enumeration Documentation

◆ Triangular_Matrix

Enumerator
Upper 
Lower 
Full 

Constructor & Destructor Documentation

◆ PhiOperator()

ModuleGint::PhiOperator::PhiOperator ( )
default

Member Function Documentation

◆ cal_env_gamma()

void ModuleGint::PhiOperator::cal_env_gamma ( const double *  phi,
const double *  wfc,
const vector< int > &  trace_lo,
double *  rho 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cal_env_k()

void ModuleGint::PhiOperator::cal_env_k ( const double *  phi,
const std::complex< double > *  wfc,
const vector< int > &  trace_lo,
const int  ik,
const int  nspin,
const int  npol,
const int  lgd,
const std::vector< Vec3d > &  kvec_c,
const std::vector< Vec3d > &  kvec_d,
double *  rho 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_atom_pair_start_end_idx_()

const std::pair< int, int > & ModuleGint::PhiOperator::get_atom_pair_start_end_idx_ ( int  a,
int  b 
) const
inlineprivate
Here is the caller graph for this function:

◆ get_cols()

int ModuleGint::PhiOperator::get_cols ( ) const
inline
Here is the caller graph for this function:

◆ get_rows()

int ModuleGint::PhiOperator::get_rows ( ) const
inline
Here is the caller graph for this function:

◆ init_atom_pair_start_end_idx_()

void ModuleGint::PhiOperator::init_atom_pair_start_end_idx_ ( )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_atom_on_mgrid()

bool ModuleGint::PhiOperator::is_atom_on_mgrid ( int  atom_idx,
int  mgrid_idx 
) const
inlineprivate
Here is the caller graph for this function:

◆ phi_dot_dphi()

void ModuleGint::PhiOperator::phi_dot_dphi ( const double *  phi,
const double *  dphi_x,
const double *  dphi_y,
const double *  dphi_z,
ModuleBase::matrix fvl 
) const
Here is the caller graph for this function:

◆ phi_dot_dphi_r()

void ModuleGint::PhiOperator::phi_dot_dphi_r ( const double *  phi,
const double *  dphi_x,
const double *  dphi_y,
const double *  dphi_z,
ModuleBase::matrix svl 
) const
Here is the caller graph for this function:

◆ phi_dot_phi()

template<typename T >
void ModuleGint::PhiOperator::phi_dot_phi ( const T *const  phi_i,
const T *const  phi_j,
T *const  rho 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ phi_mul_dm()

template<typename T >
void ModuleGint::PhiOperator::phi_mul_dm ( const T *const  phi,
const HContainer< T > &  dm,
const bool  is_symm,
T *const  phi_dm 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ phi_mul_phi()

template<typename T >
void ModuleGint::PhiOperator::phi_mul_phi ( const T *const  phi_i,
const T *const  phi_j,
HContainer< T > &  hr,
const Triangular_Matrix  triangular_matrix 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ phi_mul_vldr3()

template<typename T >
void ModuleGint::PhiOperator::phi_mul_vldr3 ( const T *const  vl,
const T  dr3,
const T *const  phi,
T *const  result 
) const
Here is the caller graph for this function:

◆ set_bgrid()

void ModuleGint::PhiOperator::set_bgrid ( std::shared_ptr< const BigGrid biggrid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_ddphi()

void ModuleGint::PhiOperator::set_ddphi ( double *  ddphi_xx,
double *  ddphi_xy,
double *  ddphi_xz,
double *  ddphi_yy,
double *  ddphi_yz,
double *  ddphi_zz 
) const
Here is the caller graph for this function:

◆ set_phi()

template<typename T >
void ModuleGint::PhiOperator::set_phi ( T phi) const
Here is the caller graph for this function:

◆ set_phi_dphi()

void ModuleGint::PhiOperator::set_phi_dphi ( double *  phi,
double *  dphi_x,
double *  dphi_y,
double *  dphi_z 
) const
Here is the caller graph for this function:

Member Data Documentation

◆ atom_pair_start_end_idx_

std::vector<std::pair<int, int> > ModuleGint::PhiOperator::atom_pair_start_end_idx_
private

◆ atoms_phi_len_

std::vector<int> ModuleGint::PhiOperator::atoms_phi_len_
private

◆ atoms_relative_coords_

std::vector<std::vector<Vec3d> > ModuleGint::PhiOperator::atoms_relative_coords_
private

◆ atoms_startidx_

std::vector<int> ModuleGint::PhiOperator::atoms_startidx_
private

◆ biggrid_

std::shared_ptr<const BigGrid> ModuleGint::PhiOperator::biggrid_
private

◆ cols_

int ModuleGint::PhiOperator::cols_
private

◆ is_atom_on_mgrid_

std::vector<bool> ModuleGint::PhiOperator::is_atom_on_mgrid_
private

◆ meshgrids_local_idx_

std::vector<int> ModuleGint::PhiOperator::meshgrids_local_idx_
private

◆ rows_

int ModuleGint::PhiOperator::rows_
private

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