From ac39934b736a18abbaf84a4c87c5c42d2a06f050 Mon Sep 17 00:00:00 2001 From: Drouard <axelle.drouard@orange.fr> Date: Tue, 2 Aug 2022 09:06:15 +0200 Subject: [PATCH] Decomposition of nr in the base n1,n2 --- src/scheme/ScalarNodalScheme.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/scheme/ScalarNodalScheme.cpp b/src/scheme/ScalarNodalScheme.cpp index c165eec6e..9c8e47dac 100644 --- a/src/scheme/ScalarNodalScheme.cpp +++ b/src/scheme/ScalarNodalScheme.cpp @@ -487,14 +487,23 @@ class ScalarNodalSchemeHandler::ScalarNodalScheme : public ScalarNodalSchemeHand 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]; + if (node_is_angle[node_id]) { + const auto& node_to_face = node_to_face_matrix[node_id]; + TinyMatrix<Dimension> A = zero; + for (size_t i_face = 0; i_face < node_to_face.size(); ++i_face) { + const FaceId face_id = node_to_face[i_face]; + if (is_boundary_face[face_id]) { + if (A(0, 0) == 0) { + A(0, 0) = nl[face_id][0] * mes_l[face_id]; + A(0, 1) = nl[face_id][1] * mes_l[face_id]; + } else { + A(1, 0) = nl[face_id][0] * mes_l[face_id]; + A(1, 1) = nl[face_id][1] * mes_l[face_id]; + } + } + } + compute_normal_base[node_id] = inverse(A) * exterior_normal[node_id]; } - compute_normal_base[node_id] = inverse(A) * exterior_normal[node_id]; } return compute_normal_base; }(); -- GitLab