ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Private Member Functions | List of all members
ModuleBase::Ylm Class Reference

#include <ylm.h>

Collaboration diagram for ModuleBase::Ylm:

Public Member Functions

 Ylm ()
 
 ~Ylm ()
 

Static Public Member Functions

static void get_ylm_real (const int &Lmax, const ModuleBase::Vector3< double > &vec, double ylmr[])
 Get the ylm real object.
 
static void get_ylm_real (const int &Lmax, const ModuleBase::Vector3< double > &vec, double ylmr[], double dylmdr[][3])
 Get the ylm real object and the gradient.
 
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)
 
static void rlylm (const int &Lmax, const double &x, const double &y, const double &z, double rly[], double grly[][3])
 Get the ylm real (solid) object and the gradient (not used anymore)
 
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)
 
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)
 
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)
 
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)
 
static void set_coefficients ()
 
static void ZEROS (double u[], const int &n)
 

Static Public Attributes

static int nlm = 0
 
static std::vector< double > ylmcoef
 

Static Private Member Functions

static long double Fact (const int n)
 
static int Semi_Fact (const int n)
 
static double sgn (const double x)
 

Constructor & Destructor Documentation

◆ Ylm()

ModuleBase::Ylm::Ylm ( )
inline

◆ ~Ylm()

ModuleBase::Ylm::~Ylm ( )
inline

Member Function Documentation

◆ Fact()

long double ModuleBase::Ylm::Fact ( const int  n)
staticprivate
Here is the caller graph for this function:

◆ get_ylm_real() [1/2]

void ModuleBase::Ylm::get_ylm_real ( const int &  Lmax,
const ModuleBase::Vector3< double > &  vec,
double  ylmr[] 
)
static

Get the ylm real object.

Parameters
Lmax[in] maximum angular quantum number + 1
vec[in] the vector to be calculated
ylmr[out] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_ylm_real() [2/2]

void ModuleBase::Ylm::get_ylm_real ( const int &  Lmax,
const ModuleBase::Vector3< double > &  vec,
double  ylmr[],
double  dylmdr[][3] 
)
static

Get the ylm real object and the gradient.

Parameters
Lmax[in] maximum angular quantum number + l
vec[in] the vector to be calculated
ylmr[out] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
dylmdr[out] gradient of Ylm, [dY00/dx, dY00/dy, dY00/dz], [dY10/dx, dY10/dy, dY10/dz], [dY11/dx, dY11/dy, dY11/dz],...
Here is the call graph for this function:

◆ grad_rl_sph_harm()

void ModuleBase::Ylm::grad_rl_sph_harm ( const int &  Lmax,
const double &  x,
const double &  y,
const double &  z,
double *  rly,
double **  grly 
)
static

Get the ylm real object and the gradient (used in getting derivative of overlap)

Parameters
Lmax[in] maximum angular quantum number
x[in] x/r
y[in] y/r
z[in] z/r
rly[in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
grly[out] gradient of Ylm, [dY00/dx, dY00/dy, dY00/dz], [dY10/dx, dY10/dy, dY10/dz], [dY11/dx, dY11/dy, dY11/dz],... grly should be a memory-contiguous two-dimensional array for better performance.
Here is the caller graph for this function:

◆ hes_rl_sph_harm()

void ModuleBase::Ylm::hes_rl_sph_harm ( const int &  Lmax,
const double &  x,
const double &  y,
const double &  z,
std::vector< std::vector< double > > &  hrly 
)
static

Get the hessian of r^l Ylm (used in getting derivative of overlap)

Parameters
Lmax[in] maximum angular quantum number
x[in] x
y[in] y
z[in] z
hrly[out] hessian of Ylm, [dY00/dx2, dY00/dxy, dY00/dxz, dY00/dyy, dY00/dyz, dY00/dzz] , ...
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rl_sph_harm()

void ModuleBase::Ylm::rl_sph_harm ( const int &  Lmax,
const double &  x,
const double &  y,
const double &  z,
std::vector< double > &  rly 
)
static

Get the ylm real object (used in getting overlap)

Parameters
Lmax[in] maximum angular quantum number
x[in] x/r
y[in] y/r
z[in] z/r
rly[in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
Author
Peize Lin
Date
2016-08-26
Here is the caller graph for this function:

◆ rlylm() [1/2]

void ModuleBase::Ylm::rlylm ( const int &  Lmax,
const double &  x,
const double &  y,
const double &  z,
double  rly[] 
)
static

Get the ylm real (solid) object (not used anymore)

Parameters
Lmax[in] maximum angular quantum number + l
x[in] x
y[in] y
z[in] z
rly[in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rlylm() [2/2]

void ModuleBase::Ylm::rlylm ( const int &  Lmax,
const double &  x,
const double &  y,
const double &  z,
double  rly[],
double  grly[][3] 
)
static

Get the ylm real (solid) object and the gradient (not used anymore)

Parameters
Lmax[in] maximum angular quantum number + 1
x[in] x
y[in] y
z[in] z
rly[in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
grly[out] gradient of Ylm, [dY00/dx, dY00/dy, dY00/dz], [dY10/dx, dY10/dy, dY10/dz], [dY11/dx, dY11/dy, dY11/dz],...
Here is the call graph for this function:

◆ Semi_Fact()

int ModuleBase::Ylm::Semi_Fact ( const int  n)
staticprivate
Here is the caller graph for this function:

◆ set_coefficients()

void ModuleBase::Ylm::set_coefficients ( )
static
Here is the caller graph for this function:

◆ sgn()

double ModuleBase::Ylm::sgn ( const double  x)
staticprivate
Here is the caller graph for this function:

◆ sph_harm()

void ModuleBase::Ylm::sph_harm ( const int &  Lmax,
const double &  xdr,
const double &  ydr,
const double &  zdr,
std::vector< double > &  rly 
)
static

Get the ylm real object (used in grid integration)

Parameters
Lmax[in] maximum angular quantum number
xdr[in] x/r
ydr[in] y/r
zdr[in] z/r
rly[in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2...
Here is the caller graph for this function:

◆ ZEROS()

void ModuleBase::Ylm::ZEROS ( double  u[],
const int &  n 
)
static
Here is the caller graph for this function:

Member Data Documentation

◆ nlm

int ModuleBase::Ylm::nlm = 0
static

◆ ylmcoef

std::vector< double > ModuleBase::Ylm::ylmcoef
static

The documentation for this class was generated from the following files: