SIRIUS 7.5.0
Electronic structure library and applications
|
Stores information about G-vector partitioning between MPI ranks for the FFT transformation. More...
#include <gvec.hpp>
Public Member Functions | |
Gvec_fft (Gvec const &gvec__, mpi::Communicator const &fft_comm__, mpi::Communicator const &comm_ortho_fft__) | |
mpi::Communicator const & | comm_fft () const |
Return FFT communicator. More... | |
mpi::Communicator const & | comm_ortho_fft () const |
Return a communicator that is orthogonal to the FFT communicator. More... | |
int | count (int rank__) const |
Local number of G-vectors in the FFT distribution for a given rank. More... | |
int | count () const |
Local number of G-vectors for FFT-friendly distribution for this rank. More... | |
int | zcol_count () const |
Return local number of z-columns. More... | |
auto const & | gvec_slab () const |
Represents a "fat" slab of G-vectors in the FFT-friendly distribution. More... | |
Gvec const & | gvec () const |
Return the original (not reshuffled) G-vector class. More... | |
auto | gkvec_cart (int igloc__) const |
Return the Cartesian coordinates of the local G-vector. More... | |
auto const & | gvec_array () const |
Return the full array of the local G-vector Cartesian coodinates. More... | |
template<typename T > | |
void | gather_pw_fft (std::complex< T > const *f_pw_local__, std::complex< T > *f_pw_fft__) const |
template<typename T > | |
void | gather_pw_global (std::complex< T > const *f_pw_fft__, std::complex< T > *f_pw_global__) const |
template<typename T > | |
void | scatter_pw_global (std::complex< T > const *f_pw_global__, std::complex< T > *f_pw_fft__) const |
void | update_gkvec_cart () |
Update Cartesian coordinates after a change in lattice vectors. More... | |
Private Member Functions | |
void | build_fft_distr () |
void | pile_gvec () |
Stack together the G-vector slabs to make a larger ("fat") slab for a FFT driver. More... | |
Private Attributes | |
Gvec const & | gvec_ |
Reference to the G-vector instance. More... | |
mpi::Communicator const & | comm_fft_ |
Communicator for the FFT. More... | |
mpi::Communicator const & | comm_ortho_fft_ |
Communicator which is orthogonal to FFT communicator. More... | |
mpi::block_data_descriptor | gvec_distr_fft_ |
Distribution of G-vectors for FFT. More... | |
int | num_zcol_local_ {0} |
Local number of z-columns. More... | |
mpi::block_data_descriptor | gvec_fft_slab_ |
Distribution of G-vectors inside FFT-friendly "fat" slab. More... | |
sddk::mdarray< int, 2 > | rank_map_ |
Mapping of MPI ranks used to split G-vectors to a 2D grid. More... | |
sddk::mdarray< int, 2 > | gvec_array_ |
Lattice coordinates of a local set of G-vectors. More... | |
sddk::mdarray< double, 2 > | gkvec_cart_array_ |
Cartesian coordinaes of a local set of G+k-vectors. More... | |
Stores information about G-vector partitioning between MPI ranks for the FFT transformation.
FFT driver works with a small communicator. G-vectors are distributed over the entire communicator which is larger than the FFT communicator. In order to transform the functions, G-vectors must be redistributed to the FFT-friendly "fat" slabs based on the FFT communicator size.
sirius::fft::Gvec_fft::Gvec_fft | ( | Gvec const & | gvec__, |
mpi::Communicator const & | fft_comm__, | ||
mpi::Communicator const & | comm_ortho_fft__ | ||
) |
|
private |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |