Skip to content
Snippets Groups Projects
Commit 33ecbe61 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add treatment for given node lists for Dirichlet

This is the case of corners for instance
parent 447834c0
No related branches found
No related tags found
No related merge requests found
...@@ -97,6 +97,35 @@ HeatDiamondScheme<Dimension>::HeatDiamondScheme( ...@@ -97,6 +97,35 @@ HeatDiamondScheme<Dimension>::HeatDiamondScheme(
boundary_condition_list.push_back(DirichletBoundaryCondition{node_list, value_list}); boundary_condition_list.push_back(DirichletBoundaryCondition{node_list, value_list});
} }
} }
if constexpr (Dimension > 1) {
for (size_t i_ref_node_list = 0;
i_ref_node_list < mesh->connectivity().template numberOfRefItemList<ItemType::node>(); ++i_ref_node_list) {
const auto& ref_node_list = mesh->connectivity().template refItemList<ItemType::node>(i_ref_node_list);
const RefId& ref = ref_node_list.refId();
if (ref == dirichlet_bc_descriptor.boundaryDescriptor()) {
const FunctionSymbolId g_id = dirichlet_bc_descriptor.rhsSymbolId();
const auto& node_list = ref_node_list.list();
Array<const double> value_list =
InterpolateItemValue<double(TinyVector<Dimension>)>::template interpolate<ItemType::node>(g_id,
mesh->xr(),
node_list);
for (size_t i_node = 0; i_node < node_list.size(); ++i_node) {
NodeId node_id = node_list[i_node];
if (not is_dirichlet[node_id]) {
is_dirichlet[node_id] = true;
dirichlet_value[node_id] = value_list[i_node];
}
}
boundary_condition_list.push_back(DirichletBoundaryCondition{node_list, value_list});
}
}
}
break; break;
} }
case IBoundaryConditionDescriptor::Type::fourier: { case IBoundaryConditionDescriptor::Type::fourier: {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment