|
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 |