SIRIUS 7.5.0
Electronic structure library and applications
|
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... | |
Contains declaration and implementation of Wave_functions class.
Definition in file wave_functions.hpp.