ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <gint.h>
Public Types | |
using | T_psir_func = std::function< const ModuleBase::Array_Pool< double > &(const ModuleBase::Array_Pool< double > &psir_ylm, const Grid_Technique >, const int grid_index, const int is, const std::vector< int > &block_iw, const std::vector< int > &block_size, const std::vector< int > &block_index, const ModuleBase::Array_Pool< bool > &cal_flag)> |
Public Member Functions | |
~Gint () | |
Gint & | operator= (Gint &&rhs) |
move operator for the next ESolver to directly use its infomation | |
hamilt::HContainer< double > * | get_hRGint () const |
std::vector< hamilt::HContainer< double > * > | get_DMRGint () const |
int | get_ncxyz () const |
void | cal_gint (Gint_inout *inout) |
the unified interface to grid integration | |
void | prep_grid (const Grid_Technique >, const int &nbx_in, const int &nby_in, const int &nbz_in, const int &nbz_start_in, const int &ncxyz_in, const int &bx_in, const int &by_in, const int &bz_in, const int &bxyz_in, const int &nbxx_in, const int &ny_in, const int &nplane_in, const int &startz_current_in, const UnitCell *ucell_in, const LCAO_Orbitals *orb_in) |
preparing FFT grid | |
void | initialize_pvpR (const UnitCell &unitcell, const Grid_Driver *gd, const int &nspin) |
calculate the neighbor atoms of each atom in this processor size of BaseMatrix with be the non-parallel version | |
void | reset_DMRGint (const int &nspin) |
resize DMRGint to nspin and reallocate the memory | |
void | transfer_DM2DtoGrid (std::vector< hamilt::HContainer< double > * > DM2D) |
transfer DMR (2D para) to DMR (Grid para) in elecstate_lcao.cpp | |
Public Attributes | |
const Grid_Technique * | gridt = nullptr |
const UnitCell * | ucell |
T_psir_func | psir_func_1 = nullptr |
T_psir_func | psir_func_2 = nullptr |
Protected Member Functions | |
void | gpu_vlocal_interface (Gint_inout *inout) |
in cal_gint_gpu.cpp | |
void | gpu_rho_interface (Gint_inout *inout) |
void | gpu_force_interface (Gint_inout *inout) |
void | gint_kernel_vlocal (Gint_inout *inout) |
in cal_gint_cpu.cpp | |
void | gint_kernel_dvlocal (Gint_inout *inout) |
calculate H_mu_nu(local)=<phi_0|vlocal|dphi_R> | |
void | gint_kernel_vlocal_meta (Gint_inout *inout) |
calculate vlocal in meta-GGA functionals | |
void | gint_kernel_rho (Gint_inout *inout) |
calculate charge density rho(r)=\int D_munu \phi_mu \phi_nu | |
void | gint_kernel_tau (Gint_inout *inout) |
used in meta-GGA functional | |
void | gint_kernel_force (Gint_inout *inout) |
compute forces | |
void | gint_kernel_force_meta (Gint_inout *inout) |
compute forces related to meta-GGA functionals | |
void | cal_meshball_vlocal (const int na_grid, const int LD_pool, const int *const block_size, const int *const block_index, const int grid_index, const bool *const *const cal_flag, const double *const *const psir_ylm, const double *const *const psir_vlbr3, hamilt::HContainer< double > *hR) |
void | gint_kernel_force (const int na_grid, const int grid_index, const double delta_r, double *vldr3, const int is, const bool isforce, const bool isstress, ModuleBase::matrix *fvl_dphi, ModuleBase::matrix *svl_dphi, const UnitCell &ucell) |
void | gint_kernel_force_meta (const int na_grid, const int grid_index, const double delta_r, double *vldr3, double *vkdr3, const int is, const bool isforce, const bool isstress, ModuleBase::matrix *fvl_dphi, ModuleBase::matrix *svl_dphi, const UnitCell &ucell) |
void | cal_meshball_force (const int grid_index, const int na_grid, const int *const block_size, const int *const block_index, const double *const *const psir_vlbr3_DMR, const double *const *const dpsir_x, const double *const *const dpsir_y, const double *const *const dpsir_z, ModuleBase::matrix *force) |
void | cal_meshball_stress (const int na_grid, const int *const block_index, const double *const psir_vlbr3_DMR, const double *const dpsirr, ModuleBase::matrix *stress) |
void | gint_kernel_rho (const int na_grid, const int grid_index, const double delta_r, int *vindex, const int LD_pool, const UnitCell &ucell, Gint_inout *inout) |
void | cal_meshball_rho (const int na_grid, const int *const block_index, const int *const vindex, const double *const *const psir_ylm, const double *const *const psir_DMR, double *const rho) |
Use grid integrals to compute charge density in a meshball. | |
void | gint_kernel_tau (const int na_grid, const int grid_index, const double delta_r, int *vindex, const int LD_pool, Gint_inout *inout, const UnitCell &ucell) |
Use grid integrals to compute kinetic energy density tau. | |
void | cal_meshball_tau (const int na_grid, int *block_index, int *vindex, double **dpsix, double **dpsiy, double **dpsiz, double **dpsix_dm, double **dpsiy_dm, double **dpsiz_dm, double *rho) |
Use grid integrals to compute kinetic energy density tau. | |
Protected Attributes | |
int | nbx |
variables related to FFT grid | |
int | nby |
int | nbz |
int | ncxyz |
int | nbz_start |
int | bx |
int | by |
int | bz |
int | bxyz |
int | nbxx |
int | ny |
int | nplane |
int | startz_current |
hamilt::HContainer< double > * | hRGint = nullptr |
std::vector< hamilt::HContainer< double > * > | hRGint_tmp |
size of vec is 4, only used when nspin = 4 | |
hamilt::HContainer< std::complex< double > > * | hRGintCd = nullptr |
stores Hamiltonian in sparse format | |
std::vector< hamilt::HContainer< double > * > | DMRGint |
stores DMR in sparse format | |
hamilt::HContainer< double > * | DMRGint_full = nullptr |
tmp tools used in transfer_DM2DtoGrid | |
std::vector< hamilt::HContainer< double > > | pvdpRx_reduced |
std::vector< hamilt::HContainer< double > > | pvdpRy_reduced |
std::vector< hamilt::HContainer< double > > | pvdpRz_reduced |
namely Gint_Gamma and Gint_k, which contain specific operations for gamma point/multi-k calculations
using Gint::T_psir_func = std::function< const ModuleBase::Array_Pool<double>&( const ModuleBase::Array_Pool<double> &psir_ylm, const Grid_Technique >, const int grid_index, const int is, const std::vector<int> &block_iw, const std::vector<int> &block_size, const std::vector<int> &block_index, const ModuleBase::Array_Pool<bool> &cal_flag)> |
Gint::~Gint | ( | ) |
void Gint::cal_gint | ( | Gint_inout * | inout | ) |
the unified interface to grid integration
|
protected |
Use grid integrals to compute the atomic force contributions na_grid: how many atoms on this (i,j,k) grid block_size: dim is [na_grid], number of columns of a band block_index: dim is [na_grid+1], total number of atomis orbitals psir_vlbr3_DMR: dim is [bxyz][LD_pool] dpsir_x: dim is [bxyz][LD_pool] dpsir_y: dim is [bxyz][LD_pool] dpsir_z: dim is [bxyz][LD_pool]
|
protected |
Use grid integrals to compute charge density in a meshball.
|
protected |
Use grid integrals to compute the stress contributions na_grid: how many atoms on this (i,j,k) grid block_index: dim is [na_grid+1], total number of atomis orbitals
|
protected |
Use grid integrals to compute kinetic energy density tau.
|
protected |
calculate local potential contribution to the Hamiltonian na_grid: how many atoms on this (i,j,k) grid block_size: dim is [block_size], number of columns of a band block_index: dim is [na_grid+1], total number of atomic orbitals grid_index: index of grid group, for tracing iat cal_flag: dim is [bxyz][na_grid], whether the atom-grid distance is larger than cutoff psir_ylm: dim is [bxyz][LD_pool] psir_vlbr3: dim is [bxyz][LD_pool] hR: HContainer for storing the <phi_0|V|phi_R> matrix elements cal_meshball_vlocal is thread-safe!
|
inline |
|
inline |
|
inline |
|
protected |
calculate H_mu_nu(local)=<phi_0|vlocal|dphi_R>
|
protected |
in gint_fvl.cpp calculate vl contributuion to force & stress via grid integrals
|
protected |
compute forces
|
protected |
in gint_fvl.cpp calculate vl contributuion to force & stress via grid integrals used in meta-GGA calculations
|
protected |
compute forces related to meta-GGA functionals
|
protected |
Use grid integrals to compute charge density in gint_k_rho.cpp calculate the charge density & kinetic energy density (tau) via grid integrals
|
protected |
calculate charge density rho(r)=\int D_munu \phi_mu \phi_nu
|
protected |
Use grid integrals to compute kinetic energy density tau.
|
protected |
used in meta-GGA functional
|
protected |
in cal_gint_cpu.cpp
When in OpenMP, it points to a newly allocated memory,
Prepare block information
Evaluate psi and dpsi on grids
|
protected |
calculate vlocal in meta-GGA functionals
|
protected |
|
protected |
|
protected |
in cal_gint_gpu.cpp
void Gint::initialize_pvpR | ( | const UnitCell & | unitcell, |
const Grid_Driver * | gd, | ||
const int & | nspin | ||
) |
calculate the neighbor atoms of each atom in this processor size of BaseMatrix with be the non-parallel version
move operator for the next ESolver to directly use its infomation
void Gint::prep_grid | ( | const Grid_Technique & | gt, |
const int & | nbx_in, | ||
const int & | nby_in, | ||
const int & | nbz_in, | ||
const int & | nbz_start_in, | ||
const int & | ncxyz_in, | ||
const int & | bx_in, | ||
const int & | by_in, | ||
const int & | bz_in, | ||
const int & | bxyz_in, | ||
const int & | nbxx_in, | ||
const int & | ny_in, | ||
const int & | nplane_in, | ||
const int & | startz_current_in, | ||
const UnitCell * | ucell_in, | ||
const LCAO_Orbitals * | orb_in | ||
) |
preparing FFT grid
void Gint::reset_DMRGint | ( | const int & | nspin | ) |
resize DMRGint to nspin and reallocate the memory
void Gint::transfer_DM2DtoGrid | ( | std::vector< hamilt::HContainer< double > * > | DM2D | ) |
transfer DMR (2D para) to DMR (Grid para) in elecstate_lcao.cpp
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
stores DMR in sparse format
|
protected |
tmp tools used in transfer_DM2DtoGrid
const Grid_Technique* Gint::gridt = nullptr |
|
protected |
save the < phi_0i | V | phi_Rj > in sparse H matrix. stores Hamiltonian in sparse format
|
protected |
size of vec is 4, only used when nspin = 4
|
protected |
stores Hamiltonian in sparse format
|
protected |
variables related to FFT grid
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
T_psir_func Gint::psir_func_1 = nullptr |
T_psir_func Gint::psir_func_2 = nullptr |
|
protected |
|
protected |
|
protected |
|
protected |
const UnitCell* Gint::ucell |