diff --git a/src/scheme/ScalarNodalScheme.cpp b/src/scheme/ScalarNodalScheme.cpp index 6a827b0145f1ee309a8bc806f064487236fb11a3..c165eec6e1e111577424505708abb1de395c95bc 100644 --- a/src/scheme/ScalarNodalScheme.cpp +++ b/src/scheme/ScalarNodalScheme.cpp @@ -483,6 +483,22 @@ class ScalarNodalSchemeHandler::ScalarNodalScheme : public ScalarNodalSchemeHand } }(); + const NodeValue<const TinyVector<Dimension>> normal_base = [&] { + NodeValue<TinyVector<Dimension>> compute_normal_base{mesh->connectivity()}; + compute_normal_base.fill(zero); + for (NodeId node_id = 0; node_id < mesh->numberOfNodes(); ++node_id) { + const auto& node_to_face = node_to_face_matrix[node_id]; + TinyMatrix<Dimension> A; + for (size_t i_face = 0; i_face < mesh->numberOfFaces(); ++i_face) { + FaceId face_id = node_to_face[i_face]; + A(i_face, 0) = nl[face_id][0] * mes_l[face_id]; + A(i_face, 1) = nl[face_id][1] * mes_l[face_id]; + } + compute_normal_base[node_id] = inverse(A) * exterior_normal[node_id]; + } + return compute_normal_base; + }(); + const NodeValue<const double> node_boundary_values = [&] { NodeValue<double> compute_node_boundary_values{mesh->connectivity()}; NodeValue<double> sum_mes_l{mesh->connectivity()};