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
hamilt::Velocity< FPTYPE, Device > Class Template Reference

#include <velocity_pw.h>

Collaboration diagram for hamilt::Velocity< FPTYPE, Device >:

Public Member Functions

 Velocity (const ModulePW::PW_Basis_K *wfcpw_in, const int *isk_in, pseudopot_cell_vnl *ppcell_in, const UnitCell *ucell_in, const bool nonlocal_in=true)
 
 ~Velocity ()
 
void init (const int ik_in)
 
void act (const psi::Psi< std::complex< FPTYPE >, Device > *psi_in, const int n_npwx, const std::complex< FPTYPE > *tmpsi_in, std::complex< FPTYPE > *tmvpsi, const bool add=false) const
 calculate \hat{v}|\psi>
 

Public Attributes

bool nonlocal = true
 

Private Types

using Complex = std::complex< FPTYPE >
 
using resmem_var_op = base_device::memory::resize_memory_op< FPTYPE, Device >
 
using delmem_var_op = base_device::memory::delete_memory_op< FPTYPE, Device >
 
using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op< FPTYPE, Device, base_device::DEVICE_CPU >
 
using castmem_var_h2d_op = base_device::memory::cast_memory_op< FPTYPE, double, Device, base_device::DEVICE_CPU >
 
using resmem_complex_op = base_device::memory::resize_memory_op< std::complex< FPTYPE >, Device >
 
using setmem_complex_op = base_device::memory::set_memory_op< std::complex< FPTYPE >, Device >
 
using delmem_complex_op = base_device::memory::delete_memory_op< std::complex< FPTYPE >, Device >
 
using castmem_complex_h2d_op = base_device::memory::cast_memory_op< std::complex< FPTYPE >, std::complex< double >, Device, base_device::DEVICE_CPU >
 
using syncmem_complex_d2h_op = base_device::memory::synchronize_memory_op< std::complex< FPTYPE >, base_device::DEVICE_CPU, Device >
 
using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op< std::complex< FPTYPE >, Device, base_device::DEVICE_CPU >
 

Private Attributes

const ModulePW::PW_Basis_Kwfcpw = nullptr
 
const int * isk = nullptr
 
pseudopot_cell_vnlppcell = nullptr
 
const UnitCellucell = nullptr
 
int ik =0
 
double tpiba =0.0
 
FPTYPE * gx_ = nullptr
 [Device, npwx] x component of G+K
 
FPTYPE * gy_ = nullptr
 [Device, npwx] y component of G+K
 
FPTYPE * gz_ = nullptr
 [Device, npwx] z component of G+K
 
std::complex< FPTYPE > * vkb_ = nullptr
 [Device, nkb * npwk_max] nonlocal pseudopotential vkb
 
std::complex< FPTYPE > * gradvkb_ = nullptr
 [Device, 3*nkb * npwk_max] gradient of nonlocal pseudopotential gradvkb
 
FPTYPE * deeq_ = nullptr
 [Device] D matrix for nonlocal pseudopotential
 

Member Typedef Documentation

◆ castmem_complex_h2d_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::castmem_complex_h2d_op = base_device::memory::cast_memory_op<std::complex<FPTYPE>, std::complex<double>, Device, base_device::DEVICE_CPU>
private

◆ castmem_var_h2d_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::castmem_var_h2d_op = base_device::memory::cast_memory_op<FPTYPE, double, Device, base_device::DEVICE_CPU>
private

◆ Complex

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::Complex = std::complex<FPTYPE>
private

◆ delmem_complex_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::delmem_complex_op = base_device::memory::delete_memory_op<std::complex<FPTYPE>, Device>
private

◆ delmem_var_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::delmem_var_op = base_device::memory::delete_memory_op<FPTYPE, Device>
private

◆ resmem_complex_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::resmem_complex_op = base_device::memory::resize_memory_op<std::complex<FPTYPE>, Device>
private

◆ resmem_var_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::resmem_var_op = base_device::memory::resize_memory_op<FPTYPE, Device>
private

◆ setmem_complex_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::setmem_complex_op = base_device::memory::set_memory_op<std::complex<FPTYPE>, Device>
private

◆ syncmem_complex_d2h_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::syncmem_complex_d2h_op = base_device::memory::synchronize_memory_op<std::complex<FPTYPE>, base_device::DEVICE_CPU, Device>
private

