![]() |
ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
Routines, row decomposition, data structures and communication for the 3D-FFT. More...
#include "vector.hpp"#include <utils/Vector.hpp>#include <array>#include <cstddef>#include <memory>#include <optional>#include <span>#include <type_traits>#include <utility>#include <vector>
Include dependency graph for fft.hpp:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | fft::fft_plan< FloatType > |
| struct | fft::fft_forw_plan< FloatType > |
| Plan for a forward 1D FFT of a flattened 3D array. More... | |
| struct | fft::fft_back_plan< FloatType > |
| Plan for a backward 1D FFT of a flattened 3D array. More... | |
| struct | fft::fft_data_struct< FloatType > |
| Information about the three one dimensional FFTs and how the nodes have to communicate inbetween. More... | |
Namespaces | |
| namespace | boost |
| namespace | boost::mpi |
| namespace | fft |
Functions | |
| int | fft::map_3don2d_grid (int const g3d[3], int g2d[3]) |
| Calculate 'best' mapping between a 2D and 3D grid. | |
| std::optional< std::vector< int > > | fft::find_comm_groups (Utils::Vector3i const &grid1, Utils::Vector3i const &grid2, std::span< int const > node_list1, std::span< int > node_list2, std::span< int > pos, std::span< int > my_pos, int rank) |
| This ugly function does the bookkeeping: which nodes have to communicate to each other, when you change the node grid. | |
Routines, row decomposition, data structures and communication for the 3D-FFT.
The 3D-FFT is split into three 1D-FFTs. The data is distributed in such a way, that for the actual direction of the FFT each node has a certain number of rows for which it performs a 1D-FFT. After performing the FFT on that direction the data is redistributed.
For simplicity, a full complex-to-complex FFT is implemented, even though a real-to-complex FFT would be sufficient.
Definition in file fft.hpp.