diff --git a/src/language/algorithms/HeatDiamondAlgorithm.cpp b/src/language/algorithms/HeatDiamondAlgorithm.cpp
index 74382e9be557b91866d91b6821974f0f5ee55a20..c729f97b26b9cc48ff6ba884cd9cd984ff553896 100644
--- a/src/language/algorithms/HeatDiamondAlgorithm.cpp
+++ b/src/language/algorithms/HeatDiamondAlgorithm.cpp
@@ -456,6 +456,17 @@ HeatDiamondScheme<Dimension>::HeatDiamondScheme(
               }
             }
           }
+        } else {
+          const auto& primal_face_to_cell = face_to_cell_matrix[face_id];
+          const double beta_l             = 1. / Dimension * alpha_l[face_id] * mes_l[face_id];
+          Assert(primal_face_to_cell.size() == 1, "Wrong number of cells for a boundary face");
+          for (size_t i_cell = 0; i_cell < primal_face_to_cell.size(); ++i_cell) {
+            const CellId cell_id1 = primal_face_to_cell[i_cell];
+            S(cell_dof_number[cell_id1], cell_dof_number[cell_id1]) += beta_l;
+            S(cell_dof_number[cell_id1], face_dof_number[face_id]) -= beta_l;
+            S(face_dof_number[face_id], face_dof_number[face_id]) += beta_l;
+            S(face_dof_number[face_id], cell_dof_number[cell_id1]) -= beta_l;
+          }
         }
       }