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

#include <sto_forces.h>

Inheritance diagram for Sto_Forces< FPTYPE, Device >:
Collaboration diagram for Sto_Forces< FPTYPE, Device >:

Public Member Functions

 Sto_Forces (const int nat_in)
 
 ~Sto_Forces ()
 
void cal_stoforce (ModuleBase::matrix &force, const elecstate::ElecState &elec, ModulePW::PW_Basis *rho_basis, ModuleSymmetry::Symmetry *p_symm, const Structure_Factor *p_sf, K_Vectors *pkv, ModulePW::PW_Basis_K *wfc_basis, const pseudopot_cell_vl &locpp, const pseudopot_cell_vnl &nlpp, UnitCell &ucell, const psi::Psi< std::complex< FPTYPE >, Device > &psi_in, const Stochastic_WF< std::complex< FPTYPE >, Device > &stowf)
 
- Public Member Functions inherited from Forces< FPTYPE, Device >
 Forces (const int nat_in)
 
 ~Forces ()
 
void cal_force (UnitCell &ucell, ModuleBase::matrix &force, const elecstate::ElecState &elec, const ModulePW::PW_Basis *const rho_basis, ModuleSymmetry::Symmetry *p_symm, Structure_Factor *p_sf, surchem &solvent, const pseudopot_cell_vl *locpp, const pseudopot_cell_vnl *nlpp=nullptr, K_Vectors *pkv=nullptr, ModulePW::PW_Basis_K *psi_basis=nullptr, const psi::Psi< std::complex< FPTYPE >, Device > *psi_in=nullptr)
 

Private Types

using resmem_var_op = base_device::memory::resize_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 >
 

Private Member Functions

void cal_sto_force_nl (ModuleBase::matrix &forcenl, const ModuleBase::matrix &wg, K_Vectors *p_kv, ModulePW::PW_Basis_K *wfc_basis, const Structure_Factor *p_sf, const pseudopot_cell_vnl &nlpp, const UnitCell &ucell, const psi::Psi< std::complex< FPTYPE >, Device > &psi_in, const Stochastic_WF< std::complex< FPTYPE >, Device > &stowf)
 

Additional Inherited Members

- Protected Member Functions inherited from Forces< FPTYPE, Device >
void cal_force_loc (const UnitCell &ucell, ModuleBase::matrix &forcelc, const ModulePW::PW_Basis *const rho_basis, const ModuleBase::matrix &vloc, const Charge *const chr)
 
void cal_force_ew (const UnitCell &ucell, ModuleBase::matrix &forceion, const ModulePW::PW_Basis *const rho_basis, const Structure_Factor *p_sf)
 
void cal_force_cc (ModuleBase::matrix &forcecc, const ModulePW::PW_Basis *const rho_basis, const Charge *const chr, const bool *numeric, UnitCell &ucell_in)
 
void cal_force_nl (ModuleBase::matrix &forcenl, const ModuleBase::matrix &wg, const ModuleBase::matrix &ekb, const K_Vectors *p_kv, const ModulePW::PW_Basis_K *psi_basis, const Structure_Factor *p_sf, const pseudopot_cell_vnl &nlpp_in, const UnitCell &ucell_in, const psi::Psi< std::complex< FPTYPE >, Device > *psi_in=nullptr)
 This routine computes the atomic force of non-local pseudopotential F^{NL}_i = \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 \beta_{lm}^I(\mathbf{G+K})*(-j)^l(\mathbf{G+K})_i |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 | \nabla beta> --— third line in the above equation.
 
void cal_force_onsite (ModuleBase::matrix &force_onsite, const ModuleBase::matrix &wg, const ModulePW::PW_Basis_K *wfc_basis, const UnitCell &ucell_in, const psi::Psi< std::complex< FPTYPE >, Device > *psi_in=nullptr)
 atomic force for DFT+U and DeltaSpin
 
void cal_force_scc (ModuleBase::matrix &forcescc, const ModulePW::PW_Basis *const rho_basis, const ModuleBase::matrix &v_current, const bool vnew_exist, const bool *numeric, const UnitCell &ucell_in)
 
void cal_force_us (ModuleBase::matrix &forcenl, const ModulePW::PW_Basis *const rho_basis, const pseudopot_cell_vnl &ppcell_in, const elecstate::ElecState &elec, const UnitCell &ucell)
 
void cal_ylm (int lmax, int npw, const FPTYPE *gk_in, FPTYPE *ylm)
 
void deriv_drhoc (const bool &numeric, const int mesh, const FPTYPE *r, const FPTYPE *rab, const FPTYPE *rhoc, FPTYPE *drhocg, const ModulePW::PW_Basis *const rho_basis, int type, const UnitCell &ucell_in)
 
void deriv_drhoc_scc (const bool &numeric, const int mesh, const FPTYPE *r, const FPTYPE *rab, const FPTYPE *rhoc, FPTYPE *drhocg, const ModulePW::PW_Basis *const rho_basis, const UnitCell &ucell_in)
 
- Protected Attributes inherited from Forces< FPTYPE, Device >
int nat = 0
 
int npwx = 0
 
Device * ctx = {}
 
base_device::DEVICE_CPU * cpu_ctx = {}
 
base_device::AbacusDevice_t device = {}
 

Member Typedef Documentation

◆ delmem_var_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using Sto_Forces< FPTYPE, Device >::delmem_var_op = base_device::memory::delete_memory_op<FPTYPE, Device>
private

◆ resmem_var_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using Sto_Forces< FPTYPE, Device >::resmem_var_op = base_device::memory::resize_memory_op<FPTYPE, Device>
private

◆ syncmem_var_d2h_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using Sto_Forces< 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 = base_device::DEVICE_CPU>
using Sto_Forces< FPTYPE, Device >::syncmem_var_h2d_op = base_device::memory::synchronize_memory_op<FPTYPE, Device, base_device::DEVICE_CPU>
private

Constructor & Destructor Documentation

◆ Sto_Forces()

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
Sto_Forces< FPTYPE, Device >::Sto_Forces ( const int  nat_in)
inline

◆ ~Sto_Forces()

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
Sto_Forces< FPTYPE, Device >::~Sto_Forces ( )
inline

Member Function Documentation

◆ cal_sto_force_nl()

template<typename FPTYPE , typename Device >
void Sto_Forces< FPTYPE, Device >::cal_sto_force_nl ( ModuleBase::matrix forcenl,
const ModuleBase::matrix wg,
K_Vectors p_kv,
ModulePW::PW_Basis_K wfc_basis,
const Structure_Factor p_sf,
const pseudopot_cell_vnl nlpp,
const UnitCell ucell,
const psi::Psi< std::complex< FPTYPE >, Device > &  psi_in,
const Stochastic_WF< std::complex< FPTYPE >, Device > &  stowf 
)
private
Here is the call graph for this function:

◆ cal_stoforce()

template<typename FPTYPE , typename Device >
void Sto_Forces< FPTYPE, Device >::cal_stoforce ( ModuleBase::matrix force,
const elecstate::ElecState elec,
ModulePW::PW_Basis rho_basis,
ModuleSymmetry::Symmetry p_symm,
const Structure_Factor p_sf,
K_Vectors pkv,
ModulePW::PW_Basis_K wfc_basis,
const pseudopot_cell_vl locpp,
const pseudopot_cell_vnl nlpp,
UnitCell ucell,
const psi::Psi< std::complex< FPTYPE >, Device > &  psi_in,
const Stochastic_WF< std::complex< FPTYPE >, Device > &  stowf 
)
Here is the call graph for this function:
Here is the caller graph for this function:

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