Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 276e2f29424fdb7d9088dd91a2d7769c869ef909)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 666e9ebba7d8fba3763c06700f8a75ad1663b51d)
@@ -62,4 +62,6 @@
 
 #include "Descriptors/AtomIdDescriptor.hpp"
+#include "Atom/atom.hpp"
+#include "Element/element.hpp"
 #include "Fragmentation/Summation/Containers/FragmentationChargeDensity.hpp"
 #include "Fragmentation/Summation/Containers/FragmentationResultContainer.hpp"
@@ -86,4 +88,5 @@
 #endif
 #include "Helpers/defs.hpp"
+#include "Potentials/Particles/ParticleRegistry.hpp"
 #include "World.hpp"
 
@@ -672,4 +675,22 @@
 
     // Final phase: sum up and print result
+    IndexedVectors::indices_t implicit_indices;
+    if (params.UseImplicitCharges.get()) {
+      // place all in implicit charges that are not selected but contained in ParticleRegistry
+      const World &world = const_cast<const World &>(World::getInstance());
+      const ParticleRegistry &registry = const_cast<const ParticleRegistry &>(ParticleRegistry::getInstance());
+      const World::ConstAtomComposite &atoms = world.getAllAtoms();
+      for (World::ConstAtomComposite::const_iterator iter = atoms.begin();
+          iter != atoms.end(); ++iter) {
+        const atomId_t atomid = (*iter)->getId();
+        if (!world.isAtomSelected(atomid)) {
+          const std::string &symbol = (*iter)->getElement().getSymbol();
+          if (registry.isPresentByName(symbol))
+            implicit_indices.push_back(atomid);
+        }
+      }
+      LOG(2, "INFO: We added " << implicit_indices.size() << " indices due to implicit charges.");
+    }
+
     FragmentationLongRangeResults longrangeresults(
         shortrangedata,longrangeData,keysets, forcekeysets);
@@ -678,5 +699,6 @@
         longrangeData,
         fullsolutionData,
-        full_sample);
+        full_sample,
+        implicit_indices);
     printReceivedFullResults(longrangeresults);
 
@@ -698,5 +720,5 @@
     std::map<JobId_t, VMGData> longrangeData;
     FragmentationLongRangeResults longrangeresults(
-        shortrangedata,longrangeData,keysets, forcekeysets);
+        shortrangedata, longrangeData, keysets, forcekeysets);
     appendToHomologies(shortrangeresults, longrangeresults, false);
   }
Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.def
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.def	(revision 276e2f29424fdb7d9088dd91a2d7769c869ef909)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.def	(revision 666e9ebba7d8fba3763c06700f8a75ad1663b51d)
@@ -15,13 +15,14 @@
 // ValueStorage by the token "Z" -> first column: int, Z, "Z"
 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
-#define paramtypes (boost::filesystem::path)(bool)(std::string)
-#define paramtokens ("fragment-resultfile")("store-grids")("fragment-prefix")
-#define paramdescriptions ("parse fragment results from the given file")("whether to store sampled grids in homology files")("prefix of each fragment file")
-#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("BondFragment"))
-#define paramreferences (resultsfile)(DoStoreGrids)(prefix)
+#define paramtypes (boost::filesystem::path)(bool)(std::string)(bool)
+#define paramtokens ("fragment-resultfile")("store-grids")("fragment-prefix")("UseImplicitCharges")
+#define paramdescriptions ("parse fragment results from the given file")("whether to store sampled grids in homology files")("prefix of each fragment file")("whether to model any non-selected atoms by partial charges implicitly")
+#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("BondFragment"))(PARAM_DEFAULT("0"))
+#define paramreferences (resultsfile)(DoStoreGrids)(prefix)(UseImplicitCharges)
 #define paramvalids \
 (DummyValidator< boost::filesystem::path >()) \
 (DummyValidator< bool >()) \
-(DummyValidator< std::string >())
+(DummyValidator< std::string >()) \
+(DummyValidator< bool >())
 
 #undef statetypes
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 276e2f29424fdb7d9088dd91a2d7769c869ef909)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 666e9ebba7d8fba3763c06700f8a75ad1663b51d)
@@ -261,5 +261,6 @@
         params.DoPrintDebug.get(),
         OpenBoundaryConditions,
-        params.DoSmearCharges.get())) {
+        params.DoSmearCharges.get(),
+        false)) {
       STATUS("Could not create long-range jobs for electronic charge distribution.");
       return Action::failure;
@@ -292,5 +293,6 @@
           params.DoPrintDebug.get(),
           OpenBoundaryConditions,
-          params.DoSmearCharges.get())) {
+          params.DoSmearCharges.get(),
+          params.UseImplicitCharges.get())) {
         STATUS("Could not create long-range jobs for nuclei charge distribution.");
         return Action::failure;
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision 276e2f29424fdb7d9088dd91a2d7769c869ef909)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision 666e9ebba7d8fba3763c06700f8a75ad1663b51d)
@@ -18,9 +18,9 @@
 // ValueStorage by the token "Z" -> first column: int, Z, "Z"
 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
-#define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)(bool)(bool)(bool)
-#define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")("DoValenceOnly")("DoPrintDebug")("DoSmearElectronicCharges")
-#define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")("whether the sampling uses only the valence electron and nuclei charge")("whether to print grids for debug visualization")("whether to smear out electronic charge distributions with bsplines or not") 
-#define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
-#define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)(DoValenceOnly)(DoPrintDebug)(DoSmearCharges)
+#define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)(bool)(bool)(bool)(bool)
+#define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")("DoValenceOnly")("DoPrintDebug")("DoSmearElectronicCharges")("UseImplicitCharges")
+#define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")("whether the sampling uses only the valence electron and nuclei charge")("whether to print grids for debug visualization")("whether to smear out electronic charge distributions with bsplines or not")("whether to model any non-selected atoms by partial charges implicitly") 
+#define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
+#define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)(DoValenceOnly)(DoPrintDebug)(DoSmearCharges)(UseImplicitCharges)
 #define paramvalids \
 (DummyValidator< std::string >()) \
@@ -32,4 +32,5 @@
 (DummyValidator< bool >()) \
 (DummyValidator< boost::filesystem::path >()) \
+(DummyValidator< bool >()) \
 (DummyValidator< bool >()) \
 (DummyValidator< bool >()) \
