ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
ylm.h
Go to the documentation of this file.
1#ifndef YLM_H
2#define YLM_H
3
4#include <vector>
5
6#include "vector3.h"
7
8namespace ModuleBase
9{
10
11class Ylm
12{
13 public:
14 Ylm(){};
15 ~Ylm(){};
16
17 static int nlm;
18
19
27 static void get_ylm_real(
28 const int &Lmax ,
30 double ylmr[]);
31
40 static void get_ylm_real(
41 const int &Lmax ,
43 double ylmr[],
44 double dylmdr[][3]);
45
55 static void rlylm(
56 const int& Lmax,
57 const double& x,
58 const double& y,
59 const double& z,
60 double rly[]);
61
72 static void rlylm(
73 const int& Lmax,
74 const double& x,
75 const double& y,
76 const double& z,
77 double rly[],
78 double grly[][3]);
79
89 static void sph_harm(
90 const int& Lmax,
91 const double& xdr,
92 const double& ydr,
93 const double& zdr,
94 std::vector<double> &rly);
95
107 static void rl_sph_harm(
108 const int& Lmax,
109 const double& x,
110 const double& y,
111 const double& z,
112 std::vector<double>& rly);
113
125 static void grad_rl_sph_harm(
126 const int& Lmax,
127 const double& x,
128 const double& y,
129 const double& z,
130 double* rly,
131 double** grly);
132
142 static void hes_rl_sph_harm(
143 const int& Lmax,
144 const double& x,
145 const double& y,
146 const double& z,
147 std::vector<std::vector<double>>& hrly);
148
149 //calculate the coefficient of Ylm, ylmcoef.
150 static void set_coefficients ();
151 static std::vector<double> ylmcoef;
152
153 //static void test();
154 //static void test1();
155 //static void test2();
156
157 //set the first n elements of u to be 0.0
158 static void ZEROS(double u[], const int& n);
159
160 private:
161 static long double Fact(const int n);
162 static int Semi_Fact(const int n);
163 static double sgn(const double x);
164};
165
166}
167
168#endif
3 elements vector
Definition vector3.h:22
Definition ylm.h:12
static long double Fact(const int n)
Definition ylm.cpp:1849
static void grad_rl_sph_harm(const int &Lmax, const double &x, const double &y, const double &z, double *rly, double **grly)
Get the ylm real object and the gradient (used in getting derivative of overlap)
Definition ylm.cpp:809
static void set_coefficients()
Definition ylm.cpp:1325
static void rl_sph_harm(const int &Lmax, const double &x, const double &y, const double &z, std::vector< double > &rly)
Get the ylm real object (used in getting overlap)
Definition ylm.cpp:670
static std::vector< double > ylmcoef
Definition ylm.h:151
static void sph_harm(const int &Lmax, const double &xdr, const double &ydr, const double &zdr, std::vector< double > &rly)
Get the ylm real object (used in grid integration)
Definition ylm.cpp:531
static int Semi_Fact(const int n)
Definition ylm.cpp:1860
Ylm()
Definition ylm.h:14
static double sgn(const double x)
Definition ylm.cpp:1871
static void hes_rl_sph_harm(const int &Lmax, const double &x, const double &y, const double &z, std::vector< std::vector< double > > &hrly)
Get the hessian of r^l Ylm (used in getting derivative of overlap)
Definition ylm.cpp:1099
static void get_ylm_real(const int &Lmax, const ModuleBase::Vector3< double > &vec, double ylmr[])
Get the ylm real object.
Definition ylm.cpp:55
static void ZEROS(double u[], const int &n)
Definition ylm.cpp:1834
static void rlylm(const int &Lmax, const double &x, const double &y, const double &z, double rly[])
Get the ylm real (solid) object (not used anymore)
Definition ylm.cpp:326
~Ylm()
Definition ylm.h:15
static int nlm
Definition ylm.h:17
Definition array_pool.h:6