Index: src/Jobs/InterfaceVMGJob.cpp
===================================================================
--- src/Jobs/InterfaceVMGJob.cpp	(revision e4721d33628be79299075ae6aecaaaec2bf53f4a)
+++ src/Jobs/InterfaceVMGJob.cpp	(revision e2925fd7f1c9a7ab18fe71b5a40598b65ddb05dc)
@@ -71,4 +71,5 @@
     vmg_float _box_end,
     const int& near_field_cells,
+    const ImportParticles_t _ImportParticles,
     const bool _DoPrintDebug,
     int coarseningSteps,
@@ -80,4 +81,5 @@
   returndata(_returndata),
   level(levelMax),
+  ImportParticles(_ImportParticles),
   DoPrintDebug(_DoPrintDebug)
 {
@@ -134,11 +136,13 @@
       VMG::MG::GetFactory().GetObjectStorageVal<int>("PARTICLE_NEAR_FIELD_CELLS")));
 
-  // create smeared-out particle charges on particle_grid via splines
-  LOG(1, "INFO: Creating particle grid for " << particles.size() << " particles.");
-  for (std::list<Particle::Particle>::iterator iter = particles.begin();
-      iter != particles.end(); ++iter) {
-    LOG(2, "DEBUG: Current particle is at " << (*iter).Pos()
-        << " with charge " << (*iter).Charge() << ".");
-    spl.SetSpline(particle_grid, *iter);
+  if (ImportParticles == DoImportParticles) {
+    // create smeared-out particle charges on particle_grid via splines
+    LOG(1, "INFO: Creating particle grid for " << particles.size() << " particles.");
+    for (std::list<Particle::Particle>::iterator iter = particles.begin();
+        iter != particles.end(); ++iter) {
+      LOG(2, "DEBUG: Current particle is at " << (*iter).Pos()
+          << " with charge " << (*iter).Charge() << ".");
+      spl.SetSpline(particle_grid, *iter);
+    }
   }
 
@@ -155,5 +159,5 @@
       grid,
       sampled_input,
-      -1.);
+      1.);
 
   if (DoPrintDebug) {
@@ -360,4 +364,5 @@
   comm.PrintStringOnce("E_total*:       %e", e_long + e_short_peak + e_short_spline - e_self);
 
-  returndata.e_long = e;
+  returndata.nuclei_long = e_long;
+  returndata.electron_long = e_long;
 }
Index: src/Jobs/InterfaceVMGJob.hpp
===================================================================
--- src/Jobs/InterfaceVMGJob.hpp	(revision e4721d33628be79299075ae6aecaaaec2bf53f4a)
+++ src/Jobs/InterfaceVMGJob.hpp	(revision e2925fd7f1c9a7ab18fe71b5a40598b65ddb05dc)
@@ -36,4 +36,9 @@
 {
 public:
+  enum ImportParticles_t {
+    DontImportParticles=0,
+    DoImportParticles=1,
+  };
+
   InterfaceVMGJob(const SamplingGrid &_sampled_input,
       VMGData &returndata,
@@ -46,4 +51,5 @@
       vmg_float _box_end,
       const int& near_field_cells,
+      const ImportParticles_t _ImportParticles=DoImportParticles,
       const bool _DoPrintDebug=false,
       int coarseningSteps=0,
@@ -74,4 +80,7 @@
   double box_end[3];
 
+  //!> whether we import particles (true) or evaluate only
+  const ImportParticles_t ImportParticles;
+
   //!> whether we do print grid for debug visualization or not
   const bool DoPrintDebug;
Index: src/Jobs/VMGJob.cpp
===================================================================
--- src/Jobs/VMGJob.cpp	(revision e4721d33628be79299075ae6aecaaaec2bf53f4a)
+++ src/Jobs/VMGJob.cpp	(revision e2925fd7f1c9a7ab18fe71b5a40598b65ddb05dc)
@@ -83,4 +83,5 @@
     const size_t _near_field_cells,
     const size_t _interpolation_degree,
+    const bool _DoImportParticles,
     const bool _DoPrintDebug) :
   FragmentJob(_JobId),
@@ -90,7 +91,8 @@
   near_field_cells(_near_field_cells),
   interpolation_degree(_interpolation_degree),
+  DoImportParticles(_DoImportParticles),
+  DoPrintDebug(_DoPrintDebug),
   returndata(static_cast<const SamplingGridProperties &>(_density_grid)),
-  particles(),
-  DoPrintDebug(_DoPrintDebug)
+  particles()
 {}
 
@@ -99,6 +101,7 @@
   near_field_cells(3),
   interpolation_degree(3),
-  particles(),
-  DoPrintDebug(false)
+  DoImportParticles(true),
+  DoPrintDebug(false),
+  particles()
 {}
 
@@ -220,4 +223,7 @@
       density_grid.end[0]-density_grid.begin[0],
       near_field_cells,
+      DoImportParticles ?
+          VMGInterfaces::InterfaceVMGJob::DoImportParticles
+          : VMGInterfaces::InterfaceVMGJob::DontImportParticles,
       DoPrintDebug);
   new LevelOperatorCS(Stencils::RestrictionFullWeight, Stencils::InterpolationTrilinear);
Index: src/Jobs/VMGJob.hpp
===================================================================
--- src/Jobs/VMGJob.hpp	(revision e4721d33628be79299075ae6aecaaaec2bf53f4a)
+++ src/Jobs/VMGJob.hpp	(revision e2925fd7f1c9a7ab18fe71b5a40598b65ddb05dc)
@@ -42,4 +42,5 @@
    * @param _interpolation_degree degree of interpolation polynomial for getting nuclei
    *        potential from grid
+   * @param _DoImportParticles whether we import particles (true) or evaluate only
    * @param _DoPrintDebug whether we do print grid for debug visualization or not
    */
@@ -50,4 +51,5 @@
       const size_t _near_field_cells,
       const size_t _interpolation_degree,
+      const bool _DoImportParticles=true,
       const bool _DoPrintDebug=false
       );
@@ -72,4 +74,6 @@
   //!> interpolation degree used in sampling the potential of the nuclei
   const size_t interpolation_degree;
+  //!> whether we import particles (true) or evaluate only
+  const bool DoImportParticles;
   //!> whether we do print grid for debug visualization or not
   const bool DoPrintDebug;
@@ -124,4 +128,5 @@
     ar & const_cast< size_t &>(near_field_cells);
     ar & const_cast< size_t &>(interpolation_degree);
+    ar & const_cast< bool &>(DoImportParticles);
     ar & const_cast< bool &>(DoPrintDebug);
     ar & returndata;
