ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | List of all members
psi_initializer_nao< T > Class Template Reference

#include <psi_initializer_nao.h>

Inheritance diagram for psi_initializer_nao< T >:
Collaboration diagram for psi_initializer_nao< T >:

Public Member Functions

 psi_initializer_nao ()
 
 ~psi_initializer_nao ()
 
virtual void init_psig (T *psig, const int &ik) override
 CENTRAL FUNCTION: init psi in pw basis.
 
virtual void initialize (const Structure_Factor *, const ModulePW::PW_Basis_K *, const UnitCell *, const K_Vectors *, const int &=1, const pseudopot_cell_vnl *=nullptr, const int &=0) override
 initialize the psi_initializer with external data and methods
 
void read_external_orbs (const std::string *orbital_files, const int &rank)
 
virtual void tabulate () override
 CENTRAL FUNCTION: calculate the interpolate table if needed.
 
std::vector< std::string > external_orbs () const
 
std::vector< std::vector< int > > nr () const
 
std::vector< int > nr (const int &itype) const
 
int nr (const int &itype, const int &ichi) const
 
std::vector< std::vector< std::vector< double > > > chi () const
 
std::vector< std::vector< double > > chi (const int &itype) const
 
std::vector< double > chi (const int &itype, const int &ichi) const
 
double chi (const int &itype, const int &ichi, const int &ir) const
 
std::vector< std::vector< std::vector< double > > > rgrid () const
 
std::vector< std::vector< double > > rgrid (const int &itype) const
 
std::vector< double > rgrid (const int &itype, const int &ichi) const
 
double rgrid (const int &itype, const int &ichi, const int &ir) const
 
- Public Member Functions inherited from psi_initializer< T >
 psi_initializer ()
 
virtual ~psi_initializer ()
 
std::string method () const
 
int nbands_start () const
 
int nbands_complem () const
 
template<typename U >
std::enable_if< std::is_same< U, float >::value, U >::type cast_to_T (const std::complex< double > in)
 
template<typename U >
std::enable_if< std::is_same< U, double >::value, U >::type cast_to_T (const std::complex< double > in)
 
template<typename U >
std::enable_if< std::is_same< U, std::complex< float > >::value, U >::type cast_to_T (const std::complex< double > in)
 
template<typename U >
std::enable_if< std::is_same< U, std::complex< double > >::value, U >::type cast_to_T (const std::complex< double > in)
 

Protected Member Functions

void allocate_ao_table ()
 allocate memory for overlap table
 
- Protected Member Functions inherited from psi_initializer< T >
void stick_to_pool (Real *stick, const int &ir, Real *out) const
 mapping from (ix, iy) to is
 
void random_t (T *psi, const int iw_start, const int iw_end, const int ik, const int mode=1)
 mode, 0 for rr*exp(i*arg), 1 for rr/(1+gk2)*exp(i*arg)
 

Protected Attributes

std::vector< std::string > orbital_files_
 
std::unique_ptr< ModuleBase::CubicSplinecubspl_
 cubic spline for interpolation
 
ModuleBase::realArray projmap_
 radial map, [itype][l][izeta] -> i
 
std::vector< std::vector< int > > nr_
 number of realspace grids per type per chi, [itype][ichi]
 
std::vector< std::vector< std::vector< double > > > chi_
 data of numerical atomic orbital per type per chi per position, [itype][ichi][ir]
 
std::vector< std::vector< std::vector< double > > > rgrid_
 r of numerical atomic orbital per type per chi per position, [itype][ichi][ir]
 
ModuleBase::SphericalBesselTransformer sbt
 useful for atomic-like methods
 
- Protected Attributes inherited from psi_initializer< T >
const Structure_Factorsf_ = nullptr
 Structure_Factor.
 
const ModulePW::PW_Basis_Kpw_wfc_ = nullptr
 use |k+G>, |G>, getgpluskcar and so on in PW_Basis_K
 
const UnitCellp_ucell_ = nullptr
 UnitCell.
 
const K_Vectorsp_kv = nullptr
 Parallel_Kpoints.
 
const pseudopot_cell_vnlp_pspot_nl_ = nullptr
 pseudopot_cell_vnl
 
int random_seed_ = 1
 random seed, shared by random, atomic+random, nao+random
 
std::vector< int > ixy2is_
 used by stick_to_pool function
 
int mem_saver_ = 0
 if save memory, only for nscf
 
std::string method_ = "none"
 method name
 
int nbands_complem_ = 0
 complement number of bands, which is nbands_start_ - ucell.natomwfc
 
double mixing_coef_ = 0
 mixing coefficient for atomic+random and nao+random
 
int nbands_start_ = 0
 starting nbands, which is no less than PARAM.inp.nbands
 

Private Types

using Real = typename GetTypeReal< T >::type
 

Member Typedef Documentation

◆ Real

template<typename T >
using psi_initializer_nao< T >::Real = typename GetTypeReal<T>::type
private

