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