ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | Private Types | List of all members
hamilt::FS_Kin_tools< FPTYPE, Device > Class Template Reference

#include <fs_kin_tools.h>

Collaboration diagram for hamilt::FS_Kin_tools< FPTYPE, Device >:

Public Member Functions

 FS_Kin_tools (const UnitCell &ucell_in, const K_Vectors *kv_in, const ModulePW::PW_Basis_K *wfc_basis_in, const ModuleBase::matrix &wg)
 
 ~FS_Kin_tools ()
 
void cal_gk (const int &ik)
 calculate G+k and store it in gk and also calculate kfac
 
void cal_stress_kin (const int &ik, const int &npm, const bool &occ, const std::complex< FPTYPE > *psi)
 calculate stress tensor for kinetic energy stress = \sum_{G,k,i} wk(k) * gk_l(G) * gk_m(G) * d_kfac(G) * occ_i*|ppsi_i(G)|^2
 
void symmetrize_stress (ModuleSymmetry::Symmetry *p_symm, ModuleBase::matrix &sigma)
 symmetrize the stress tensor
 

Protected Attributes

Device * ctx = {}
 
base_device::DEVICE_CPU * cpu_ctx = {}
 
base_device::AbacusDevice_t device = {}
 
std::vector< FPTYPE > gk3_
 
std::vector< FPTYPE * > gk
 
std::vector< FPTYPE > kfac
 
std::vector< FPTYPE > s_kin
 
FPTYPE * d_gk = nullptr
 
FPTYPE * d_kfac = nullptr
 
const FPTYPE * wg = nullptr
 
const FPTYPE * wk = nullptr
 
const ModulePW::PW_Basis_Kwfc_basis_ = nullptr
 
const UnitCellucell_
 
const int nksbands_
 

Private Types

using resmem_var_op = base_device::memory::resize_memory_op< FPTYPE, Device >
 
using setmem_var_op = base_device::memory::set_memory_op< FPTYPE, Device >
 
using delmem_var_op = base_device::memory::delete_memory_op< FPTYPE, Device >
 
using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op< FPTYPE, Device, base_device::DEVICE_CPU >
 
using syncmem_var_d2h_op = base_device::memory::synchronize_memory_op< FPTYPE, base_device::DEVICE_CPU, Device >
 
using cal_multi_dot_op = hamilt::cal_multi_dot_op< FPTYPE, Device >
 

Member Typedef Documentation

◆ cal_multi_dot_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::cal_multi_dot_op = hamilt::cal_multi_dot_op<FPTYPE, Device>
private

◆ delmem_var_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::delmem_var_op = base_device::memory::delete_memory_op<FPTYPE, Device>
private

◆ resmem_var_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::resmem_var_op = base_device::memory::resize_memory_op<FPTYPE, Device>
private

◆ setmem_var_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::setmem_var_op = base_device::memory::set_memory_op<FPTYPE, Device>
private

◆ syncmem_var_d2h_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::syncmem_var_d2h_op = base_device::memory::synchronize_memory_op<FPTYPE, base_device::DEVICE_CPU, Device>
private

◆ syncmem_var_h2d_op

template<typename FPTYPE , typename Device >
using hamilt::FS_Kin_tools< FPTYPE, Device >::syncmem_var_h2d_op = base_device::memory::synchronize_memory_op<FPTYPE, Device, base_device::DEVICE_CPU>
private

Constructor & Destructor Documentation

◆ FS_Kin_tools()

template<typename FPTYPE , typename Device >
hamilt::FS_Kin_tools< FPTYPE, Device >::FS_Kin_tools ( const UnitCell ucell_in,
const K_Vectors kv_in,
const ModulePW::PW_Basis_K wfc_basis_in,
const ModuleBase::matrix wg 
)
Here is the call graph for this function:

◆ ~FS_Kin_tools()

template<typename FPTYPE , typename Device >
hamilt::FS_Kin_tools< FPTYPE, Device >::~FS_Kin_tools ( )

Member Function Documentation

◆ cal_gk()

template<typename FPTYPE , typename Device >
void hamilt::FS_Kin_tools< FPTYPE, Device >::cal_gk ( const int &  ik)

calculate G+k and store it in gk and also calculate kfac

Here is the caller graph for this function:

◆ cal_stress_kin()

template<typename FPTYPE , typename Device >
void hamilt::FS_Kin_tools< FPTYPE, Device >::cal_stress_kin ( const int &  ik,
const int &  npm,
const bool &  occ,
const std::complex< FPTYPE > *  psi 
)

calculate stress tensor for kinetic energy stress = \sum_{G,k,i} wk(k) * gk_l(G) * gk_m(G) * d_kfac(G) * occ_i*|ppsi_i(G)|^2

Parameters
ikk-point index
npmnumber of bands
occif use the occupation of the bands
psiwavefunctions
Here is the caller graph for this function:

◆ symmetrize_stress()

template<typename FPTYPE , typename Device >
void hamilt::FS_Kin_tools< FPTYPE, Device >::symmetrize_stress ( ModuleSymmetry::Symmetry p_symm,
ModuleBase::matrix sigma 
)

symmetrize the stress tensor

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

Member Data Documentation

◆ cpu_ctx

template<typename FPTYPE , typename Device >
base_device::DEVICE_CPU* hamilt::FS_Kin_tools< FPTYPE, Device >::cpu_ctx = {}
protected

◆ ctx

template<typename FPTYPE , typename Device >
Device* hamilt::FS_Kin_tools< FPTYPE, Device >::ctx = {}
protected

◆ d_gk

template<typename FPTYPE , typename Device >
FPTYPE* hamilt::FS_Kin_tools< FPTYPE, Device >::d_gk = nullptr
protected

◆ d_kfac

template<typename FPTYPE , typename Device >
FPTYPE* hamilt::FS_Kin_tools< FPTYPE, Device >::d_kfac = nullptr
protected

◆ device

template<typename FPTYPE , typename Device >
base_device::AbacusDevice_t hamilt::FS_Kin_tools< FPTYPE, Device >::device = {}
protected

◆ gk

template<typename FPTYPE , typename Device >
std::vector<FPTYPE*> hamilt::FS_Kin_tools< FPTYPE, Device >::gk
protected

◆ gk3_

template<typename FPTYPE , typename Device >
std::vector<FPTYPE> hamilt::FS_Kin_tools< FPTYPE, Device >::gk3_
protected

◆ kfac

template<typename FPTYPE , typename Device >
std::vector<FPTYPE> hamilt::FS_Kin_tools< FPTYPE, Device >::kfac
protected

◆ nksbands_

template<typename FPTYPE , typename Device >
const int hamilt::FS_Kin_tools< FPTYPE, Device >::nksbands_
protected

◆ s_kin

template<typename FPTYPE , typename Device >
std::vector<FPTYPE> hamilt::FS_Kin_tools< FPTYPE, Device >::s_kin
protected

◆ ucell_

template<typename FPTYPE , typename Device >
const UnitCell& hamilt::FS_Kin_tools< FPTYPE, Device >::ucell_
protected

◆ wfc_basis_

template<typename FPTYPE , typename Device >
const ModulePW::PW_Basis_K* hamilt::FS_Kin_tools< FPTYPE, Device >::wfc_basis_ = nullptr
protected

◆ wg

template<typename FPTYPE , typename Device >
const FPTYPE* hamilt::FS_Kin_tools< FPTYPE, Device >::wg = nullptr
protected

◆ wk

template<typename FPTYPE , typename Device >
const FPTYPE* hamilt::FS_Kin_tools< FPTYPE, Device >::wk = nullptr
protected

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