◆ syncmem_complex_h2d_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op<std::complex<FPTYPE>, Device, base_device::DEVICE_CPU>
private

◆ syncmem_var_h2d_op

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
using hamilt::Velocity< FPTYPE, Device >::syncmem_var_h2d_op = base_device::memory::synchronize_memory_op<FPTYPE, Device, base_device::DEVICE_CPU>
private

Constructor & Destructor Documentation

◆ Velocity()

template<typename FPTYPE , typename Device >
hamilt::Velocity< FPTYPE, Device >::Velocity ( const ModulePW::PW_Basis_K wfcpw_in,
const int *  isk_in,
pseudopot_cell_vnl ppcell_in,
const UnitCell ucell_in,
const bool  nonlocal_in = true 
)
Here is the call graph for this function:

◆ ~Velocity()

template<typename FPTYPE , typename Device >
hamilt::Velocity< FPTYPE, Device >::~Velocity ( )

Member Function Documentation

◆ act()

template<typename FPTYPE , typename Device >
void hamilt::Velocity< FPTYPE, Device >::act ( const psi::Psi< std::complex< FPTYPE >, Device > *  psi_in,
const int  n_npwx,
const std::complex< FPTYPE > *  tmpsi_in,
std::complex< FPTYPE > *  tmvpsi,
const bool  add = false 
) const

calculate \hat{v}|\psi>

Parameters
psi_inPsi class which contains some information
n_npwxnbands * NPOL
tmpsi_in|\psi_i> size: n_npwx*npwx
tmvpsi\hat{v}|\psi> size: 3*n_npwx*npwx
addtrue : tmvpsi = tmvpsi + v|\psi> false: tmvpsi = v|\psi>

<[Device, n_npwx * nkb] <\beta|\psi>

<[Device, n_npwx * 3*nkb] <\nabla\beta|\psi>

<[Device, nkb * n_npwx] sum of becp1

<[Device, 3*nkb * n_npwx] sum of becp2

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

◆ init()

template<typename FPTYPE , typename Device >
void hamilt::Velocity< FPTYPE, Device >::init ( const int  ik_in)
Here is the caller graph for this function:

Member Data Documentation

◆ deeq_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
FPTYPE* hamilt::Velocity< FPTYPE, Device >::deeq_ = nullptr
private

[Device] D matrix for nonlocal pseudopotential

◆ gradvkb_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
std::complex<FPTYPE>* hamilt::Velocity< FPTYPE, Device >::gradvkb_ = nullptr
private

[Device, 3*nkb * npwk_max] gradient of nonlocal pseudopotential gradvkb

◆ gx_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
FPTYPE* hamilt::Velocity< FPTYPE, Device >::gx_ = nullptr
private

[Device, npwx] x component of G+K

◆ gy_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
FPTYPE* hamilt::Velocity< FPTYPE, Device >::gy_ = nullptr
private

[Device, npwx] y component of G+K

◆ gz_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
FPTYPE* hamilt::Velocity< FPTYPE, Device >::gz_ = nullptr
private

[Device, npwx] z component of G+K

◆ ik

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
int hamilt::Velocity< FPTYPE, Device >::ik =0
private

◆ isk

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
const int* hamilt::Velocity< FPTYPE, Device >::isk = nullptr
private

◆ nonlocal

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
bool hamilt::Velocity< FPTYPE, Device >::nonlocal = true

◆ ppcell

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
pseudopot_cell_vnl* hamilt::Velocity< FPTYPE, Device >::ppcell = nullptr
private

◆ tpiba

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
double hamilt::Velocity< FPTYPE, Device >::tpiba =0.0
private

◆ ucell

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
const UnitCell* hamilt::Velocity< FPTYPE, Device >::ucell = nullptr
private

◆ vkb_

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
std::complex<FPTYPE>* hamilt::Velocity< FPTYPE, Device >::vkb_ = nullptr
private

[Device, nkb * npwk_max] nonlocal pseudopotential vkb

◆ wfcpw

template<typename FPTYPE , typename Device = base_device::DEVICE_CPU>
const ModulePW::PW_Basis_K* hamilt::Velocity< FPTYPE, Device >::wfcpw = nullptr
private

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