diff --git a/src/fluid_solver.cpp b/src/fluid_solver.cpp
index 522a7a6968c226b9459f7df955b7529a5a222a94..bc1402c50920f8520760e5c8ce2b8fa85b76db9e 100644
--- a/src/fluid_solver.cpp
+++ b/src/fluid_solver.cpp
@@ -250,6 +250,24 @@ void fluid_solver<R>::ift_velocity() \
 } \
  \
 template<> \
+void fluid_solver<R>::ift_vorticity() \
+{ \
+    FFTW(execute)(*((FFTW(plan)*)this->c2r_vorticity )); \
+} \
+ \
+template<> \
+void fluid_solver<R>::dft_velocity() \
+{ \
+    FFTW(execute)(*((FFTW(plan)*)this->r2c_velocity )); \
+} \
+ \
+template<> \
+void fluid_solver<R>::dft_vorticity() \
+{ \
+    FFTW(execute)(*((FFTW(plan)*)this->r2c_vorticity )); \
+} \
+ \
+template<> \
 void fluid_solver<R>::add_forcing(\
         C *field, R factor) \
 { \
@@ -437,7 +455,7 @@ int fluid_solver<R>::write(char field, char representation) \
         return this->write_base("cvelocity", this->cvelocity); \
     if ((field == 'u') && (representation == 'r')) \
     { \
-        FFTW(execute)(*((FFTW(plan)*)this->c2r_velocity )); \
+        this->ift_velocity(); \
         clip_zero_padding<R>(this->rd, this->rvelocity, 3); \
         return this->write_base("rvelocity", this->rvelocity); \
     } \
diff --git a/src/fluid_solver.hpp b/src/fluid_solver.hpp
index 0e0fdb14bcdf81b14211b3d718c8581caf4939fe..8d8a63ee4f4e0b6871c6bff42f9293e3041d2b22 100644
--- a/src/fluid_solver.hpp
+++ b/src/fluid_solver.hpp
@@ -79,6 +79,9 @@ class fluid_solver:public fluid_solver_base<rnumber>
         void compute_vorticity(void);
         void compute_velocity(rnumber (*vorticity)[2]);
         void ift_velocity();
+        void dft_velocity();
+        void ift_vorticity();
+        void dft_vorticity();
         void omega_nonlin(int src);
         void step(double dt);
         void impose_zero_modes(void);