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; + } } }