ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <read_pp.h>
Public Member Functions | |
Pseudopot_upf () | |
~Pseudopot_upf () | |
int | init_pseudo_reader (const std::string &fn, std::string &type, Atom_pseudo &pp) |
void | print_pseudo_upf (std::ofstream &ofs, Atom_pseudo &pp) |
int | average_p (const double &lambda, Atom_pseudo &pp) |
void | set_empty_element (Atom_pseudo &pp) |
void | set_upf_q (Atom_pseudo &pp) |
void | complete_default (Atom_pseudo &pp) |
Public Attributes | |
std::string | relativistic |
int | lmax_rho |
double | xmin |
double | rmax |
double | zmesh |
double | dx |
int | lloc |
bool | q_with_l |
int | nqf |
bool | coulomb_potential = false |
ModuleBase::matrix | chi |
std::vector< int > | kbeta = {} |
std::vector< std::string > | els_beta = {} |
std::vector< int > | nchi = {} |
std::vector< double > | epseu = {} |
std::vector< double > | rcut_chi = {} |
std::vector< double > | rcutus_chi = {} |
std::vector< double > | rinner = {} |
ModuleBase::matrix | qfunc |
ModuleBase::realArray | qfcoef |
std::vector< double > | rcut = {} |
std::vector< double > | rcutus = {} |
int | nd |
int | spd_loc |
int | iTB_s |
int | iTB_p |
int | iTB_d |
Private Member Functions | |
void | skip_number (std::ifstream &ifs, bool mesh_changed) |
int | set_pseudo_type (const std::string &fn, std::string &type) |
std::string & | trim (std::string &in_str) |
std::string | trimend (std::string &in_str) |
int | read_pseudo_upf (std::ifstream &ifs, Atom_pseudo &pp) |
int | read_pseudo_vwr (std::ifstream &ifs, Atom_pseudo &pp) |
int | read_pseudo_blps (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_header (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_mesh (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_nlcc (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_local (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_nl (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_pswfc (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_rhoatom (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_addinfo (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_so (std::ifstream &ifs, Atom_pseudo &pp) |
int | read_pseudo_upf201 (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_upf201_header (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_upf201_mesh (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_upf201_nonlocal (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_upf201_pswfc (std::ifstream &ifs, Atom_pseudo &pp) |
void | read_pseudo_upf201_so (std::ifstream &ifs, Atom_pseudo &pp) |
void | getnameval (std::ifstream &, int &, std::string *, std::string *) |
void | setqfnew (const int &nqf, const int &mesh, const int &l, const int &n, const double *qfcoef, const double *r, double *rho) |
Computes the Q function from its polynomial expansion (r < rinner) | |
void | complete_default_h (Atom_pseudo &pp) |
void | complete_default_atom (Atom_pseudo &pp) |
void | complete_default_vl (Atom_pseudo &pp) |
Private Attributes | |
bool | mesh_changed = false |
Pseudopot_upf::Pseudopot_upf | ( | ) |
Pseudopot_upf::~Pseudopot_upf | ( | ) |
int Pseudopot_upf::average_p | ( | const double & | lambda, |
Atom_pseudo & | pp | ||
) |
void Pseudopot_upf::complete_default | ( | Atom_pseudo & | pp | ) |
|
private |
|
private |
|
private |
|
private |
int Pseudopot_upf::init_pseudo_reader | ( | const std::string & | fn, |
std::string & | type, | ||
Atom_pseudo & | pp | ||
) |
void Pseudopot_upf::print_pseudo_upf | ( | std::ofstream & | ofs, |
Atom_pseudo & | pp | ||
) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
void Pseudopot_upf::set_empty_element | ( | Atom_pseudo & | pp | ) |
|
private |
void Pseudopot_upf::set_upf_q | ( | Atom_pseudo & | pp | ) |
For USPP we set the augmentation charge as an l-dependent array in all cases. This is already the case when upfq_with_l is .true. For vanderbilt US pseudos, where nqf and rinner are non zero, we do here what otherwise would be done multiple times in many parts of the code (such as in init_us_1, addusforce_r, bp_calc_btq, compute_qdipol) whenever the q_l(r) were to be constructed. For simple rrkj3 pseudos we duplicate the information contained in q(r) for all q_l(r).
This requires a little extra memory but unifies the treatment of q_l(r) and allows further weaking with the augmentation charge.
|
private |
Computes the Q function from its polynomial expansion (r < rinner)
nqf | number of polynomial coefficients |
mesh | number of mesh points |
l | angular momentum |
n | additional exponent, result is multiplied by r^n |
qfcoef | polynomial coefficients |
r | radial mesh |
rho | output: r^n * Q(r) |
|
private |
|
private |
|
private |
ModuleBase::matrix Pseudopot_upf::chi |
bool Pseudopot_upf::coulomb_potential = false |
double Pseudopot_upf::dx |
std::vector<std::string> Pseudopot_upf::els_beta = {} |
std::vector<double> Pseudopot_upf::epseu = {} |
int Pseudopot_upf::iTB_d |
int Pseudopot_upf::iTB_p |
int Pseudopot_upf::iTB_s |
std::vector<int> Pseudopot_upf::kbeta = {} |
int Pseudopot_upf::lloc |
int Pseudopot_upf::lmax_rho |
|
private |
std::vector<int> Pseudopot_upf::nchi = {} |
int Pseudopot_upf::nd |
int Pseudopot_upf::nqf |
bool Pseudopot_upf::q_with_l |
ModuleBase::realArray Pseudopot_upf::qfcoef |
ModuleBase::matrix Pseudopot_upf::qfunc |
std::vector<double> Pseudopot_upf::rcut = {} |
std::vector<double> Pseudopot_upf::rcut_chi = {} |
std::vector<double> Pseudopot_upf::rcutus = {} |
std::vector<double> Pseudopot_upf::rcutus_chi = {} |
std::string Pseudopot_upf::relativistic |
std::vector<double> Pseudopot_upf::rinner = {} |
double Pseudopot_upf::rmax |
int Pseudopot_upf::spd_loc |
double Pseudopot_upf::xmin |
double Pseudopot_upf::zmesh |