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

#include <psi_init.h>

Collaboration diagram for psi::PSIInit< T, Device >:

Public Member Functions

 PSIInit (const std::string &init_wfc_in, const std::string &ks_solver_in, const std::string &basis_type_in, const int &rank, const UnitCell &ucell, const Structure_Factor &sf, const K_Vectors &kv_in, const pseudopot_cell_vnl &nlpp, const ModulePW::PW_Basis_K &pw_wfc)
 
 ~PSIInit ()
 
void prepare_init (const int &random_seed)
 prepare the wavefunction initialization
 
void initialize_psi (Psi< std::complex< double > > *psi, psi::Psi< T, Device > *kspw_psi, hamilt::Hamilt< T, Device > *p_hamilt, std::ofstream &ofs_running)
 initialize the wavefunction
 
void initialize_lcao_in_pw (Psi< T > *psi_local, std::ofstream &ofs_running)
 initialize NAOs in plane wave basis, only for LCAO_IN_PW
 

Public Attributes

std::unique_ptr< psi_initializer< T > > psi_initer
 

Private Types

using syncmem_complex_op = base_device::memory::synchronize_memory_op< T, Device, Device >
 
using syncmem_h2d_op = base_device::memory::synchronize_memory_op< T, Device, base_device::DEVICE_CPU >
 

Private Attributes

std::string init_wfc = "none"
 
std::string ks_solver = "none"
 
std::string basis_type = "none"
 
const ModulePW::PW_Basis_Kpw_wfc
 
const K_Vectorskv
 
const UnitCellucell
 
const Structure_Factorsf
 
const pseudopot_cell_vnlnlpp
 
Device * ctx = {}
 device
 
base_device::DEVICE_CPU * cpu_ctx = {}
 CPU device.
 
const int rank
 MPI rank.
 

Member Typedef Documentation

◆ syncmem_complex_op

template<typename T , typename Device = base_device::DEVICE_CPU>
using psi::PSIInit< T, Device >::syncmem_complex_op = base_device::memory::synchronize_memory_op<T, Device, Device>
private

◆ syncmem_h2d_op

template<typename T , typename Device = base_device::DEVICE_CPU>
using psi::PSIInit< T, Device >::syncmem_h2d_op = base_device::memory::synchronize_memory_op<T, Device, base_device::DEVICE_CPU>
private

Constructor & Destructor Documentation

◆ PSIInit()

template<typename T , typename Device >
psi::PSIInit< T, Device >::PSIInit ( const std::string &  init_wfc_in,
const std::string &  ks_solver_in,
const std::string &  basis_type_in,
const int &  rank,
const UnitCell ucell,
const Structure_Factor sf,
const K_Vectors kv_in,
const pseudopot_cell_vnl nlpp,
const ModulePW::PW_Basis_K pw_wfc 
)

◆ ~PSIInit()

template<typename T , typename Device = base_device::DEVICE_CPU>
psi::PSIInit< T, Device >::~PSIInit ( )
inline

Member Function Documentation

◆ initialize_lcao_in_pw()

template<typename T , typename Device >
void psi::PSIInit< T, Device >::initialize_lcao_in_pw ( Psi< T > *  psi_local,
std::ofstream &  ofs_running 
)

initialize NAOs in plane wave basis, only for LCAO_IN_PW

Here is the call graph for this function:

◆ initialize_psi()

template<typename T , typename Device >
void psi::PSIInit< T, Device >::initialize_psi ( Psi< std::complex< double > > *  psi,
psi::Psi< T, Device > *  kspw_psi,
hamilt::Hamilt< T, Device > *  p_hamilt,
std::ofstream &  ofs_running 
)

initialize the wavefunction

Parameters
psistore the wavefunction
p_hamiltHamiltonian operator
ofs_runningoutput stream for running information
is_already_initpsiwhether psi has been initialized

Fix the wavefunction to initialize at given kpoint

Update Hamiltonian from other kpoint to the given one

initialize psi_cpu

Here is the call graph for this function:

◆ prepare_init()

template<typename T , typename Device >
void psi::PSIInit< T, Device >::prepare_init ( const int &  random_seed)

prepare the wavefunction initialization

Member Data Documentation

◆ basis_type

template<typename T , typename Device = base_device::DEVICE_CPU>
std::string psi::PSIInit< T, Device >::basis_type = "none"
private

◆ cpu_ctx

template<typename T , typename Device = base_device::DEVICE_CPU>
base_device::DEVICE_CPU* psi::PSIInit< T, Device >::cpu_ctx = {}
private

CPU device.

◆ ctx

template<typename T , typename Device = base_device::DEVICE_CPU>
Device* psi::PSIInit< T, Device >::ctx = {}
private

device

◆ init_wfc

template<typename T , typename Device = base_device::DEVICE_CPU>
std::string psi::PSIInit< T, Device >::init_wfc = "none"
private

◆ ks_solver

template<typename T , typename Device = base_device::DEVICE_CPU>
std::string psi::PSIInit< T, Device >::ks_solver = "none"
private

◆ kv

template<typename T , typename Device = base_device::DEVICE_CPU>
const K_Vectors& psi::PSIInit< T, Device >::kv
private

◆ nlpp

template<typename T , typename Device = base_device::DEVICE_CPU>
const pseudopot_cell_vnl& psi::PSIInit< T, Device >::nlpp
private

◆ psi_initer

template<typename T , typename Device = base_device::DEVICE_CPU>
std::unique_ptr<psi_initializer<T> > psi::PSIInit< T, Device >::psi_initer

◆ pw_wfc

template<typename T , typename Device = base_device::DEVICE_CPU>
const ModulePW::PW_Basis_K& psi::PSIInit< T, Device >::pw_wfc
private

◆ rank

template<typename T , typename Device = base_device::DEVICE_CPU>
const int psi::PSIInit< T, Device >::rank
private

MPI rank.

◆ sf

template<typename T , typename Device = base_device::DEVICE_CPU>
const Structure_Factor& psi::PSIInit< T, Device >::sf
private

◆ ucell

template<typename T , typename Device = base_device::DEVICE_CPU>
const UnitCell& psi::PSIInit< T, Device >::ucell
private

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