diff --git a/bfps/FluidConvert.py b/bfps/FluidConvert.py
index ca462ed3c3700455f5e3f6591003224f5c1b2452..8d31784ae3f46127c617bf2a2659e25eeaa57eba 100644
--- a/bfps/FluidConvert.py
+++ b/bfps/FluidConvert.py
@@ -98,7 +98,7 @@ class FluidConvert(_fluid_particle_base):
                         nx, ny, nz,
                         dkx, dky, dkz,
                         dealias_type,
-                        FFTW_ESTIMATE);
+                        FFTW_PATIENT);
                 //endcpp
                 """.format(self.C_dtype)
         self.fluid_loop += """
diff --git a/bfps/cpp/field_descriptor.cpp b/bfps/cpp/field_descriptor.cpp
index 68ed78ff6c8148c7ced93e2932121fce13a6871b..a2d0209a826ecdc9a7f58eeb06cca71fd62ad96d 100644
--- a/bfps/cpp/field_descriptor.cpp
+++ b/bfps/cpp/field_descriptor.cpp
@@ -389,7 +389,7 @@ int field_descriptor<rnumber>::transpose(
                 FFTW_MPI_DEFAULT_BLOCK,
                 (rnumber*)input, (rnumber*)output,
                 this->comm,
-                FFTW_ESTIMATE);
+                FFTW_PATIENT);
         fftw_interface<rnumber>::execute(tplan);
         fftw_interface<rnumber>::destroy_plan(tplan);
         break;
@@ -449,7 +449,7 @@ int field_descriptor<rnumber>::interleave(
                 a,
                 a,
                 /*kind*/nullptr,
-                FFTW_ESTIMATE);
+                FFTW_PATIENT);
     fftw_interface<rnumber>::execute(tmp);
     fftw_interface<rnumber>::destroy_plan(tmp);
     return EXIT_SUCCESS;
@@ -478,7 +478,7 @@ int field_descriptor<rnumber>::interleave(
                 a,
                 a,
                 +1,
-                FFTW_ESTIMATE);
+                FFTW_PATIENT);
     fftw_interface<rnumber>::execute(tmp);
     fftw_interface<rnumber>::destroy_plan(tmp);
     return EXIT_SUCCESS;