diff --git a/dumux/assembly/fvassembler.hh b/dumux/assembly/fvassembler.hh
index 3195589c599e6f61cd17e8b821dade9b4b3a914b..efc3cf647e76efe2eb86f42e55839efa6a6fe544 100644
--- a/dumux/assembly/fvassembler.hh
+++ b/dumux/assembly/fvassembler.hh
@@ -170,7 +170,7 @@ public:
         // issue a warning if the caluclation is used in parallel with overlap
         static bool warningIssued = false;
 
-        if (gridView().overlapSize(0) == 0)
+        if (gridView().comm().size() > 1 && gridView().overlapSize(0) == 0)
         {
             if constexpr (isBox)
             {
diff --git a/dumux/multidomain/fvassembler.hh b/dumux/multidomain/fvassembler.hh
index 0b94c8eb018ba6dce38b67f9016a6185123ae6f2..656a8ce65819576b7d775e0712d5437244884d5d 100644
--- a/dumux/multidomain/fvassembler.hh
+++ b/dumux/multidomain/fvassembler.hh
@@ -239,7 +239,7 @@ public:
             const auto gridGeometry = std::get<domainId>(gridGeometryTuple_);
             const auto& gridView = gridGeometry->gridView();
 
-            if (gridView.overlapSize(0) == 0)
+            if (gridView.comm().size() && gridView.overlapSize(0) == 0)
             {
                 if constexpr (GridGeometry<domainId>::discMethod == DiscretizationMethod::box)
                 {
diff --git a/test/porousmediumflow/1p/incompressible/CMakeLists.txt b/test/porousmediumflow/1p/incompressible/CMakeLists.txt
index 9eac64ac66d7312a9f2a8bca7ed142051abee048..02adbcc24585db8f2d13c44769a9fdaea54a2f93 100644
--- a/test/porousmediumflow/1p/incompressible/CMakeLists.txt
+++ b/test/porousmediumflow/1p/incompressible/CMakeLists.txt
@@ -145,3 +145,11 @@ dumux_add_test(NAME test_1p_incompressible_mpfa_extrude_distorted
                                     -Problem.CheckIsConstantVelocity true
                                     -Problem.EnableGravity false
                                     -Grid.File ./grids/randomlydistorted.dgf)
+
+# check grids without communicate method (using box and numeric differentiation)
+dumux_add_test(NAME test_1p_incompressible_box_numdiff_no_communicate
+               LABELS porousmediumflow 1p
+               SOURCES main.cc
+               COMPILE_DEFINITIONS TYPETAG=OnePIncompressibleBox NUMDIFFMETHOD=DiffMethod::numeric GRIDTYPE=Dumux::NoCommunicateGrid<2>
+               COMMAND ./test_1p_incompressible_box_numdiff_no_communicate
+               CMD_ARGS -Grid.Overlap 0)
diff --git a/test/porousmediumflow/1p/incompressible/main.cc b/test/porousmediumflow/1p/incompressible/main.cc
index 3f8e191a6cd493c0997fc8d9b5c5ff82ea568d97..f0d7a5e666cc11a9814ac82f9a44567c8971127c 100644
--- a/test/porousmediumflow/1p/incompressible/main.cc
+++ b/test/porousmediumflow/1p/incompressible/main.cc
@@ -149,6 +149,9 @@ int main(int argc, char** argv)
     // output result to vtk
     vtkWriter.write(1.0);
 
+    // output residual norm (test assembler interface)
+    std::cout << "Residual norm: " << assembler->residualNorm(x) << std::endl;
+
     timer.stop();
 
     const bool checkIsConstantVelocity = getParam<bool>("Problem.CheckIsConstantVelocity", false);
diff --git a/test/porousmediumflow/1p/incompressible/properties.hh b/test/porousmediumflow/1p/incompressible/properties.hh
index d333cff6fa25cd4a5a02c058b41585b11716afa6..7df2043848a99e25dc9b7a29e0414efef3b00ffd 100644
--- a/test/porousmediumflow/1p/incompressible/properties.hh
+++ b/test/porousmediumflow/1p/incompressible/properties.hh
@@ -50,6 +50,67 @@
 #define GRIDTYPE Dune::YaspGrid<2>
 #endif
 
+////////////////////////////////////////////////////
+// A fake grid that cannot communicate.           //
+// Can be used to make sure that compilation and  //
+// sequential execution also work for such grids. //
+////////////////////////////////////////////////////
+namespace Dumux {
+
+template<int dim>
+class NoCommunicateGrid;
+
+template<int dim>
+class NoCommunicateGridLeafGridView
+: public Dune::YaspGrid<dim>::LeafGridView
+{
+    using ParentType = typename Dune::YaspGrid<dim>::LeafGridView;
+public:
+    using ParentType::ParentType;
+
+    struct Traits : public ParentType::Traits
+    { using Grid = NoCommunicateGrid<dim>; };
+};
+
+template<int dim>
+class NoCommunicateGrid : public Dune::YaspGrid<dim>
+{
+    using ParentType = Dune::YaspGrid<dim>;
+public:
+    using ParentType::ParentType;
+    struct Traits : public ParentType::Traits
+    { using LeafGridView = NoCommunicateGridLeafGridView<dim>; };
+
+    using LeafGridView = NoCommunicateGridLeafGridView<dim>;
+
+    typename Traits::LeafGridView leafGridView() const
+    { return NoCommunicateGridLeafGridView<dim>(*this); }
+private:
+    using ParentType::communicate;
+    using ParentType::communicateCodim;
+};
+
+template<int dim>
+class GridManager<NoCommunicateGrid<dim>> : public GridManager<Dune::YaspGrid<dim>>
+{
+    using ParentType = GridManager<Dune::YaspGrid<dim>>;
+public:
+    using ParentType::ParentType;
+    using Grid = NoCommunicateGrid<dim>;
+    Grid& grid() { return static_cast<NoCommunicateGrid<dim>&>(ParentType::grid()); }
+};
+
+} // end namespace Dumux
+
+namespace Dune::Capabilities {
+
+template<int dim, int codim>
+struct canCommunicate<Dumux::NoCommunicateGrid<dim>, codim>
+{ static constexpr bool v = false; };
+
+} // end namespace Dune::Capabilities
+/////////////////////////////////////////
+
 namespace Dumux::Properties {
 // Create new type tags
 namespace TTag {