ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
gint_atom.h
Go to the documentation of this file.
1#pragma once
2
5#include "gint_type.h"
6
7namespace ModuleGint
8{
9
11{
12 public:
13
14 // Atom::set_index() stores orbitals in contiguous (L, N, m) blocks,
15 // so the spherical-harmonic index increases monotonically inside a block.
17 {
18 int begin_iw = 0;
19 int size = 0;
20 int ylm_begin = 0;
21 const double* psi_uniform = nullptr;
22 const double* dpsi_uniform = nullptr;
23 };
24
25 // constructor
27 const Atom* atom,
28 int it, int ia, int iat,
29 Vec3i biggrid_idx,
30 Vec3i unitcell_idx,
31 Vec3d tau_in_biggrid,
32 const Numerical_Orbital* orb,
33 const UnitCell* ucell);
34
35 // getter functions
36 const Atom* get_atom() const { return atom_; }
37 int get_ia() const { return ia_; }
38 int get_iat() const { return iat_; }
39 int get_start_iw() const { return ucell_->itiaiw2iwt(it_, ia_, 0); } // get the start index of global atomic orbitals
40 const Vec3i& get_bgrid_idx() const { return biggrid_idx_; }
41 const Vec3i& get_unitcell_idx() const { return unitcell_idx_; }
42 const Vec3i& get_R() const { return unitcell_idx_; }
43 const Vec3d& get_tau_in_bgrid() const { return tau_in_biggrid_; }
44 const Numerical_Orbital* get_orb() const { return orb_; }
45
46 int get_nw() const { return atom_->nw; }
47 double get_rcut() const { return orb_->getRcut(); }
48
58 template <typename T>
59 void set_phi(const std::vector<Vec3d>& coords, const int stride, T* phi) const;
60
75 template <typename T>
76 void set_phi_dphi(
77 const std::vector<Vec3d>& coords, const int stride,
78 T* phi, T* dphi_x, T* dphi_y, T* dphi_z) const;
79
95 template <typename T>
96 void set_ddphi(
97 const std::vector<Vec3d>& coords, const int stride,
98 T* ddphi_xx, T* ddphi_xy, T* ddphi_xz,
99 T* ddphi_yy, T* ddphi_yz, T* ddphi_zz) const;
100
101 private:
102 // the atom object
103 const Atom* atom_ = nullptr;
104
105 // the global index of the atom type
106 int it_;
107
108 // the global index of the atom among the same type of atoms
109 int ia_;
110
111 // the global index of the atom
112 int iat_;
113
114 // the index of big grid which contains this atom
116
117 // the index of the unitcell which contains this atom
119
120 // the relative Cartesian coordinates of this atom
121 // with respect to the big grid that contains it
123
124 // the numerical orbitals of this atom
125 const Numerical_Orbital* orb_ = nullptr;
126
127 const UnitCell* ucell_ = nullptr;
128
129 std::vector<const double*> p_psi_uniform_;
130 std::vector<const double*> p_dpsi_uniform_;
131 std::vector<const double*> p_ddpsi_uniform_;
132 std::vector<RadialBlock> radial_blocks_;
133};
134
135} // namespace ModuleGint
Definition atom_spec.h:6
int nw
Definition atom_spec.h:22
Definition gint_atom.h:11
int get_start_iw() const
Definition gint_atom.h:39
std::vector< const double * > p_psi_uniform_
Definition gint_atom.h:129
double get_rcut() const
Definition gint_atom.h:47
const UnitCell * ucell_
Definition gint_atom.h:127
void set_phi_dphi(const std::vector< Vec3d > &coords, const int stride, T *phi, T *dphi_x, T *dphi_y, T *dphi_z) const
Get the wave function values and its derivative.
Definition gint_atom.cpp:120
const Atom * atom_
Definition gint_atom.h:103
int get_iat() const
Definition gint_atom.h:38
const Vec3d & get_tau_in_bgrid() const
Definition gint_atom.h:43
void set_phi(const std::vector< Vec3d > &coords, const int stride, T *phi) const
Get the wave function values of the atom at a meshgrid.
Definition gint_atom.cpp:48
std::vector< const double * > p_dpsi_uniform_
Definition gint_atom.h:130
const Vec3i & get_unitcell_idx() const
Definition gint_atom.h:41
std::vector< const double * > p_ddpsi_uniform_
Definition gint_atom.h:131
Vec3i biggrid_idx_
Definition gint_atom.h:115
Vec3d tau_in_biggrid_
Definition gint_atom.h:122
const Numerical_Orbital * orb_
Definition gint_atom.h:125
int get_nw() const
Definition gint_atom.h:46
int iat_
Definition gint_atom.h:112
int it_
Definition gint_atom.h:106
void set_ddphi(const std::vector< Vec3d > &coords, const int stride, T *ddphi_xx, T *ddphi_xy, T *ddphi_xz, T *ddphi_yy, T *ddphi_yz, T *ddphi_zz) const
Get the wave function values and its second derivative.
Definition set_ddphi.cpp:10
Vec3i unitcell_idx_
Definition gint_atom.h:118
const Vec3i & get_R() const
Definition gint_atom.h:42
int get_ia() const
Definition gint_atom.h:37
const Numerical_Orbital * get_orb() const
Definition gint_atom.h:44
const Vec3i & get_bgrid_idx() const
Definition gint_atom.h:40
const Atom * get_atom() const
Definition gint_atom.h:36
int ia_
Definition gint_atom.h:109
std::vector< RadialBlock > radial_blocks_
Definition gint_atom.h:132
Definition ORB_atomic.h:52
const double & getRcut() const
Definition ORB_atomic.h:61
Definition unitcell.h:15
Tiait itiaiw2iwt(const Tiait &it, const Tiait &ia, const Tiait &iw) const
Definition unitcell.h:96
#define T
Definition exp.cpp:237
Definition batch_biggrid.cpp:4
Definition gint_atom.h:17
const double * dpsi_uniform
Definition gint_atom.h:22
int size
Definition gint_atom.h:19
const double * psi_uniform
Definition gint_atom.h:21
int ylm_begin
Definition gint_atom.h:20
int begin_iw
Definition gint_atom.h:18