Bridge++  Version 1.5.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fft_xyz_3dim.h
Go to the documentation of this file.
1 
14 #ifndef FFT_XYZ_3DIM_INCLUDED
15 #define FFT_XYZ_3DIM_INCLUDED
16 
17 #ifdef USE_FFTWLIB
18 
19 #include "fft.h"
20 
22 
30 class FFT_xyz_3dim : public FFT
31 {
32  public:
33  static const std::string class_name;
34 
35  private:
36  bool m_is_forward;
37 
38  Index_lex m_index;
39 
40  fftw_complex *m_in;
41  fftw_complex *m_out;
42 
43  fftw_plan m_plan;
44 
45 #ifdef USE_MPI
46  ptrdiff_t m_Nz_p, m_z_start_p;
47 #endif
48 
49 
50  public:
51  FFT_xyz_3dim()
52  {
53  init();
54  }
55 
56  ~FFT_xyz_3dim()
57  {
58  tidy_up();
59  }
60 
61  void fft(Field& field); // field is overwritten
62  void fft(Field& field_out, const Field& field_in);
63  void fft(Field& field_out, const Field& field_in, const Direction dir);
64 
65  void set_parameters(const Parameters&);
66  void set_parameters(const std::string& str_fft_direction);
67 
68  private:
69  void init();
70  void tidy_up();
71 
72 #ifdef USE_FACTORY
73  private:
74  static FFT *create_object()
75  {
76  return new FFT_xyz_3dim();
77  }
78 
79  public:
80  static bool register_factory()
81  {
82  return FFT::Factory::Register("FFT_xyz_3dim", create_object);
83  }
84 #endif
85 };
86 //- #endif of #ifdef USE_FFTWLIB
87 #endif
88 #endif
Container of Field-type object.
Definition: field.h:45
Class for parameters.
Definition: parameters.h:46
Lexical site index.
Definition: index_lex.h:34
Direction
Definition: bridge_defs.h:24