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
126 static void grad_rl_sph_harm(
127 const int Lmax,
128 const double x,
129 const double y,
130 const double z,
131 double* rly,
132 double* grly);
133
143 static void hes_rl_sph_harm(
144 const int Lmax,
145 const double x,
146 const double y,
147 const double z,
148 std::vector<std::vector<double>>& hrly);
149
150 //calculate the coefficient of Ylm, ylmcoef.
151 static void set_coefficients ();
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:24
Definition ylm.h:12
static long double Fact(const int n)
Definition ylm.cpp:2030
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:632
static void set_coefficients()
Definition ylm.cpp:1506
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:771
static int Semi_Fact(const int n)
Definition ylm.cpp:2041
Ylm()
Definition ylm.h:14
static double sgn(const double x)
Definition ylm.cpp:2052
static void get_ylm_real(const int &Lmax, const ModuleBase::Vector3< double > &vec, double ylmr[])
Get the ylm real object.
Definition ylm.cpp:17
static void ZEROS(double u[], const int &n)
Definition ylm.cpp:2015
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:1065
~Ylm()
Definition ylm.h:15
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:493
static int nlm
Definition ylm.h:17
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:288
Definition clebsch_gordan_coeff.cpp:8