ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
fs_kin_tools.h
Go to the documentation of this file.
1#ifndef FS_KIN_TOOLS_H
2#define FS_KIN_TOOLS_H
5#include "source_cell/klist.h"
9
10#include <complex>
11namespace hamilt
12{
13template <typename FPTYPE, typename Device>
15{
16 public:
17 FS_Kin_tools(const UnitCell& ucell_in,
18 const K_Vectors* kv_in,
19 const ModulePW::PW_Basis_K* wfc_basis_in,
20 const ModuleBase::matrix& wg);
22
26 void cal_gk(const int& ik);
27
37 void cal_stress_kin(const int& ik, const int& npm, const bool& occ, const std::complex<FPTYPE>* psi);
38
43
44 protected:
45 Device* ctx = {};
46 base_device::DEVICE_CPU* cpu_ctx = {};
48 std::vector<FPTYPE> gk3_;
49 std::vector<FPTYPE*> gk;
50 std::vector<FPTYPE> kfac;
51 std::vector<FPTYPE> s_kin;
52 FPTYPE* d_gk = nullptr;
53 FPTYPE* d_kfac = nullptr;
54 const FPTYPE* wg = nullptr;
55 const FPTYPE* wk = nullptr;
58 const int nksbands_;
59
60
61 private:
68};
69
70} // namespace hamilt
71
72#endif
Definition klist.h:13
Definition matrix.h:19
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition symmetry.h:16
Definition unitcell.h:16
Definition fs_kin_tools.h:15
const UnitCell & ucell_
Definition fs_kin_tools.h:57
const FPTYPE * wk
Definition fs_kin_tools.h:55
std::vector< FPTYPE > s_kin
Definition fs_kin_tools.h:51
base_device::DEVICE_CPU * cpu_ctx
Definition fs_kin_tools.h:46
FPTYPE * d_gk
Definition fs_kin_tools.h:52
void cal_gk(const int &ik)
calculate G+k and store it in gk and also calculate kfac
Definition fs_kin_tools.cpp:51
~FS_Kin_tools()
Definition fs_kin_tools.cpp:41
base_device::AbacusDevice_t device
Definition fs_kin_tools.h:47
const ModulePW::PW_Basis_K * wfc_basis_
Definition fs_kin_tools.h:56
std::vector< FPTYPE * > gk
Definition fs_kin_tools.h:49
FPTYPE * d_kfac
Definition fs_kin_tools.h:53
const FPTYPE * wg
Definition fs_kin_tools.h:54
std::vector< FPTYPE > kfac
Definition fs_kin_tools.h:50
std::vector< FPTYPE > gk3_
Definition fs_kin_tools.h:48
Device * ctx
Definition fs_kin_tools.h:45
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...
Definition fs_kin_tools.cpp:81
const int nksbands_
Definition fs_kin_tools.h:58
void symmetrize_stress(ModuleSymmetry::Symmetry *p_symm, ModuleBase::matrix &sigma)
symmetrize the stress tensor
Definition fs_kin_tools.cpp:129
AbacusDevice_t
Definition types.h:12
Definition hamilt.h:12
Definition exx_lip.h:23
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31
Definition stress_op.h:254