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 // constructor
15 const Atom* atom,
16 int it, int ia, int iat,
17 Vec3i biggrid_idx,
18 Vec3i unitcell_idx,
19 Vec3d tau_in_biggrid,
20 const Numerical_Orbital* orb,
21 const UnitCell* ucell);
22
23 // getter functions
24 const Atom* get_atom() const { return atom_; }
25 int get_ia() const { return ia_; }
26 int get_iat() const { return iat_; }
27 int get_start_iw() const { return ucell_->itiaiw2iwt(it_, ia_, 0); } // get the start index of global atomic orbitals
28 const Vec3i& get_bgrid_idx() const { return biggrid_idx_; }
29 const Vec3i& get_unitcell_idx() const { return unitcell_idx_; }
30 const Vec3i& get_R() const { return unitcell_idx_; }
31 const Vec3d& get_tau_in_bgrid() const { return tau_in_biggrid_; }
32 const Numerical_Orbital* get_orb() const { return orb_; }
33
34 int get_nw() const { return atom_->nw; }
35 double get_rcut() const { return orb_->getRcut(); }
36
46 template <typename T>
47 void set_phi(const std::vector<Vec3d>& coords, const int stride, T* phi) const;
48
63 template <typename T>
64 void set_phi_dphi(
65 const std::vector<Vec3d>& coords, const int stride,
66 T* phi, T* dphi_x, T* dphi_y, T* dphi_z) const;
67
83 template <typename T>
84 void set_ddphi(
85 const std::vector<Vec3d>& coords, const int stride,
86 T* ddphi_xx, T* ddphi_xy, T* ddphi_xz,
87 T* ddphi_yy, T* ddphi_yz, T* ddphi_zz) const;
88
89 private:
90 // the atom object
91 const Atom* atom_;
92
93 // the global index of the atom type
94 int it_;
95
96 // the global index of the atom among the same type of atoms
97 int ia_;
98
99 // the global index of the atom
100 int iat_;
101
102 // the index of big grid which contains this atom
104
105 // the index of the unitcell which contains this atom
107
108 // the relative Cartesian coordinates of this atom
109 // with respect to the big grid that contains it
111
112 // the numerical orbitals of this atom
114
116
117 std::vector<const double*> p_psi_uniform_;
118 std::vector<const double*> p_dpsi_uniform_;
119 std::vector<const double*> p_ddpsi_uniform_;
120};
121
122} // namespace ModuleGint
Definition atom_spec.h:7
int nw
Definition atom_spec.h:23
Definition gint_atom.h:11
int get_start_iw() const
Definition gint_atom.h:27
std::vector< const double * > p_psi_uniform_
Definition gint_atom.h:117
double get_rcut() const
Definition gint_atom.h:35
const UnitCell * ucell_
Definition gint_atom.h:115
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:102
const Atom * atom_
Definition gint_atom.h:91
int get_iat() const
Definition gint_atom.h:26
const Vec3d & get_tau_in_bgrid() const
Definition gint_atom.h:31
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:38
std::vector< const double * > p_dpsi_uniform_
Definition gint_atom.h:118
const Vec3i & get_unitcell_idx() const
Definition gint_atom.h:29
std::vector< const double * > p_ddpsi_uniform_
Definition gint_atom.h:119
Vec3i biggrid_idx_
Definition gint_atom.h:103
Vec3d tau_in_biggrid_
Definition gint_atom.h:110
const Numerical_Orbital * orb_
Definition gint_atom.h:113
int get_nw() const
Definition gint_atom.h:34
int iat_
Definition gint_atom.h:100
int it_
Definition gint_atom.h:94
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:11
Vec3i unitcell_idx_
Definition gint_atom.h:106
const Vec3i & get_R() const
Definition gint_atom.h:30
int get_ia() const
Definition gint_atom.h:25
const Numerical_Orbital * get_orb() const
Definition gint_atom.h:32
const Vec3i & get_bgrid_idx() const
Definition gint_atom.h:28
const Atom * get_atom() const
Definition gint_atom.h:24
int ia_
Definition gint_atom.h:97
Definition ORB_atomic.h:52
const double & getRcut() const
Definition ORB_atomic.h:61
Definition unitcell.h:16
Tiait itiaiw2iwt(const Tiait &it, const Tiait &ia, const Tiait &iw) const
Definition unitcell.h:68
#define T
Definition exp.cpp:237
Definition batch_biggrid.cpp:4