#include <occupy.h>
|
static void | decision (const std::string &name, const std::string &smearing_method, const double &smearing_sigma) |
|
static const bool & | gauss (void) |
|
static const bool & | fix (void) |
|
static void | iweights (const int nks, const std::vector< double > &wk, const int nband, const double &nelec, const ModuleBase::matrix &ekb, double &ef, ModuleBase::matrix &wg, const int &is, const std::vector< int > &isk) |
| calculates weights and fermi energy for semiconductors and insulators
|
|
static void | gweights (const int nks, const std::vector< double > &wk, const int nband, const double &nelec, const double &smearing_sigma, const int ngauss, const ModuleBase::matrix &ekb, double &ef, double &demet, ModuleBase::matrix &wg, const int &is, const std::vector< int > &isk) |
| calculates weights with the gaussian spreading technique
|
|
static void | tweights (const int nks, const int nspin, const int nband, const double &nelec, const int ntetra, const ModuleBase::matrix &tetra, double **ekb, double &ef, ModuleBase::matrix &wg) |
|
static double | wsweight (const ModuleBase::Vector3< double > &r, ModuleBase::Vector3< double > *rws, const int nrws) |
|
|
static void | efermig (const ModuleBase::matrix &ekb, const int nbnd, const int nks, const double &nelec, const std::vector< double > &wk, const double &smearing_sigma, const int ngauss, double &ef, const int &is, const std::vector< int > &isk) |
| Finds the Fermi energy.
|
|
static double | sumkg (const ModuleBase::matrix &ekb, const int nband, const int nks, const std::vector< double > &wk, const double &smearing_sigma, const int ngauss, const double &e, const int &is, const std::vector< int > &isk) |
| This function computes the number of states under a given energy e.
|
|
static double | wgauss (const double &x, const int n) |
|
static double | w1gauss (const double &x, const int n) |
|
static void | efermit (double **ekb, const int nband, const int nks, const double &nelec, const int nspin, const int ntetra, const ModuleBase::matrix &tetra, double &ef) |
|
static double | sumkt (double **ekb, const int nband, const int nks, const int nspin, const int ntetra, const ModuleBase::matrix &tetra, const double &eup) |
|
static void | piksort (const int n, double *a) |
|
◆ Occupy()
◆ ~Occupy()
◆ decision()
void Occupy::decision |
( |
const std::string & |
name, |
|
|
const std::string & |
smearing_method, |
|
|
const double & |
smearing_sigma |
|
) |
| |
|
static |
◆ efermig()
void Occupy::efermig |
( |
const ModuleBase::matrix & |
ekb, |
|
|
const int |
nband, |
|
|
const int |
nks, |
|
|
const double & |
nelec, |
|
|
const std::vector< double > & |
wk, |
|
|
const double & |
smearing_sigma, |
|
|
const int |
ngauss, |
|
|
double & |
ef, |
|
|
const int & |
is, |
|
|
const std::vector< int > & |
isk |
|
) |
| |
|
staticprivate |
Finds the Fermi energy.
- Parameters
-
ekb | band energy. |
nband | number of bands. |
nks | nks number of k points. |
nelec | number of electrons. |
wk | wk weight of each k point(symmetry considered). |
smearing_sigma | parameter input by user. |
ngauss | which type of smearing. |
ef | output: fermi level |
is | spin |
isk | array to point out each k belong to which spin |
◆ efermit()
static void Occupy::efermit |
( |
double ** |
ekb, |
|
|
const int |
nband, |
|
|
const int |
nks, |
|
|
const double & |
nelec, |
|
|
const int |
nspin, |
|
|
const int |
ntetra, |
|
|
const ModuleBase::matrix & |
tetra, |
|
|
double & |
ef |
|
) |
| |
|
staticprivate |
◆ fix()
static const bool & Occupy::fix |
( |
void |
| ) |
|
|
inlinestatic |
◆ gauss()
static const bool & Occupy::gauss |
( |
void |
| ) |
|
|
inlinestatic |
◆ gweights()
void Occupy::gweights |
( |
const int |
nks, |
|
|
const std::vector< double > & |
wk, |
|
|
const int |
nband, |
|
|
const double & |
nelec, |
|
|
const double & |
smearing_sigma, |
|
|
const int |
ngauss, |
|
|
const ModuleBase::matrix & |
ekb, |
|
|
double & |
ef, |
|
|
double & |
demet, |
|
|
ModuleBase::matrix & |
wg, |
|
|
const int & |
is, |
|
|
const std::vector< int > & |
isk |
|
) |
| |
|
static |
calculates weights with the gaussian spreading technique
- Parameters
-
nks | number of k points. |
wk | weight of each k point(symmetry considered). |
nband | number of bands. |
nelec | number of electrons. |
smearing_sigma | parameter input by user. |
ngauss | which type of smearing. |
ekb | band energy. |
ef | output: fermi level |
demet | output: energy correction for metal |
wg | output: weight of each band at each k point |
is | spin |
isk | array to point out each k belong to which spin |
◆ iweights()
void Occupy::iweights |
( |
const int |
nks, |
|
|
const std::vector< double > & |
wk, |
|
|
const int |
nbands, |
|
|
const double & |
nelec, |
|
|
const ModuleBase::matrix & |
ekb, |
|
|
double & |
ef, |
|
|
ModuleBase::matrix & |
wg, |
|
|
const int & |
is, |
|
|
const std::vector< int > & |
isk |
|
) |
| |
|
static |
calculates weights and fermi energy for semiconductors and insulators
- Note
- It is only applicable to semiconductors and insulators that have an energy gap. Here, bands are either empty or filled, and there is no electronic transfer among different k-points.
- Parameters
-
nks | number of k points. |
wk | weight of each k point (consider symmetry). |
nbands | number of bands. |
nelec | number of electrons for this spin direction. |
ekb | the array save the band energy. |
ef | output: the highest occupied Kohn-Sham level. |
wg | output: weight for each k, each band. |
is | the spin index now. |
isk | distinguish k point belong to which spin. |
◆ piksort()
static void Occupy::piksort |
( |
const int |
n, |
|
|
double * |
a |
|
) |
| |
|
staticprivate |
◆ sumkg()
double Occupy::sumkg |
( |
const ModuleBase::matrix & |
ekb, |
|
|
const int |
nband, |
|
|
const int |
nks, |
|
|
const std::vector< double > & |
wk, |
|
|
const double & |
smearing_sigma, |
|
|
const int |
ngauss, |
|
|
const double & |
e, |
|
|
const int & |
is, |
|
|
const std::vector< int > & |
isk |
|
) |
| |
|
staticprivate |
This function computes the number of states under a given energy e.
- Parameters
-
ekb | band energy. |
nband | number of bands. |
nks | number of k points. |
wk | weight of each k point(symmetry considered). |
smearing_sigma | parameter input by user |
ngauss | which type of smearing. |
e | a givern energy |
is | spin |
isk | array to point out each k belong to which spin |
- Returns
- (double) the number of states
◆ sumkt()
static double Occupy::sumkt |
( |
double ** |
ekb, |
|
|
const int |
nband, |
|
|
const int |
nks, |
|
|
const int |
nspin, |
|
|
const int |
ntetra, |
|
|
const ModuleBase::matrix & |
tetra, |
|
|
const double & |
eup |
|
) |
| |
|
staticprivate |
◆ tweights()
static void Occupy::tweights |
( |
const int |
nks, |
|
|
const int |
nspin, |
|
|
const int |
nband, |
|
|
const double & |
nelec, |
|
|
const int |
ntetra, |
|
|
const ModuleBase::matrix & |
tetra, |
|
|
double ** |
ekb, |
|
|
double & |
ef, |
|
|
ModuleBase::matrix & |
wg |
|
) |
| |
|
static |
◆ w1gauss()
double Occupy::w1gauss |
( |
const double & |
x, |
|
|
const int |
n |
|
) |
| |
|
staticprivate |
◆ wgauss()
double Occupy::wgauss |
( |
const double & |
x, |
|
|
const int |
n |
|
) |
| |
|
staticprivate |
◆ wsweight()
◆ fixed_occupations
bool Occupy::fixed_occupations = false |
|
static |
◆ gaussian_parameter
double Occupy::gaussian_parameter = 0.01 |
|
static |
◆ gaussian_type
int Occupy::gaussian_type = 0 |
|
static |
◆ use_gaussian_broadening
bool Occupy::use_gaussian_broadening = false |
|
static |
The documentation for this class was generated from the following files:
- /home/runner/work/abacus-develop/abacus-develop/source/source_estate/occupy.h
- /home/runner/work/abacus-develop/abacus-develop/source/source_estate/occupy.cpp
- /home/runner/work/abacus-develop/abacus-develop/source/source_io/test/for_testing_input_conv.h