SIRIUS 7.5.0
Electronic structure library and applications
Classes | Namespaces | Typedefs | Enumerations | Functions
wave_functions.hpp File Reference

Contains declaration and implementation of Wave_functions class. More...

Go to the source code of this file.

Classes

class  sirius::wf::band_range
 Describe a range of bands. More...
 
class  sirius::wf::spin_range
 Describe a range of spins. More...
 
class  sirius::wf::device_memory_guard
 Helper class to allocate and copy wave-functions to/from device. More...
 
class  sirius::wf::Wave_functions_base< T >
 Base class for the wave-functions. More...
 
class  sirius::wf::Wave_functions_mt< T >
 Wave-functions for the muffin-tin part of LAPW. More...
 
class  sirius::wf::Wave_functions< T >
 Wave-functions representation. More...
 
struct  sirius::wf::shuffle_to
 
class  sirius::wf::Wave_functions_fft< T >
 Wave-fucntions in the FFT-friendly distribution. More...
 

Namespaces

module  sirius
 Namespace of the SIRIUS library.
 
namespace  sirius::wf
 Namespace for the wave-functions.
 

Typedefs

using sirius::wf::spin_index = strong_type< int, struct __spin_index_tag >
 
using sirius::wf::band_index = strong_type< int, struct __band_index_tag >
 
using sirius::wf::num_bands = strong_type< int, struct __num_bands_tag >
 
using sirius::wf::num_spins = strong_type< int, struct __num_spins_tag >
 
using sirius::wf::num_mag_dims = strong_type< int, struct __num_mag_dims_tag >
 

Enumerations

enum class  copy_to : unsigned int { none = 0b0000 , device = 0b0001 , host = 0b0010 }
 

Functions

void sirius::add_square_sum_gpu_double (std::complex< double > const *wf__, int num_rows_loc__, int nwf__, int reduced__, int mpi_rank__, double *result__)
 
void sirius::add_square_sum_gpu_float (std::complex< float > const *wf__, int num_rows_loc__, int nwf__, int reduced__, int mpi_rank__, float *result__)
 
void sirius::scale_matrix_columns_gpu_double (int nrow__, int ncol__, std::complex< double > *mtrx__, double *a__)
 
void sirius::scale_matrix_columns_gpu_float (int nrow__, int ncol__, std::complex< float > *mtrx__, float *a__)
 
void sirius::add_checksum_gpu_double (void const *wf__, int ld__, int num_rows_loc__, int nwf__, void *result__)
 
void sirius::add_checksum_gpu_float (void const *wf__, int ld__, int num_rows_loc__, int nwf__, void *result__)
 
void sirius::inner_diag_local_gpu_double_complex_double (void const *wf1__, int ld1__, void const *wf2__, int ld2__, int ngv_loc__, int nwf__, void *result__)
 
void sirius::inner_diag_local_gpu_double_double (void const *wf1__, int ld1__, void const *wf2__, int ld2__, int ngv_loc__, int nwf__, int reduced__, void *result__)
 
void sirius::axpby_gpu_double_complex_double (int nwf__, void const *alpha__, void const *x__, int ld1__, void const *beta__, void *y__, int ld2__, int ngv_loc__)
 
void sirius::axpby_gpu_double_double (int nwf__, void const *alpha__, void const *x__, int ld1__, void const *beta__, void *y__, int ld2__, int ngv_loc__)
 
void sirius::axpy_scatter_gpu_double_complex_double (int nwf__, void const *alpha__, void const *x__, int ld1__, void const *idx__, void *y__, int ld2__, int ngv_loc__)
 
void sirius::axpy_scatter_gpu_double_double (int nwf__, void const *alpha__, void const *x__, int ld1__, void const *idx__, void *y__, int ld2__, int ngv_loc__)
 
template<typename T >
auto sirius::checksum_gpu (std::complex< T > const *wf__, int ld__, int num_rows_loc__, int nwf__)
 Add checksum for the arrays on GPUs. More...
 
copy_to sirius::wf::operator| (copy_to a__, copy_to b__)
 
template<typename T , typename F >
static std::enable_if_t< std::is_scalar< F >::value, F > sirius::wf::inner_diag_local_aux (std::complex< T > z1__, std::complex< T > z2__)
 For real-type F (double or float). More...
 
template<typename T , typename F >
static std::enable_if_t<!std::is_scalar< F >::value, F > sirius::wf::inner_diag_local_aux (std::complex< T > z1__, std::complex< T > z2__)
 For complex-type F (complex<double> or complex<float>). More...
 
template<typename T , typename F >
static auto sirius::wf::inner_diag_local (sddk::memory_t mem__, wf::Wave_functions< T > const &lhs__, wf::Wave_functions_base< T > const &rhs__, wf::spin_range spins__, wf::num_bands num_wf__)
 
template<typename T , typename F >
auto sirius::wf::inner_diag (sddk::memory_t mem__, wf::Wave_functions< T > const &lhs__, wf::Wave_functions_base< T > const &rhs__, wf::spin_range spins__, wf::num_bands num_wf__)
 
template<typename T , typename F >
static std::enable_if_t< std::is_scalar< F >::value, std::complex< T > > sirius::wf::axpby_aux (F a__, std::complex< T > x__, F b__, std::complex< T > y__)
 For real-type F (double or float). More...
 
template<typename T , typename F >
static std::enable_if_t<!std::is_scalar< F >::value, std::complex< T > > sirius::wf::axpby_aux (F a__, std::complex< T > x__, F b__, std::complex< T > y__)
 For complex-type F (double or float). More...
 
template<typename T , typename F >
void sirius::wf::axpby (sddk::memory_t mem__, wf::spin_range spins__, wf::band_range br__, F const *alpha__, wf::Wave_functions< T > const *x__, F const *beta__, wf::Wave_functions< T > *y__)
 Perform y <- a * x + b * y type of operation. More...
 
template<typename T , typename F , typename G >
void sirius::wf::axpy_scatter (sddk::memory_t mem__, wf::spin_range spins__, F const *alphas__, Wave_functions< T > const *x__, G const *idx__, Wave_functions< T > *y__, int n__)
 
template<typename T , typename F = T>
void sirius::wf::copy (sddk::memory_t mem__, Wave_functions< T > const &in__, wf::spin_index s_in__, wf::band_range br_in__, Wave_functions< F > &out__, wf::spin_index s_out__, wf::band_range br_out__)
 Copy wave-functions. More...
 
template<typename T , typename F >
std::enable_if_t< std::is_same< T, real_type< F > >::value, void > sirius::wf::transform (::spla::Context &spla_ctx__, sddk::memory_t mem__, la::dmatrix< F > const &M__, int irow0__, int jcol0__, real_type< F > alpha__, Wave_functions< T > const &wf_in__, spin_index s_in__, band_range br_in__, real_type< F > beta__, Wave_functions< T > &wf_out__, spin_index s_out__, band_range br_out__)
 Apply linear transformation to the wave-functions. More...
 
template<typename T , typename F >
std::enable_if_t<!std::is_same< T, real_type< F > >::value, void > sirius::wf::transform (::spla::Context &spla_ctx__, sddk::memory_t mem__, la::dmatrix< F > const &M__, int irow0__, int jcol0__, real_type< F > alpha__, Wave_functions< T > const &wf_in__, spin_index s_in__, band_range br_in__, real_type< F > beta__, Wave_functions< T > &wf_out__, spin_index s_out__, band_range br_out__)
 
template<typename T >
void sirius::wf::scale_gamma_wf (sddk::memory_t mem__, wf::Wave_functions< T > const &wf__, wf::spin_range spins__, wf::band_range br__, T *scale__)
 Scale G=0 component of the wave-functions. More...
 
template<typename F , typename W , typename T >
std::enable_if_t< std::is_same< T, real_type< F > >::value, void > sirius::wf::inner (::spla::Context &spla_ctx__, sddk::memory_t mem__, spin_range spins__, W const &wf_i__, band_range br_i__, Wave_functions< T > const &wf_j__, band_range br_j__, la::dmatrix< F > &result__, int irow0__, int jcol0__)
 Compute inner product between the two sets of wave-functions. More...
 
template<typename T , typename F >
std::enable_if_t<!std::is_same< T, real_type< F > >::value, void > sirius::wf::inner (::spla::Context &spla_ctx__, sddk::memory_t mem__, spin_range spins__, Wave_functions< T > const &wf_i__, band_range br_i__, Wave_functions< T > const &wf_j__, band_range br_j__, la::dmatrix< F > &result__, int irow0__, int jcol0__)
 
template<typename T , typename F >
int sirius::wf::orthogonalize (::spla::Context &spla_ctx__, sddk::memory_t mem__, spin_range spins__, band_range br_old__, band_range br_new__, Wave_functions< T > const &wf_i__, Wave_functions< T > const &wf_j__, std::vector< Wave_functions< T > * > wfs__, la::dmatrix< F > &o__, Wave_functions< T > &tmp__, bool project_out__)
 Orthogonalize n new wave-functions to the N old wave-functions. More...
 

Detailed Description

Contains declaration and implementation of Wave_functions class.

Definition in file wave_functions.hpp.