ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
ORB_atomic_lm.h
Go to the documentation of this file.
1//=========================================================
2//AUTHOR : liaochen
3//DATE : 2008-11-12
4//UPDATE : Peize Lin change all pointer to std::vector 2016-05-14
5//=========================================================
6#ifndef NUMERICAL_ORBITAL_LM_H
7#define NUMERICAL_ORBITAL_LM_H
8
9#include <vector>
10using std::vector;
13
22{
23 friend class Numerical_Orbital;
24
25 public:
26
27 std::vector<double> psi_uniform;// mohan add 2009-5-10
28 std::vector<double> dpsi_uniform; //liaochen add 2010/5/11
29 std::vector<double> ddpsi_uniform; //wenfei add 2022/7/13
30
31 int nr_uniform;// mohan add 2009-5-10
32 double dr_uniform;// mohan add 2009-5-10
33 double zty;
34
37
38 // Peize Lin add 2017-12-12
39 enum class Psi_Type{ Psi, Psif, Psik, Psik2 };
40
43 (
44 const std::string &label_in,
45 const int &index_atom_type_in,
46 const int &angular_momentum_l_in,
47 const int &index_chi_in,
48 const int &nr_in,
49 const double *rab_in,
50 const double *r_radial_in,
51 const Psi_Type &psi_type, // Peize Lin add 2017-12-12
52 const double *psi_in,
53 const int &nk_in,
54 const double &dk_in,
55 // Peize Lin delete lat0 2016-02-03
56 const double &dr_uniform,
57 bool flag_plot, // Peize Lin add flag_plot 2016-08-31
58 bool flag_sbpool, // Peize Lin add flag_sbpool 2017-10-02
59 const bool &force_flag // mohan add 2021-05-07
60 );
61
62private:
63
64 void copy_parameter(
65 const std::string &label_in,
66 const int &index_atom_type_in,
67 const int &angular_momentum_l_in,
68 const int &index_chi_in,
69 const int &nr_in,
70 const double *rab_in,
71 const double *r_radial_in,
72 const int &nk_in,
73 const double &dk_in,
74 const double &dr_uniform_in);
75
76 void cal_kradial(void);
77 void cal_kradial_sbpool(void);
78 void cal_rradial_sbpool(void);
79 //void norm_test()const;
80 void plot()const;
81 //void use_uniform(const double &dr_uniform_in);
82 void extra_uniform(const double &dr_uniform_in, const bool &force_flag);
83
84 std::string label;
88
89 int nr;
90 int nk;
91
92 double rcut;
93 double kcut;
94 double dk;
95
96 std::vector<double> r_radial;
97 std::vector<double> k_radial;
98
99 std::vector<double> rab;
100
101 std::vector<double> psi;
102 std::vector<double> psir;
103 std::vector<double> psif;
104 std::vector<double> psik;
105 std::vector<double> psik2;
106
107public:
108
109 const std::string& getLabel() const { return label; }
110 const int& getType() const { return index_atom_type; }
111 const int& getL() const { return angular_momentum_l; }
112 const int& getChi() const { return index_chi; }
113
114 const double* getPsiuniform() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psi_uniform); }
115 const double* getDpsiuniform() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(dpsi_uniform); }
116 const int& getNruniform() const { return nr_uniform; }
117 const double& getDruniform() const { return dr_uniform; }
118
119 const int& getNr() const { return nr; }
120 const int& getNk() const { return nk; }
121
122 const double& getRcut() const { return rcut; }
123 const double& getKcut() const { return kcut; }
124
125 const double* getRadial() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(r_radial); }
126 const std::vector<double>& get_r_radial() const { return r_radial; }
127 const double& getRadial(const int ir) const { return r_radial[ir]; }
128
129 const double* getRab() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(rab); }
130 const std::vector<double>& get_rab() const { return rab; }
131 const double& getRab(const int ir) const { return rab[ir]; }
132
133 const double& getDk()const { return dk; }
134 const double* getKpoint() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(k_radial); }
135 const double& getKpoint(const int ik) const { return k_radial[ik]; }
136 const std::vector<double>& get_k_radial() const { return k_radial; }
137
138 const double* getPsi() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psi);}
139 const double& getPsi(const int ir) const { return psi[ir];}
140 const std::vector<double>& get_psi() const { return psi; }
141 const double* getPsi_r() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psir); }
142 const double& getPsi_r(const int ir) const { return psir[ir]; }
143
144 const double* getPsif() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psif); }
145 const double& getPsif(const int ik) const { return psif[ik]; }
146 const std::vector<double>& get_psif() const { return psif; }
147 const double* getPsi_k() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psik); }
148 const double& getPsi_k(const int ik) const { return psik[ik]; }
149 const std::vector<double>& get_psi_k() const { return psik; }
150 const double* getPsi_k2() const { return ModuleBase::GlobalFunc::VECTOR_TO_PTR(psik2); }
151 const double& getPsi_k2(const int ik) const { return psik2[ik]; }
152 const std::vector<double>& get_psi_k2() const { return psik2; }
153};
154
155#endif
156
Definition ORB_atomic_lm.h:22
std::vector< double > psik2
psi(k) * k^2
Definition ORB_atomic_lm.h:105
const int & getType() const
Definition ORB_atomic_lm.h:110
double dr_uniform
Definition ORB_atomic_lm.h:32
int nr
Definition ORB_atomic_lm.h:89
const double * getPsi() const
Definition ORB_atomic_lm.h:138
~Numerical_Orbital_Lm()
Definition ORB_atomic_lm.cpp:33
const std::vector< double > & get_psi_k2() const
Definition ORB_atomic_lm.h:152
void copy_parameter(const std::string &label_in, const int &index_atom_type_in, const int &angular_momentum_l_in, const int &index_chi_in, const int &nr_in, const double *rab_in, const double *r_radial_in, const int &nk_in, const double &dk_in, const double &dr_uniform_in)
Definition ORB_atomic_lm.cpp:161
double zty
the valus of psi at 0.
Definition ORB_atomic_lm.h:33
const double * getPsiuniform() const
Definition ORB_atomic_lm.h:114
void plot() const
Definition ORB_atomic_lm.cpp:691
std::vector< double > psi_uniform
Definition ORB_atomic_lm.h:27
const double & getPsi_k(const int ik) const
Definition ORB_atomic_lm.h:148
std::vector< double > r_radial
points of r
Definition ORB_atomic_lm.h:96
const double * getPsif() const
Definition ORB_atomic_lm.h:144
const double & getKpoint(const int ik) const
Definition ORB_atomic_lm.h:135
double dk
Definition ORB_atomic_lm.h:94
double kcut
Definition ORB_atomic_lm.h:93
int nr_uniform
Definition ORB_atomic_lm.h:31
void extra_uniform(const double &dr_uniform_in, const bool &force_flag)
Definition ORB_atomic_lm.cpp:220
const std::string & getLabel() const
Definition ORB_atomic_lm.h:109
void cal_rradial_sbpool(void)
Definition ORB_atomic_lm.cpp:584
Psi_Type
Definition ORB_atomic_lm.h:39
std::vector< double > ddpsi_uniform
Definition ORB_atomic_lm.h:29
const std::vector< double > & get_r_radial() const
Definition ORB_atomic_lm.h:126
const double * getRadial() const
Definition ORB_atomic_lm.h:125
void cal_kradial(void)
Definition ORB_atomic_lm.cpp:405
std::vector< double > psik
psi(k) * k
Definition ORB_atomic_lm.h:104
const std::vector< double > & get_psif() const
Definition ORB_atomic_lm.h:146
const double * getPsi_r() const
Definition ORB_atomic_lm.h:141
const double & getRcut() const
Definition ORB_atomic_lm.h:122
const double & getDk() const
Definition ORB_atomic_lm.h:133
const double * getKpoint() const
Definition ORB_atomic_lm.h:134
std::vector< double > psi
psi(r)
Definition ORB_atomic_lm.h:101
int angular_momentum_l
Definition ORB_atomic_lm.h:86
const std::vector< double > & get_rab() const
Definition ORB_atomic_lm.h:130
std::vector< double > dpsi_uniform
Definition ORB_atomic_lm.h:28
double rcut
Definition ORB_atomic_lm.h:92
const double & getPsi_r(const int ir) const
Definition ORB_atomic_lm.h:142
std::vector< double > psif
psi(k)
Definition ORB_atomic_lm.h:103
std::vector< double > k_radial
Definition ORB_atomic_lm.h:97
const double & getRab(const int ir) const
Definition ORB_atomic_lm.h:131
const double & getPsi(const int ir) const
Definition ORB_atomic_lm.h:139
const double & getKcut() const
Definition ORB_atomic_lm.h:123
Numerical_Orbital_Lm()
Definition ORB_atomic_lm.cpp:14
const double & getPsi_k2(const int ik) const
Definition ORB_atomic_lm.h:151
const double * getPsi_k() const
Definition ORB_atomic_lm.h:147
const double * getPsi_k2() const
Definition ORB_atomic_lm.h:150
const double & getPsif(const int ik) const
Definition ORB_atomic_lm.h:145
const double * getDpsiuniform() const
Definition ORB_atomic_lm.h:115
const std::vector< double > & get_k_radial() const
Definition ORB_atomic_lm.h:136
std::vector< double > psir
psi(r) * r
Definition ORB_atomic_lm.h:102
void cal_kradial_sbpool(void)
Definition ORB_atomic_lm.cpp:512
const std::vector< double > & get_psi() const
Definition ORB_atomic_lm.h:140
const int & getNk() const
Definition ORB_atomic_lm.h:120
const int & getNruniform() const
Definition ORB_atomic_lm.h:116
const double & getDruniform() const
Definition ORB_atomic_lm.h:117
std::string label
Definition ORB_atomic_lm.h:84
const int & getChi() const
Definition ORB_atomic_lm.h:112
const double & getRadial(const int ir) const
Definition ORB_atomic_lm.h:127
const int & getNr() const
Definition ORB_atomic_lm.h:119
int index_atom_type
Definition ORB_atomic_lm.h:85
int nk
Definition ORB_atomic_lm.h:90
void set_orbital_info(const std::string &label_in, const int &index_atom_type_in, const int &angular_momentum_l_in, const int &index_chi_in, const int &nr_in, const double *rab_in, const double *r_radial_in, const Psi_Type &psi_type, const double *psi_in, const int &nk_in, const double &dk_in, const double &dr_uniform, bool flag_plot, bool flag_sbpool, const bool &force_flag)
EXPLAIN : set information about Numerical_Orbital_Lm.
Definition ORB_atomic_lm.cpp:37
const std::vector< double > & get_psi_k() const
Definition ORB_atomic_lm.h:149
int index_chi
Definition ORB_atomic_lm.h:87
const int & getL() const
Definition ORB_atomic_lm.h:111
std::vector< double > rab
Definition ORB_atomic_lm.h:99
const double * getRab() const
Definition ORB_atomic_lm.h:129
Definition ORB_atomic.h:52
Definition exx_lip.h:23