diff --git a/src/debug.c b/src/debug.c
index 65991231fd0e2e565c012b6f8e8c9df3132dd30a..d9fbc5168171dba6df0385645d1182caa301cc8b 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -331,4 +331,48 @@ void dumpMETISGraph(const char *prefix, idx_t nvertices, idx_t nvertexweights,
   }
 }
 
-#endif
+#endif /* HAVE_METIS */
+
+#ifdef HAVE_MPI
+/**
+ * @brief Dump the positions and MPI ranks of the given top-level cells
+ *        to a simple text file.
+ *
+ * Can be used to visualise the partitioning of an MPI run. Note should
+ * be used immediately after repartitioning when the top-level cells
+ * have been assigned their nodes. Each time this is called a new file
+ * with the given prefix, a unique integer and type of .dat is created. 
+ *
+ * @param prefix base output filename
+ * @param cells_top the top-level cells.
+ * @param nr_cells the number of cells.
+ */
+void dumpCellRanks(const char *prefix, struct cell *cells_top,
+                   int nr_cells) {
+
+  FILE *file = NULL;
+
+  /* Name of output file. */
+  static int nseq = 0;
+  char fname[200];
+  sprintf(fname, "%s_%03d.dat", prefix, nseq);
+  nseq++;
+
+  file = fopen(fname, "w");
+
+  /* Header. */
+  fprintf(file, "# %6s %6s %6s %6s %6s %6s %6s\n",
+          "x", "y", "z", "xw", "yw", "zw", "rank");
+
+  /* Output */
+  for (int i = 0; i < nr_cells; i++) {
+    struct cell *c = &cells_top[i];
+    fprintf(file, "  %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6d\n",
+            c->loc[0], c->loc[1], c->loc[2], c->width[0],
+            c->width[1], c->width[2], c->nodeID);
+  }
+
+  fclose(file);
+}
+
+#endif /* HAVE_MPI */
diff --git a/src/debug.h b/src/debug.h
index 2142a22eca91338580d8f50197a57de0cf248bee..d42bc5b108bce8762b42bcea42f39e250060d61f 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -37,6 +37,11 @@ int checkSpacehmax(struct space *s);
 #include "metis.h"
 void dumpMETISGraph(const char *prefix, idx_t nvtxs, idx_t ncon, idx_t *xadj,
                     idx_t *adjncy, idx_t *vwgt, idx_t *vsize, idx_t *adjwgt);
+#endif
 
+#ifdef HAVE_MPI
+void dumpCellRanks(const char *prefix, struct cell *cells_top,
+                   int nr_cells);
 #endif
+
 #endif /* SWIFT_DEBUG_H */