|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <to_qo.h>
Public Member Functions | |
| toQO (const std::string &qo_basis, const std::vector< std::string > &strategies, const double &qo_thr, const std::vector< double > &screening_coeffs) | |
| ~toQO () | |
| void | initialize (const std::string &out_dir, const std::string &pseudo_dir, const std::string &orbital_dir, const UnitCell *p_ucell, const std::vector< ModuleBase::Vector3< double > > &kvecs_d, std::ofstream &ofs_running, const int &rank, const int &nranks) |
| void | read_structures (const UnitCell *p_ucell, const std::vector< ModuleBase::Vector3< double > > &kvecs_d, const int &iproc, const int &nprocs) |
| void | build_nao (const int ntype, const std::string orbital_dir, const std::string *const orbital_fn, const int rank) |
| void | build_ao (const int ntype, const std::string pseudo_dir, const std::string *const pspot_fn=nullptr, const std::vector< double > screening_coeffs=std::vector< double >(), const double qo_thr=1e-10, const std::ofstream &ofs=std::ofstream(), const int rank=0) |
| void | build_hydrogen (const int ntype, const double *const charges, const bool slater_screening, const int *const nmax, const double qo_thr, const int rank) |
| void | build_pswfc (const int ntype, const std::string pseudo_dir, const std::string *const pspot_fn, const double *const screening_coeffs, const double qo_thr, const int rank) |
| void | build_szv () |
| void | calculate () |
| void | calculate_ovlpR (const int iR) |
| void | calculate_ovlpk (int ik) |
| template<typename T > | |
| void | write_ovlp (const std::string &dir, const std::vector< T > &matrix, const int &nrows, const int &ncols, const bool &is_R=false, const int &imat=0) |
| void | read_ovlp (const std::string &dir, const int &nrows, const int &ncols, const bool &is_R=false, const int &imat=0) |
| void | radialcollection_indexing (const RadialCollection &, const std::vector< int > &, const bool &, std::map< std::tuple< int, int, int, int, int >, int > &, std::map< int, std::tuple< int, int, int, int, int > > &) |
| build bidirectional map indexing for one single RadialCollection object, which is an axis of two-center-integral table. | |
| ModuleBase::Vector3< double > | cal_two_center_vector (ModuleBase::Vector3< double > rij, ModuleBase::Vector3< int > R) |
| calculate vectors connecting all atom pairs that needed to calculate their overlap | |
| bool | orbital_filter_out (const int &itype, const int &l, const int &izeta) |
| when indexing, select where one orbital is really included in the two-center integral | |
| void | deallocate_ovlp (const bool &is_R=false) |
| void | allocate_ovlp (const bool &is_R=false) |
| void | zero_out_ovlps (const bool &is_R) |
| void | append_ovlpR_eiRk (int ik, int iR) |
| void | scan_supercell (const int &iproc, const int &nprocs) |
| get all possible (n1n2n3) defining supercell and scatter if MPI enabled | |
| std::vector< ModuleBase::Vector3< int > > | scan_supercell_for_atom (int it, int ia, int start_it=0, int start_ia=0) |
| this is a basic functional for scanning (ijR) pair for one certain i, return Rs | |
| std::vector< int > | rcut_to_supercell_index (double rcut, ModuleBase::Vector3< double > a, ModuleBase::Vector3< double > b, ModuleBase::Vector3< double > c) |
| core algorithm to scan supercells, find the maximal supercell according to present cutoff radius | |
| double | norm2_rij_supercell (ModuleBase::Vector3< double > rij, int n1, int n2, int n3) |
| get vector squared norm in supercell | |
| template<typename T > | |
| void | eliminate_duplicate_vector3 (std::vector< ModuleBase::Vector3< T > > &vector3s) |
| eliminate duplicate vectors in a vector of vector3 | |
| void | write_supercells () |
| write supercells information to file | |
| int | ntype () const |
| int | nks () const |
| std::string | qo_basis () const |
| std::vector< std::string > | strategies () const |
| std::string | strategy (const int itype) const |
| UnitCell * | p_ucell () const |
| RadialCollection * | p_nao () const |
| RadialCollection * | p_ao () const |
| int | nR () const |
| int | nchi () const |
| int | nphi () const |
| std::vector< ModuleBase::Vector3< int > > | supercells () const |
| std::vector< double > | ovlpR () const |
| double | ovlpR (const int i, const int j) const |
| std::vector< std::complex< double > > | ovlpk () const |
| std::complex< double > | ovlpk (const int i, const int j) const |
| std::vector< std::string > | symbols () const |
| std::vector< double > | charges () const |
| atom_in | atom_database () const |
| std::vector< ModuleBase::Vector3< double > > | kvecs_d () const |
Static Public Member Functions | |
| static void | bcast_stdvector_ofvector3int (std::vector< ModuleBase::Vector3< int > > &vec, const int rank) |
| static void | bcast_stdvector_ofvector3double (std::vector< ModuleBase::Vector3< double > > &vec, const int rank) |
Private Attributes | |
| std::string | qo_basis_ = "hydrogen" |
| std::vector< std::string > | strategies_ |
| double | qo_thr_ = 1e-10 |
| std::vector< double > | screening_coeffs_ |
| std::string | out_dir_ |
| std::string | pseudo_dir_ |
| std::string | orbital_dir_ |
| int | iproc_ = 0 |
| int | nprocs_ = 1 |
| const UnitCell * | p_ucell_ = nullptr |
| std::vector< int > | iRs_ |
| std::vector< ModuleBase::Vector3< int > > | supercells_ |
| std::vector< int > | iks_ |
| std::vector< ModuleBase::Vector3< double > > | kvecs_d_ |
| std::unique_ptr< RadialCollection > | nao_ |
| std::unique_ptr< RadialCollection > | ao_ |
| std::unique_ptr< TwoCenterIntegrator > | overlap_calculator_ |
| std::vector< double > | ovlpR_ |
| std::vector< std::complex< double > > | ovlpk_ |
| std::map< std::tuple< int, int, int, int, int >, int > | index_ao_ |
| std::map< int, std::tuple< int, int, int, int, int > > | rindex_ao_ |
| std::map< std::tuple< int, int, int, int, int >, int > | index_nao_ |
| std::map< int, std::tuple< int, int, int, int, int > > | rindex_nao_ |
| int | nks_ = 0 |
| int | nks_tot_ = 0 |
| int | nR_ = 0 |
| int | nR_tot_ = 0 |
| int | nchi_ = 0 |
| int | nphi_ = 0 |
| atom_in | atom_database_ |
| int | ntype_ = 0 |
| std::vector< int > | na_ |
| std::vector< std::string > | symbols_ |
| std::vector< double > | charges_ |
| std::vector< int > | nmax_ |
| toQO::toQO | ( | const std::string & | qo_basis, |
| const std::vector< std::string > & | strategies, | ||
| const double & | qo_thr, | ||
| const std::vector< double > & | screening_coeffs | ||
| ) |
| toQO::~toQO | ( | ) |
| void toQO::allocate_ovlp | ( | const bool & | is_R = false | ) |
| void toQO::append_ovlpR_eiRk | ( | int | ik, |
| int | iR | ||
| ) |
|
inline |
|
static |
|
static |
| void toQO::build_ao | ( | const int | ntype, |
| const std::string | pseudo_dir, | ||
| const std::string *const | pspot_fn = nullptr, |
||
| const std::vector< double > | screening_coeffs = std::vector<double>(), |
||
| const double | qo_thr = 1e-10, |
||
| const std::ofstream & | ofs = std::ofstream(), |
||
| const int | rank = 0 |
||
| ) |
ntype
charges
slater_screening
nmax
qo_thr
rank
ntype
pseudo_dir
pspot_fn
screening_coeffs
qo_thr
rank
| void toQO::build_hydrogen | ( | const int | ntype, |
| const double *const | charges, | ||
| const bool | slater_screening, | ||
| const int *const | nmax, | ||
| const double | qo_thr, | ||
| const int | rank | ||
| ) |
| void toQO::build_nao | ( | const int | ntype, |
| const std::string | orbital_dir, | ||
| const std::string *const | orbital_fn, | ||
| const int | rank | ||
| ) |
| void toQO::build_pswfc | ( | const int | ntype, |
| const std::string | pseudo_dir, | ||
| const std::string *const | pspot_fn, | ||
| const double *const | screening_coeffs, | ||
| const double | qo_thr, | ||
| const int | rank | ||
| ) |
| void toQO::build_szv | ( | ) |
| ModuleBase::Vector3< double > toQO::cal_two_center_vector | ( | ModuleBase::Vector3< double > | rij, |
| ModuleBase::Vector3< int > | R | ||
| ) |
calculate vectors connecting all atom pairs that needed to calculate their overlap
| void toQO::calculate | ( | ) |
| void toQO::calculate_ovlpk | ( | int | ik | ) |
| void toQO::calculate_ovlpR | ( | const int | iR | ) |
|
inline |
| void toQO::deallocate_ovlp | ( | const bool & | is_R = false | ) |
| template void toQO::eliminate_duplicate_vector3< int > | ( | std::vector< ModuleBase::Vector3< T > > & | vector3s | ) |
eliminate duplicate vectors in a vector of vector3
| void toQO::initialize | ( | const std::string & | out_dir, |
| const std::string & | pseudo_dir, | ||
| const std::string & | orbital_dir, | ||
| const UnitCell * | p_ucell, | ||
| const std::vector< ModuleBase::Vector3< double > > & | kvecs_d, | ||
| std::ofstream & | ofs_running, | ||
| const int & | rank, | ||
| const int & | nranks | ||
| ) |
|
inline |
|
inline |
|
inline |
| double toQO::norm2_rij_supercell | ( | ModuleBase::Vector3< double > | rij, |
| int | n1, | ||
| int | n2, | ||
| int | n3 | ||
| ) |
get vector squared norm in supercell
|
inline |
|
inline |
|
inline |
| bool toQO::orbital_filter_out | ( | const int & | itype, |
| const int & | l, | ||
| const int & | izeta | ||
| ) |
when indexing, select where one orbital is really included in the two-center integral
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void toQO::radialcollection_indexing | ( | const RadialCollection & | radcol, |
| const std::vector< int > & | natoms, | ||
| const bool & | with_filter, | ||
| std::map< std::tuple< int, int, int, int, int >, int > & | index_map, | ||
| std::map< int, std::tuple< int, int, int, int, int > > & | index_map_reverse | ||
| ) |
build bidirectional map indexing for one single RadialCollection object, which is an axis of two-center-integral table.
from (it,ia,l,zeta,m) to index and vice versa
| std::vector< int > toQO::rcut_to_supercell_index | ( | double | rcut, |
| ModuleBase::Vector3< double > | a, | ||
| ModuleBase::Vector3< double > | b, | ||
| ModuleBase::Vector3< double > | c | ||
| ) |
core algorithm to scan supercells, find the maximal supercell according to present cutoff radius
| void toQO::read_ovlp | ( | const std::string & | dir, |
| const int & | nrows, | ||
| const int & | ncols, | ||
| const bool & | is_R = false, |
||
| const int & | imat = 0 |
||
| ) |
| void toQO::read_structures | ( | const UnitCell * | p_ucell, |
| const std::vector< ModuleBase::Vector3< double > > & | kvecs_d, | ||
| const int & | iproc, | ||
| const int & | nprocs | ||
| ) |
| void toQO::scan_supercell | ( | const int & | iproc, |
| const int & | nprocs | ||
| ) |
get all possible (n1n2n3) defining supercell and scatter if MPI enabled
| std::vector< ModuleBase::Vector3< int > > toQO::scan_supercell_for_atom | ( | int | it, |
| int | ia, | ||
| int | start_it = 0, |
||
| int | start_ia = 0 |
||
| ) |
this is a basic functional for scanning (ijR) pair for one certain i, return Rs
|
inline |
|
inline |
|
inline |
|
inline |
| template void toQO::write_ovlp< double > | ( | const std::string & | dir, |
| const std::vector< T > & | matrix, | ||
| const int & | nrows, | ||
| const int & | ncols, | ||
| const bool & | is_R = false, |
||
| const int & | imat = 0 |
||
| ) |
| void toQO::write_supercells | ( | ) |
write supercells information to file
| void toQO::zero_out_ovlps | ( | const bool & | is_R | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |