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

#include <read_pp.h>

Collaboration diagram for Pseudopot_upf:

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
 

Constructor & Destructor Documentation

◆ Pseudopot_upf()

Pseudopot_upf::Pseudopot_upf ( )

◆ ~Pseudopot_upf()

Pseudopot_upf::~Pseudopot_upf ( )

Member Function Documentation

◆ average_p()

int Pseudopot_upf::average_p ( const double &  lambda,
Atom_pseudo pp 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ complete_default()

void Pseudopot_upf::complete_default ( Atom_pseudo pp)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ complete_default_atom()

void Pseudopot_upf::complete_default_atom ( Atom_pseudo pp)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ complete_default_h()

void Pseudopot_upf::complete_default_h ( Atom_pseudo pp)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ complete_default_vl()

void Pseudopot_upf::complete_default_vl ( Atom_pseudo pp)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getnameval()

void Pseudopot_upf::getnameval ( std::ifstream &  ifs,
int &  n,
std::string *  name,
std::string *  val 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_pseudo_reader()

int Pseudopot_upf::init_pseudo_reader ( const std::string &  fn,
std::string &  type,
Atom_pseudo pp 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_pseudo_upf()

void Pseudopot_upf::print_pseudo_upf ( std::ofstream &  ofs,
Atom_pseudo pp 
)
Here is the call graph for this function:

◆ read_pseudo_addinfo()

void Pseudopot_upf::read_pseudo_addinfo ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private

◆ read_pseudo_blps()

int Pseudopot_upf::read_pseudo_blps ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_header()

void Pseudopot_upf::read_pseudo_header ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_local()

void Pseudopot_upf::read_pseudo_local ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_mesh()

void Pseudopot_upf::read_pseudo_mesh ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_nl()

void Pseudopot_upf::read_pseudo_nl ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_nlcc()

void Pseudopot_upf::read_pseudo_nlcc ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_pswfc()

void Pseudopot_upf::read_pseudo_pswfc ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_rhoatom()

void Pseudopot_upf::read_pseudo_rhoatom ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_so()

void Pseudopot_upf::read_pseudo_so ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the caller graph for this function:

◆ read_pseudo_upf()

int Pseudopot_upf::read_pseudo_upf ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201()

int Pseudopot_upf::read_pseudo_upf201 ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201_header()

void Pseudopot_upf::read_pseudo_upf201_header ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201_mesh()

void Pseudopot_upf::read_pseudo_upf201_mesh ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201_nonlocal()

void Pseudopot_upf::read_pseudo_upf201_nonlocal ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201_pswfc()

void Pseudopot_upf::read_pseudo_upf201_pswfc ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_upf201_so()

void Pseudopot_upf::read_pseudo_upf201_so ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_pseudo_vwr()

int Pseudopot_upf::read_pseudo_vwr ( std::ifstream &  ifs,
Atom_pseudo pp 
)
private

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_empty_element()

void Pseudopot_upf::set_empty_element ( Atom_pseudo pp)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_pseudo_type()

int Pseudopot_upf::set_pseudo_type ( const std::string &  fn,
std::string &  type 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_upf_q()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setqfnew()

void Pseudopot_upf::setqfnew ( const int &  nqf,
const int &  mesh,
const int &  l,
const int &  n,
const double *  qfcoef,
const double *  r,
double *  rho 
)
private

Computes the Q function from its polynomial expansion (r < rinner)

Parameters
nqfnumber of polynomial coefficients
meshnumber of mesh points
langular momentum
nadditional exponent, result is multiplied by r^n
qfcoefpolynomial coefficients
rradial mesh
rhooutput: r^n * Q(r)
Here is the caller graph for this function:

◆ skip_number()

void Pseudopot_upf::skip_number ( std::ifstream &  ifs,
bool  mesh_changed 
)
private
Here is the caller graph for this function:

◆ trim()

std::string & Pseudopot_upf::trim ( std::string &  in_str)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ trimend()

std::string Pseudopot_upf::trimend ( std::string &  in_str)
private

Member Data Documentation

◆ chi

ModuleBase::matrix Pseudopot_upf::chi

◆ coulomb_potential

bool Pseudopot_upf::coulomb_potential = false

◆ dx

double Pseudopot_upf::dx

◆ els_beta

std::vector<std::string> Pseudopot_upf::els_beta = {}

◆ epseu

std::vector<double> Pseudopot_upf::epseu = {}

◆ iTB_d

int Pseudopot_upf::iTB_d

◆ iTB_p

int Pseudopot_upf::iTB_p

◆ iTB_s

int Pseudopot_upf::iTB_s

◆ kbeta

std::vector<int> Pseudopot_upf::kbeta = {}

◆ lloc

int Pseudopot_upf::lloc

◆ lmax_rho

int Pseudopot_upf::lmax_rho

◆ mesh_changed

bool Pseudopot_upf::mesh_changed = false
private

◆ nchi

std::vector<int> Pseudopot_upf::nchi = {}

◆ nd

int Pseudopot_upf::nd

◆ nqf

int Pseudopot_upf::nqf

◆ q_with_l

bool Pseudopot_upf::q_with_l

◆ qfcoef

ModuleBase::realArray Pseudopot_upf::qfcoef

◆ qfunc

ModuleBase::matrix Pseudopot_upf::qfunc

◆ rcut

std::vector<double> Pseudopot_upf::rcut = {}

◆ rcut_chi

std::vector<double> Pseudopot_upf::rcut_chi = {}

◆ rcutus

std::vector<double> Pseudopot_upf::rcutus = {}

◆ rcutus_chi

std::vector<double> Pseudopot_upf::rcutus_chi = {}

◆ relativistic

std::string Pseudopot_upf::relativistic

◆ rinner

std::vector<double> Pseudopot_upf::rinner = {}

◆ rmax

double Pseudopot_upf::rmax

◆ spd_loc

int Pseudopot_upf::spd_loc

◆ xmin

double Pseudopot_upf::xmin

◆ zmesh

double Pseudopot_upf::zmesh

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