Constructor & Destructor Documentation

◆ psi_initializer_nao()

template<typename T >
psi_initializer_nao< T >::psi_initializer_nao ( )
inline

◆ ~psi_initializer_nao()

template<typename T >
psi_initializer_nao< T >::~psi_initializer_nao ( )
inline

Member Function Documentation

◆ allocate_ao_table()

template<typename T >
void psi_initializer_nao< T >::allocate_ao_table ( )
protected

allocate memory for overlap table

Here is the call graph for this function:

◆ chi() [1/4]

template<typename T >
std::vector< std::vector< std::vector< double > > > psi_initializer_nao< T >::chi ( ) const
inline

◆ chi() [2/4]

template<typename T >
std::vector< std::vector< double > > psi_initializer_nao< T >::chi ( const int &  itype) const
inline

◆ chi() [3/4]

template<typename T >
std::vector< double > psi_initializer_nao< T >::chi ( const int &  itype,
const int &  ichi 
) const
inline

◆ chi() [4/4]

template<typename T >
double psi_initializer_nao< T >::chi ( const int &  itype,
const int &  ichi,
const int &  ir 
) const
inline

◆ external_orbs()

template<typename T >
std::vector< std::string > psi_initializer_nao< T >::external_orbs ( ) const
inline

◆ init_psig()

template<typename T >
void psi_initializer_nao< T >::init_psig ( T psig,
const int &  ik 
)
overridevirtual

CENTRAL FUNCTION: init psi in pw basis.

Implements psi_initializer< T >.

Reimplemented in psi_initializer_nao_random< T >.

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

◆ initialize()

template<typename T >
void psi_initializer_nao< T >::initialize ( const Structure_Factor sf,
const ModulePW::PW_Basis_K pw_wfc,
const UnitCell p_ucell,
const K_Vectors p_kv_in,
const int &  random_seed = 1,
const pseudopot_cell_vnl p_pspot_nl = nullptr,
const int &  rank = 0 
)
overridevirtual

initialize the psi_initializer with external data and methods

Reimplemented from psi_initializer< T >.

Reimplemented in psi_initializer_nao_random< T >.

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

◆ nr() [1/3]

template<typename T >
std::vector< std::vector< int > > psi_initializer_nao< T >::nr ( ) const
inline

◆ nr() [2/3]

template<typename T >
std::vector< int > psi_initializer_nao< T >::nr ( const int &  itype) const
inline

◆ nr() [3/3]

template<typename T >
int psi_initializer_nao< T >::nr ( const int &  itype,
const int &  ichi 
) const
inline

◆ read_external_orbs()

template<typename T >
void psi_initializer_nao< T >::read_external_orbs ( const std::string *  orbital_files,
const int &  rank 
)
Here is the call graph for this function:

◆ rgrid() [1/4]

template<typename T >
std::vector< std::vector< std::vector< double > > > psi_initializer_nao< T >::rgrid ( ) const
inline

◆ rgrid() [2/4]

template<typename T >
std::vector< std::vector< double > > psi_initializer_nao< T >::rgrid ( const int &  itype) const
inline

◆ rgrid() [3/4]

template<typename T >
std::vector< double > psi_initializer_nao< T >::rgrid ( const int &  itype,
const int &  ichi 
) const
inline

◆ rgrid() [4/4]

template<typename T >
double psi_initializer_nao< T >::rgrid ( const int &  itype,
const int &  ichi,
const int &  ir 
) const
inline

◆ tabulate()

template<typename T >
void psi_initializer_nao< T >::tabulate ( )
overridevirtual

CENTRAL FUNCTION: calculate the interpolate table if needed.

Reimplemented from psi_initializer< T >.

Here is the call graph for this function:

Member Data Documentation

◆ chi_

template<typename T >
std::vector<std::vector<std::vector<double> > > psi_initializer_nao< T >::chi_
protected

data of numerical atomic orbital per type per chi per position, [itype][ichi][ir]

◆ cubspl_

template<typename T >
std::unique_ptr<ModuleBase::CubicSpline> psi_initializer_nao< T >::cubspl_
protected

cubic spline for interpolation

◆ nr_

template<typename T >
std::vector<std::vector<int> > psi_initializer_nao< T >::nr_
protected

number of realspace grids per type per chi, [itype][ichi]

◆ orbital_files_

template<typename T >
std::vector<std::string> psi_initializer_nao< T >::orbital_files_
protected

◆ projmap_

template<typename T >
ModuleBase::realArray psi_initializer_nao< T >::projmap_
protected

radial map, [itype][l][izeta] -> i

◆ rgrid_

template<typename T >
std::vector<std::vector<std::vector<double> > > psi_initializer_nao< T >::rgrid_
protected

r of numerical atomic orbital per type per chi per position, [itype][ichi][ir]

◆ sbt

template<typename T >
ModuleBase::SphericalBesselTransformer psi_initializer_nao< T >::sbt
protected

useful for atomic-like methods


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