ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
OF_Stress_PW Class Reference

#include <of_stress_pw.h>

Inheritance diagram for OF_Stress_PW:
Collaboration diagram for OF_Stress_PW:

Public Member Functions

 OF_Stress_PW (const elecstate::ElecState *pelec_in, ModulePW::PW_Basis *rhopw_in)
 
void cal_stress (ModuleBase::matrix &sigmatot, ModuleBase::matrix &kinetic_stress, UnitCell &ucell, ModuleSymmetry::Symmetry *p_symm, const pseudopot_cell_vl &locpp, Structure_Factor *p_sf, K_Vectors *p_kv)
 
- Public Member Functions inherited from Stress_Func< double >
 Stress_Func ()
 
 ~Stress_Func ()
 
void stress_kin (ModuleBase::matrix &sigma, const ModuleBase::matrix &wg, ModuleSymmetry::Symmetry *p_symm, K_Vectors *p_kv, ModulePW::PW_Basis_K *wfc_basis, const UnitCell &ucell_in, const psi::Psi< std::complex< double >, base_device::DEVICE_CPU > *psi_in=nullptr)
 
void stress_har (const UnitCell &ucell, ModuleBase::matrix &sigma, ModulePW::PW_Basis *rho_basis, const bool is_pw, const Charge *const chr)
 
void stress_ewa (const UnitCell &ucell, ModuleBase::matrix &sigma, ModulePW::PW_Basis *rho_basis, const bool is_pw)
 
void stress_loc (const UnitCell &ucell, ModuleBase::matrix &sigma, ModulePW::PW_Basis *rho_basis, const ModuleBase::matrix &vloc, const Structure_Factor *p_sf, const bool is_pw, const Charge *const chr)
 
void dvloc_of_g (const int &msh, const double *rab, const double *r, const double *vloc_at, const double &zp, double *dvloc, ModulePW::PW_Basis *rho_basis, const UnitCell &ucell_in)
 
void dvloc_coulomb (const UnitCell &ucell, const double &zp, double *dvloc, ModulePW::PW_Basis *rho_basis)
 compute the derivative of the coulomb potential in reciprocal space D V(g^2) / D g^2 = 4pi e^2/omegai /G^4
 
void stress_cc (ModuleBase::matrix &sigma, ModulePW::PW_Basis *rho_basis, UnitCell &ucell, const Structure_Factor *p_sf, const bool is_pw, const bool *numeric, const Charge *const chr)
 
void deriv_drhoc (const bool &numeric, const double &omega, const double &tpiba2, const int mesh, const double *r, const double *rab, const double *rhoc, double *drhocg, ModulePW::PW_Basis *rho_basis, int type)
 
void stress_gga (const UnitCell &ucell, ModuleBase::matrix &sigma, ModulePW::PW_Basis *rho_basis, const Charge *const chr)
 
void stress_mgga (const UnitCell &ucell, ModuleBase::matrix &sigma, const ModuleBase::matrix &wg, const ModuleBase::matrix &v_ofk, const Charge *const chr, K_Vectors *p_kv, ModulePW::PW_Basis_K *wfc_basis, const psi::Psi< std::complex< double >, base_device::DEVICE_CPU > *psi_in)
 
