51 const std::vector<double>& screening_coeffs);
59 const std::string& pseudo_dir,
60 const std::string& orbital_dir,
63 std::ofstream& ofs_running,
79 const std::string orbital_dir,
80 const std::string*
const orbital_fn,
84 const std::string pseudo_dir,
85 const std::string*
const pspot_fn =
nullptr,
86 const std::vector<double> screening_coeffs = std::vector<double>(),
87 const double qo_thr = 1e-10,
88 const std::ofstream& ofs = std::ofstream(),
93 const bool slater_screening,
94 const int*
const nmax,
99 const std::string pseudo_dir,
100 const std::string*
const pspot_fn,
101 const double*
const screening_coeffs,
113 template <
typename T>
115 const std::vector<T>& matrix,
118 const bool& is_R =
false,
119 const int& imat = 0);
124 const bool& is_R =
false,
125 const int& imat = 0);
129 const std::vector<int>&,
131 std::map<std::tuple<int,int,int,int,int>,
int>&,
132 std::map<
int,std::tuple<int,int,int,int,int>>&);
177 template <
typename T>
197 std::vector<std::complex<double>>
ovlpk()
const {
return ovlpk_; }
224 std::unique_ptr<RadialCollection>
nao_;
225 std::unique_ptr<RadialCollection>
ao_;
228 std::vector<std::complex<double>>
ovlpk_;
230 std::map<std::tuple<int,int,int,int,int>,
int>
index_ao_;
3 elements vector
Definition vector3.h:22
A class that holds all numerical radial functions of the same kind.
Definition radial_collection.h:18
const UnitCell * p_ucell_
Definition to_qo.h:218
std::string qo_basis_
Definition to_qo.h:206
void eliminate_duplicate_vector3(std::vector< ModuleBase::Vector3< T > > &vector3s)
eliminate duplicate vectors in a vector of vector3
Definition to_qo_structures.cpp:92
std::vector< int > iRs_
Definition to_qo.h:219
double norm2_rij_supercell(ModuleBase::Vector3< double > rij, int n1, int n2, int n3)
get vector squared norm in supercell
Definition to_qo_structures.cpp:178
int nR_tot_
Definition to_qo.h:238
std::vector< std::string > strategies() const
Definition to_qo.h:186
static void bcast_stdvector_ofvector3double(std::vector< ModuleBase::Vector3< double > > &vec, const int rank)
Definition to_qo_mpi.cpp:36
void calculate_ovlpR(const int iR)
Definition to_qo_kernel.cpp:303
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)
Definition to_qo_kernel.cpp:515
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)
Definition to_qo_kernel.cpp:213
std::map< int, std::tuple< int, int, int, int, int > > rindex_nao_
Definition to_qo.h:233
std::vector< ModuleBase::Vector3< double > > kvecs_d() const
Definition to_qo.h:202
int nR_
Definition to_qo.h:237
~toQO()
Definition to_qo_kernel.cpp:22
void build_szv()
Definition to_qo_kernel.cpp:248
double ovlpR(const int i, const int j) const
Definition to_qo.h:196
std::string orbital_dir_
Definition to_qo.h:213
std::vector< ModuleBase::Vector3< int > > supercells() const
Definition to_qo.h:194
void read_ovlp(const std::string &dir, const int &nrows, const int &ncols, const bool &is_R=false, const int &imat=0)
Definition to_qo_kernel.cpp:582
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)
Definition to_qo_kernel.cpp:194
int ntype_
Definition to_qo.h:243
std::vector< std::string > symbols_
Definition to_qo.h:245
double qo_thr_
Definition to_qo.h:208
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
Definition to_qo_kernel.cpp:151
int nR() const
Definition to_qo.h:191
std::vector< int > nmax_
Definition to_qo.h:247
std::vector< int > na_
Definition to_qo.h:244
int nchi_
Definition to_qo.h:239
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)
Definition to_qo_kernel.cpp:28
int nprocs_
Definition to_qo.h:216
int ntype() const
Definition to_qo.h:183
std::vector< double > screening_coeffs_
Definition to_qo.h:209
std::map< std::tuple< int, int, int, int, int >, int > index_nao_
Definition to_qo.h:232
std::vector< ModuleBase::Vector3< double > > kvecs_d_
Definition to_qo.h:222
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
Definition to_qo_structures.cpp:267
void write_supercells()
write supercells information to file
Definition to_qo_structures.cpp:283
std::vector< std::complex< double > > ovlpk_
Definition to_qo.h:228
std::vector< double > ovlpR() const
Definition to_qo.h:195
int nks_
Definition to_qo.h:235
std::vector< std::string > symbols() const
Definition to_qo.h:199
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-cent...
Definition to_qo_kernel.cpp:468
int nphi_
Definition to_qo.h:240
std::vector< int > iks_
Definition to_qo.h:221
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
Definition to_qo_structures.cpp:111
std::string strategy(const int itype) const
Definition to_qo.h:187
std::vector< double > charges_
Definition to_qo.h:246
int nchi() const
Definition to_qo.h:192
std::vector< double > charges() const
Definition to_qo.h:200
std::map< std::tuple< int, int, int, int, int >, int > index_ao_
Definition to_qo.h:230
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)
Definition to_qo_kernel.cpp:261
void calculate()
Definition to_qo_kernel.cpp:387
UnitCell * p_ucell() const
Definition to_qo.h:188
static void bcast_stdvector_ofvector3int(std::vector< ModuleBase::Vector3< int > > &vec, const int rank)
Definition to_qo_mpi.cpp:6
void build_nao(const int ntype, const std::string orbital_dir, const std::string *const orbital_fn, const int rank)
Definition to_qo_kernel.cpp:108
std::string out_dir_
Definition to_qo.h:211
std::complex< double > ovlpk(const int i, const int j) const
Definition to_qo.h:198
std::string qo_basis() const
Definition to_qo.h:185
int iproc_
Definition to_qo.h:215
std::map< int, std::tuple< int, int, int, int, int > > rindex_ao_
Definition to_qo.h:231
std::vector< std::complex< double > > ovlpk() const
Definition to_qo.h:197
int nks_tot_
Definition to_qo.h:236
RadialCollection * p_ao() const
Definition to_qo.h:190
RadialCollection * p_nao() const
Definition to_qo.h:189
std::unique_ptr< TwoCenterIntegrator > overlap_calculator_
Definition to_qo.h:226
std::vector< std::string > strategies_
Definition to_qo.h:207
void zero_out_ovlps(const bool &is_R)
Definition to_qo_kernel.cpp:459
atom_in atom_database_
Definition to_qo.h:242
void allocate_ovlp(const bool &is_R=false)
Definition to_qo_kernel.cpp:436
std::vector< ModuleBase::Vector3< int > > supercells_
Definition to_qo.h:220
void calculate_ovlpk(int ik)
Definition to_qo_kernel.cpp:338
std::unique_ptr< RadialCollection > nao_
Definition to_qo.h:224
std::unique_ptr< RadialCollection > ao_
Definition to_qo.h:225
void deallocate_ovlp(const bool &is_R=false)
Definition to_qo_kernel.cpp:445
atom_in atom_database() const
Definition to_qo.h:201
int nks() const
Definition to_qo.h:184
std::string pseudo_dir_
Definition to_qo.h:212
std::vector< double > ovlpR_
Definition to_qo.h:227
int nphi() const
Definition to_qo.h:193
void append_ovlpR_eiRk(int ik, int iR)
Definition to_qo_kernel.cpp:422
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
Definition to_qo_structures.cpp:163
void read_structures(const UnitCell *p_ucell, const std::vector< ModuleBase::Vector3< double > > &kvecs_d, const int &iproc, const int &nprocs)
Definition to_qo_structures.cpp:5
void scan_supercell(const int &iproc, const int &nprocs)
get all possible (n1n2n3) defining supercell and scatter if MPI enabled
Definition to_qo_structures.cpp:193