From d0bfd0a3951b341dd8eb782b91e0e823b0746cef Mon Sep 17 00:00:00 2001 From: Drouard <axelle.drouard@orange.fr> Date: Fri, 20 May 2022 14:58:04 +0200 Subject: [PATCH] Correction Dirichlet node boundary values --- src/scheme/ScalarNodalScheme.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/scheme/ScalarNodalScheme.cpp b/src/scheme/ScalarNodalScheme.cpp index 9c442d032..fa374bdfc 100644 --- a/src/scheme/ScalarNodalScheme.cpp +++ b/src/scheme/ScalarNodalScheme.cpp @@ -370,14 +370,14 @@ class ScalarNodalSchemeHandler::ScalarNodalScheme : public ScalarNodalSchemeHand for (size_t i_node = 0; i_node < face_nodes.size(); ++i_node) { const NodeId node_id = face_nodes[i_node]; - if (node_is_dirichlet[node_id] == false) { + if (not node_is_dirichlet[node_id]) { compute_node_boundary_values[node_id] += value_list[i_face] * mes_l[face_id]; sum_mes_l[node_id] += mes_l[face_id]; } } } for (NodeId node_id = 0; node_id < mesh->numberOfNodes(); ++node_id) { - if (not node_is_dirichlet[node_id]) { + if ((not node_is_dirichlet[node_id]) && (node_is_neumann[node_id])) { compute_node_boundary_values[node_id] /= sum_mes_l[node_id]; } } @@ -391,13 +391,19 @@ class ScalarNodalSchemeHandler::ScalarNodalScheme : public ScalarNodalSchemeHand for (size_t i_node = 0; i_node < face_nodes.size(); ++i_node) { const NodeId node_id = face_nodes[i_node]; - if (node_is_neumann[node_id] == false) { - compute_node_boundary_values[node_id] += 0.5 * value_list[i_face] * mes_l[face_id]; + if (not node_is_neumann[node_id]) { + compute_node_boundary_values[node_id] += value_list[i_face] * mes_l[face_id]; + sum_mes_l[node_id] += mes_l[face_id]; } else { - compute_node_boundary_values[node_id] = value_list[i_face] * mes_l[face_id]; + compute_node_boundary_values[node_id] = value_list[i_face]; } } } + for (NodeId node_id = 0; node_id < mesh->numberOfNodes(); ++node_id) { + if ((not node_is_neumann[node_id]) && (node_is_dirichlet[node_id])) { + compute_node_boundary_values[node_id] /= sum_mes_l[node_id]; + } + } } }, boundary_condition); -- GitLab