13 #ifndef FFT_3D_PARALLEL3D_INCLUDED
14 #define FFT_3D_PARALLEL3D_INCLUDED
28 class FFT_3d_parallel3d :
public FFT
31 static const std::string class_name;
35 virtual ~FFT_3d_parallel3d();
39 void fft(
Field& field);
42 void set_parameters(
const std::string& direction);
51 bool need_create_plan(
const Field&);
53 void create_plan(
int site_dof);
56 void create_mpi_datatype(
int site_dof);
57 void release_mpi_datatype();
59 void create_fft_plan(
int site_dof);
60 void release_fft_plan();
63 std::vector<int> grid_rank_to_coord(
int r);
64 int find_global_index(
const std::vector<int>& coord);
79 std::vector<int> m_grid_size;
82 std::vector<int> m_lattice_size;
85 std::vector<int> m_local_size;
89 MPI_Datatype m_site_vector_type;
90 MPI_Datatype m_local_patch_type;
91 MPI_Datatype m_subarray_type;
93 std::vector<int> m_sendcounts;
94 std::vector<int> m_subarray_displs;
95 std::vector<int> m_local_patch_displs;
111 static FFT *create_object()
113 return new FFT_3d_parallel3d();
117 static bool register_factory()
119 return FFT::Factory::Register(
"FFT_3d_parallel_3dim", create_object);
Container of Field-type object.