diff --git a/src/blockforest/communication/LocalCommunicationMode.h b/src/blockforest/communication/LocalCommunicationMode.h
index e4e259452faa31e353e5630f1732dc0f163b7097..0d943452b928cd6c9616be398213279c1f6102a5 100644
--- a/src/blockforest/communication/LocalCommunicationMode.h
+++ b/src/blockforest/communication/LocalCommunicationMode.h
@@ -25,7 +25,7 @@ namespace walberla {
 namespace blockforest {
 
 
-enum LocalCommunicationMode { START = 0, WAIT = 1, BUFFER = 2 };
+enum LocalCommunicationMode { START = 0, WAIT = 1, BUFFER = 2, NO_OPTIMIZATION = 3 };
 
 
 } // namespace blockforest
diff --git a/src/blockforest/communication/UniformBufferedScheme.h b/src/blockforest/communication/UniformBufferedScheme.h
index c16a9146dd39bc683fc00cebf52be5dc8eeb0e1d..93216ef8cc202cc7c4d450a835accfbc92c2240e 100644
--- a/src/blockforest/communication/UniformBufferedScheme.h
+++ b/src/blockforest/communication/UniformBufferedScheme.h
@@ -306,7 +306,7 @@ void UniformBufferedScheme<Stencil>::startCommunication()
             if( !selectable::isSetSelected( block->getNeighborState( neighborIdx, uint_t(0) ), requiredBlockSelectors_, incompatibleBlockSelectors_ ) )
                continue;
 
-            if( block->neighborExistsLocally( neighborIdx, uint_t(0) ) )
+            if( block->neighborExistsLocally( neighborIdx, uint_t(0) ) && localMode_ != NO_OPTIMIZATION )
             {
                auto neighbor = dynamic_cast< Block * >( forest->getBlock(nBlockId) );
                WALBERLA_ASSERT_EQUAL( neighbor->getProcess(), block->getProcess() );