void stress_nl (ModuleBase::matrix &sigma, const ModuleBase::matrix &wg, const ModuleBase::matrix &ekb, Structure_Factor *p_sf, K_Vectors *p_kv, ModuleSymmetry::Symmetry *p_symm, ModulePW::PW_Basis_K *wfc_basis, const psi::Psi< std::complex< double >, base_device::DEVICE_CPU > *psi_in, const pseudopot_cell_vnl &nlpp_in, const UnitCell &ucell_in)
 This routine computes the atomic force of non-local pseudopotential Stress^{NL}_{ij} = -1/\Omega \sum_{n,k}f_{nk}\sum_I \sum_{lm,l'm'}D_{l,l'}^{I} [ \sum_G \langle c_{nk}(\mathbf{G+K})|\beta_{lm}^I(\mathbf{G+K})\rangle * \sum_{G'}\langle \partial \beta_{lm}^I(\mathbf{G+K})/\partial \varepsilon_{ij} |c_{nk}(\mathbf{G+K})\rangle ] there would be three parts in the above equation: (1) sum over becp and dbecp with D_{l,l'}^{I} --— first line in the above equation (2) calculate becp = <psi | beta> --— second line in the above equation (3) calculate dbecp = <psi | dbeta> --— third line in the above equation.
 
void stress_onsite (ModuleBase::matrix &sigma, const ModuleBase::matrix &wg, const ModulePW::PW_Basis_K *wfc_basis, const UnitCell &ucell_in, const psi::Psi< std::complex< double >, base_device::DEVICE_CPU > *psi_in, ModuleSymmetry::Symmetry *p_symm)
 This routine computes the stress contribution from the DFT+U and DeltaSpin calculations Stress^{NL}_{ij} = -1/\Omega \sum_{n,k}f_{nk}\sum_I \sum_{lm,l'm'}(V^U_{lmm'\sigma\sigma'} + f(\lambda,\sigma\sigma')) [ \sum_G \langle c_{nk}(\mathbf{G+K})|\alpha_{lm}^I(\mathbf{G+K})\rangle * \sum_{G'}\langle \partial \alpha_{lm}^I(\mathbf{G+K})/\partial \varepsilon_{ij} |c_{nk}(\mathbf{G+K})\rangle ] there would be three parts in the above equation: (1) sum over becp and dbecp with f(U+\lambda, \sigma\sigma', lmm')^{I} --— first line in the above equation (2) calculate becp = <psi | alpha> --— second line in the above equation (3) calculate dbecp = <psi | dalpha> --— third line in the above equation.
 
void get_dvnl1 (ModuleBase::ComplexMatrix &vkb, const int ik, const int ipol, Structure_Factor *p_sf, ModulePW::PW_Basis_K *wfc_basis)
 
void get_dvnl2 (ModuleBase::ComplexMatrix &vkb, const int ik, Structure_Factor *p_sf, ModulePW::PW_Basis_K *wfc_basis)
 
double Polynomial_Interpolation_nl (const ModuleBase::realArray &table, const int &dim1, const int &dim2, const int &dim3, const double &table_interval, const double &x)
 
void dqvan2 (const pseudopot_cell_vnl &ppcell_in, const int ih, const int jh, const int itype, const int ipol, const int ng, const ModuleBase::Vector3< double > *g, const double *qnorm, const double &tpiba, const ModuleBase::matrix &ylmk0, const ModuleBase::matrix &dylmk0, std::complex< double > *dqg)
 Compute the derivatives of the radial Fourier transform of the Q functions.
 

Protected Member Functions

void stress_vdw (ModuleBase::matrix &smearing_sigma, UnitCell &ucell)
 

Protected Attributes

const elecstate::ElecStatepelec = nullptr
 
ModulePW::PW_Basisrhopw = nullptr
 
- Protected Attributes inherited from Stress_Func< double >
base_device::DEVICE_CPU * ctx
 
base_device::DEVICE_CPU * cpu_ctx
 
base_device::AbacusDevice_t device
 
pseudopot_cell_vnlnlpp
 
const UnitCellucell
 

Constructor & Destructor Documentation

◆ OF_Stress_PW()

OF_Stress_PW::OF_Stress_PW ( const elecstate::ElecState pelec_in,
ModulePW::PW_Basis rhopw_in 
)
inline

Member Function Documentation

◆ cal_stress()

void OF_Stress_PW::cal_stress ( ModuleBase::matrix sigmatot,
ModuleBase::matrix kinetic_stress,
UnitCell ucell,
ModuleSymmetry::Symmetry p_symm,
const pseudopot_cell_vl locpp,
Structure_Factor p_sf,
K_Vectors p_kv 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ stress_vdw()

void OF_Stress_PW::stress_vdw ( ModuleBase::matrix smearing_sigma,
UnitCell ucell 
)
protected
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ pelec

const elecstate::ElecState* OF_Stress_PW::pelec = nullptr
protected

◆ rhopw

ModulePW::PW_Basis* OF_Stress_PW::rhopw = nullptr
protected

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