14 #ifndef FFT_3D_PARALLEL3D_INCLUDED
15 #define FFT_3D_PARALLEL3D_INCLUDED
29 class FFT_3d_parallel3d :
public FFT
32 static const std::string class_name;
36 virtual ~FFT_3d_parallel3d();
40 void fft(
Field& field);
43 void set_parameters(
const std::string& direction);
52 bool need_create_plan(
const Field&);
54 void create_plan(
int site_dof);
57 void create_mpi_datatype(
int site_dof);
58 void release_mpi_datatype();
60 void create_fft_plan(
int site_dof);
61 void release_fft_plan();
64 std::vector<int> grid_rank_to_coord(
int r);
65 int find_global_index(
const std::vector<int>& coord);
80 std::vector<int> m_grid_size;
83 std::vector<int> m_lattice_size;
86 std::vector<int> m_local_size;
90 MPI_Datatype m_site_vector_type;
91 MPI_Datatype m_local_patch_type;
92 MPI_Datatype m_subarray_type;
94 std::vector<int> m_sendcounts;
95 std::vector<int> m_subarray_displs;
96 std::vector<int> m_local_patch_displs;
112 static FFT *create_object()
114 return new FFT_3d_parallel3d();
118 static bool register_factory()
120 return FFT::Factory::Register(
"FFT_3d_parallel_3dim", create_object);
Container of Field-type object.