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< T > Class Template Referenceabstract

#include <psi_initializer.h>

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

Public Member Functions

 psi_initializer ()
 
virtual ~psi_initializer ()
 
virtual void initialize (const Structure_Factor *, const ModulePW::PW_Basis_K *, const UnitCell *, const K_Vectors *=nullptr, const int &=1, const pseudopot_cell_vnl *=nullptr, const int &=0)
 initialize the psi_initializer with external data and methods
 
virtual void tabulate ()
 CENTRAL FUNCTION: calculate the interpolate table if needed.
 
virtual void init_psig (T *psig, const int &ik)=0
 CENTRAL FUNCTION: init psi in pw basis.
 
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 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

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< T >::Real = typename GetTypeReal<T>::type
private

Constructor & Destructor Documentation

◆ psi_initializer()

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

◆ ~psi_initializer()

template<typename T >
virtual psi_initializer< T >::~psi_initializer ( )
inlinevirtual

Member Function Documentation

◆ cast_to_T() [1/4]

template<typename T >
template<typename U >
std::enable_if< std::is_same< U, float >::value, U >::type psi_initializer< T >::cast_to_T ( const std::complex< double >  in)
inline

◆ cast_to_T() [2/4]

template<typename T >
template<typename U >
std::enable_if< std::is_same< U, double >::value, U >::type psi_initializer< T >::cast_to_T ( const std::complex< double >  in)
inline

◆ cast_to_T() [3/4]

template<typename T >
template<typename U >
std::enable_if< std::is_same< U, std::complex< float > >::value, U >::type psi_initializer< T >::cast_to_T ( const std::complex< double >  in)
inline

◆ cast_to_T() [4/4]

template<typename T >
template<typename U >
std::enable_if< std::is_same< U, std::complex< double > >::value, U >::type psi_initializer< T >::cast_to_T ( const std::complex< double >  in)
inline

◆ init_psig()

template<typename T >
virtual void psi_initializer< T >::init_psig ( T psig,
const int &  ik 
)
pure virtual

◆ initialize()

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

initialize the psi_initializer with external data and methods

Reimplemented in psi_initializer_atomic< T >, psi_initializer_atomic_random< T >, psi_initializer_file< T >, psi_initializer_nao< T >, psi_initializer_nao_random< T >, and psi_initializer_random< T >.

Here is the caller graph for this function:

◆ method()

template<typename T >
std::string psi_initializer< T >::method ( ) const
inline

◆ nbands_complem()

template<typename T >
int psi_initializer< T >::nbands_complem ( ) const
inline

◆ nbands_start()

template<typename T >
int psi_initializer< T >::nbands_start ( ) const
inline

◆ random_t()

template<typename T >
void psi_initializer< T >::random_t ( T psi,
const int  iw_start,
const int  iw_end,
const int  ik,
const int  mode = 1 
)
protected

mode, 0 for rr*exp(i*arg), 1 for rr/(1+gk2)*exp(i*arg)

Parameters
[out]psipsi
iw_startiw_start, starting band index
iw_endiw_end, ending band index
ikik, kpoint index
Here is the call graph for this function:

◆ stick_to_pool()

template<typename T >
void psi_initializer< T >::stick_to_pool ( Real stick,
const int &  ir,
Real out 
) const
protected

mapping from (ix, iy) to is

Here is the call graph for this function:

◆ tabulate()

template<typename T >
virtual void psi_initializer< T >::tabulate ( )
inlinevirtual

CENTRAL FUNCTION: calculate the interpolate table if needed.

Reimplemented in psi_initializer_atomic< T >, and psi_initializer_nao< T >.

Member Data Documentation

◆ ixy2is_

template<typename T >
std::vector<int> psi_initializer< T >::ixy2is_
protected

used by stick_to_pool function

◆ mem_saver_

template<typename T >
int psi_initializer< T >::mem_saver_ = 0
protected

if save memory, only for nscf

◆ method_

template<typename T >
std::string psi_initializer< T >::method_ = "none"
protected

method name

◆ mixing_coef_

template<typename T >
double psi_initializer< T >::mixing_coef_ = 0
protected

mixing coefficient for atomic+random and nao+random

◆ nbands_complem_

template<typename T >
int psi_initializer< T >::nbands_complem_ = 0
protected

complement number of bands, which is nbands_start_ - ucell.natomwfc

◆ nbands_start_

template<typename T >
int psi_initializer< T >::nbands_start_ = 0
protected

starting nbands, which is no less than PARAM.inp.nbands

◆ p_kv

template<typename T >
const K_Vectors* psi_initializer< T >::p_kv = nullptr
protected

◆ p_pspot_nl_

template<typename T >
const pseudopot_cell_vnl* psi_initializer< T >::p_pspot_nl_ = nullptr
protected

◆ p_ucell_

template<typename T >
const UnitCell* psi_initializer< T >::p_ucell_ = nullptr
protected

◆ pw_wfc_

template<typename T >
const ModulePW::PW_Basis_K* psi_initializer< T >::pw_wfc_ = nullptr
protected

use |k+G>, |G>, getgpluskcar and so on in PW_Basis_K

◆ random_seed_

template<typename T >
int psi_initializer< T >::random_seed_ = 1
protected

random seed, shared by random, atomic+random, nao+random

◆ sf_

template<typename T >
const Structure_Factor* psi_initializer< T >::sf_ = nullptr
protected

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