diff --git a/TurTLE/PP.py b/TurTLE/PP.py
index e68f321483fa53698fc3fd4754355e4912ba519f..b90e02138e7eb88d1ddf016d88c1214e8fd6d26d 100644
--- a/TurTLE/PP.py
+++ b/TurTLE/PP.py
@@ -124,6 +124,9 @@ class PP(_code):
             pars['histogram_bins'] = int(129)
         elif dns_type == 'get_rfields':
             pars['TrS2_on'] = int(0)
+            pars['velocity_on'] = int(1)
+            pars['vorticity_on'] = int(1)
+            pars['velocity_gradient_on'] = int(0)
         elif dns_type == 'check_divergence':
             pars['histogram_bins'] = int(129)
         return pars
diff --git a/cpp/full_code/get_rfields.cpp b/cpp/full_code/get_rfields.cpp
index 756836bfbef1dc5ec7c9e6462501a580f5eea2a3..97d9d0b6944dce5fe1b40a70b66eafbfcb9b1209 100644
--- a/cpp/full_code/get_rfields.cpp
+++ b/cpp/full_code/get_rfields.cpp
@@ -78,6 +78,15 @@ int get_rfields<rnumber>::initialize(void)
     this->TrS2_on = hdf5_tools::read_value<int>(
             parameter_file,
             "/get_rfields/parameters/TrS2_on");
+    this->velocity_on = hdf5_tools::read_value<int>(
+            parameter_file,
+            "/get_rfields/parameters/velocity_on");
+    this->vorticity_on = hdf5_tools::read_value<int>(
+            parameter_file,
+            "/get_rfields/parameters/vorticity_on");
+    this->velocity_gradient_on = hdf5_tools::read_value<int>(
+            parameter_file,
+            "/get_rfields/parameters/velocity_gradient_on");
     H5Fclose(parameter_file);
     MPI_Barrier(this->comm);
     return EXIT_SUCCESS;
@@ -125,20 +134,24 @@ int get_rfields<rnumber>::work_on_current_iteration(void)
             std::string(".h5"));
 
     /// output velocity field
-    this->vel->ift();
-    this->vel->io(
-            fname,
-            "velocity",
-            this->iteration,
-            false);
+    if (this->velocity_on) {
+        this->vel->ift();
+        this->vel->io(
+                fname,
+                "velocity",
+                this->iteration,
+                false);
+    }
 
     /// output vorticity field
-    this->vorticity->ift();
-    this->vorticity->io(
-            fname,
-            "vorticity",
-            this->iteration,
-            false);
+    if (this->vorticity_on) {
+        this->vorticity->ift();
+        this->vorticity->io(
+                fname,
+                "vorticity",
+                this->iteration,
+                false);
+    }
 
     if (this->TrS2_on)
     {
@@ -148,6 +161,15 @@ int get_rfields<rnumber>::work_on_current_iteration(void)
             this->iteration,
             false);
     }
+
+    if (this->velocity_gradient_on)
+    {
+        this->grad_vel->io(
+            fname,
+            "velocity_gradient",
+            this->iteration,
+            false);
+    }
     return EXIT_SUCCESS;
 }
 
diff --git a/cpp/full_code/get_rfields.hpp b/cpp/full_code/get_rfields.hpp
index 270b0268e16f7f30a3033189b67cb378302501c1..b49957c47166c3c0b431378b59955fd609a7233e 100644
--- a/cpp/full_code/get_rfields.hpp
+++ b/cpp/full_code/get_rfields.hpp
@@ -35,6 +35,9 @@ class get_rfields: public NSVE_field_stats<rnumber>
         int checkpoints_per_file;
         int niter_out;
         int TrS2_on;
+        int velocity_on;
+        int vorticity_on;
+        int velocity_gradient_on;
         kspace<FFTW, SMOOTH> *kk;
         field<rnumber, FFTW, ONE> *traceS2;
         field<rnumber, FFTW, THREE> *vel;