Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 376a3b4220232a3fc45f7570dc4ff0ac93d50add)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 86cfac549b241910bb5f0786c6c412d4802f2ecc)
@@ -80,4 +80,5 @@
 #include "World.hpp"
 
+#include <fstream>
 #include <iostream>
 #include <string>
@@ -359,4 +360,11 @@
 }
 
+void writeToFile(const std::string &filename, const std::string contents)
+{
+  std::ofstream tablefile(filename.c_str());
+  tablefile << contents;
+  tablefile.close();
+}
+
 /** Print MPQCData from received results.
  *
@@ -367,33 +375,58 @@
 {
   // print tables (without eigenvalues, they go extra)
-typedef boost::mpl::remove<MPQCDataEnergyVector_t, MPQCDataFused::energy_eigenvalues>::type
-    MPQCDataEnergyVector_noeigenvalues_t;
-  const std::string energyresult =
-      writeTable<MPQCDataEnergyMap_t, MPQCDataEnergyVector_noeigenvalues_t >()(
-          results.Result_Energy_fused, results.getMaxLevel());
-  LOG(0, "Energy table is \n" << energyresult);
-
-  const std::string gridresult =
-      writeTable<VMGDataLongRangeMap_t, VMGDataLongRangeVector_t >()(
-          results.Result_LongRangeIntegrated_fused, results.getMaxLevel());
-  LOG(0, "LongRange table is \n" << gridresult);
-
-  const std::string eigenvalueresult;
-  LOG(0, "Eigenvalue table is \n" << eigenvalueresult);
-
-  const std::string forceresult =
-      writeTable<MPQCDataForceMap_t, MPQCDataForceVector_t>()(
-          results.Result_Force_fused, results.getMaxLevel());
-  LOG(0, "Force table is \n" << forceresult);
+  {
+    typedef boost::mpl::remove<MPQCDataEnergyVector_t, MPQCDataFused::energy_eigenvalues>::type
+      MPQCDataEnergyVector_noeigenvalues_t;
+    const std::string energyresult =
+        writeTable<MPQCDataEnergyMap_t, MPQCDataEnergyVector_noeigenvalues_t >()(
+            results.Result_Energy_fused, results.getMaxLevel());
+    LOG(0, "Energy table is \n" << energyresult);
+    std::string filename;
+    filename += FRAGMENTPREFIX + std::string("_Energy.dat");
+    writeToFile(filename, energyresult);
+  }
+
+  {
+    const std::string gridresult =
+        writeTable<VMGDataLongRangeMap_t, VMGDataLongRangeVector_t >()(
+            results.Result_LongRangeIntegrated_fused, results.getMaxLevel());
+    LOG(0, "LongRange table is \n" << gridresult);
+    std::string filename;
+    filename += FRAGMENTPREFIX + std::string("_LongRangeEnergy.dat");
+    writeToFile(filename, gridresult);
+  }
+
+  {
+    const std::string eigenvalueresult;
+    LOG(0, "Eigenvalue table is \n" << eigenvalueresult);
+    std::string filename;
+    filename += FRAGMENTPREFIX + std::string("_Eigenvalues.dat");
+    writeToFile(filename, eigenvalueresult);
+  }
+
+  {
+    const std::string forceresult =
+        writeTable<MPQCDataForceMap_t, MPQCDataForceVector_t>()(
+            results.Result_Force_fused, results.getMaxLevel());
+    LOG(0, "Force table is \n" << forceresult);
+    std::string filename;
+    filename += FRAGMENTPREFIX + std::string("_Forces.dat");
+    writeToFile(filename, forceresult);
+  }
   // we don't want to print grid to a table
-  // print times (without flops for now)
-  typedef boost::mpl::remove<
-      boost::mpl::remove<MPQCDataTimeVector_t, MPQCDataFused::times_total_flops>::type,
-      MPQCDataFused::times_gather_flops>::type
-      MPQCDataTimeVector_noflops_t;
-  const std::string timesresult =
-      writeTable<MPQCDataTimeMap_t, MPQCDataTimeVector_noflops_t >()(
-          results.Result_Time_fused, results.getMaxLevel());
-  LOG(0, "Times table is \n" << timesresult);
+  {
+    // print times (without flops for now)
+    typedef boost::mpl::remove<
+        boost::mpl::remove<MPQCDataTimeVector_t, MPQCDataFused::times_total_flops>::type,
+        MPQCDataFused::times_gather_flops>::type
+        MPQCDataTimeVector_noflops_t;
+    const std::string timesresult =
+        writeTable<MPQCDataTimeMap_t, MPQCDataTimeVector_noflops_t >()(
+            results.Result_Time_fused, results.getMaxLevel());
+    LOG(0, "Times table is \n" << timesresult);
+    std::string filename;
+    filename += FRAGMENTPREFIX + std::string("_Times.dat");
+    writeToFile(filename, timesresult);
+  }
 }
 
