Skip to content
Snippets Groups Projects
Commit 9ab62349 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[PL] BC; Fix lower order element values access.

In cases when the underlying element is quadratic but the shape function
is of linear order, there is a dimension mismatch between the
NodalVectorType and the return value of the getNodalValuesOnElement.

Taking the first rows of the return matrix ensures correct dimensions.
parent 129e7e39
No related branches found
No related tags found
No related merge requests found
...@@ -57,7 +57,8 @@ public: ...@@ -57,7 +57,8 @@ public:
// Get element nodes for the interpolation from nodes to integration // Get element nodes for the interpolation from nodes to integration
// point. // point.
NodalVectorType parameter_node_values = NodalVectorType parameter_node_values =
_neumann_bc_parameter.getNodalValuesOnElement(Base::_element, t); _neumann_bc_parameter.getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
for (unsigned ip = 0; ip < n_integration_points; ip++) for (unsigned ip = 0; ip < n_integration_points; ip++)
{ {
......
...@@ -55,9 +55,11 @@ public: ...@@ -55,9 +55,11 @@ public:
Base::_integration_method.getNumberOfPoints(); Base::_integration_method.getNumberOfPoints();
typename Base::NodalVectorType const alpha = typename Base::NodalVectorType const alpha =
_data.alpha.getNodalValuesOnElement(Base::_element, t); _data.alpha.getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
typename Base::NodalVectorType const u_0 = typename Base::NodalVectorType const u_0 =
_data.u_0.getNodalValuesOnElement(Base::_element, t); _data.u_0.getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
for (unsigned ip = 0; ip < n_integration_points; ++ip) for (unsigned ip = 0; ip < n_integration_points; ++ip)
{ {
......
...@@ -64,16 +64,20 @@ public: ...@@ -64,16 +64,20 @@ public:
// Get element nodes for the interpolation from nodes to // Get element nodes for the interpolation from nodes to
// integration point. // integration point.
NodalVectorType const constant_node_values = NodalVectorType const constant_node_values =
_data.constant.getNodalValuesOnElement(Base::_element, t); _data.constant.getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
NodalVectorType const coefficient_current_variable_node_values = NodalVectorType const coefficient_current_variable_node_values =
_data.coefficient_current_variable.getNodalValuesOnElement( _data.coefficient_current_variable
Base::_element, t); .getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
NodalVectorType const coefficient_other_variable_node_values = NodalVectorType const coefficient_other_variable_node_values =
_data.coefficient_other_variable.getNodalValuesOnElement( _data.coefficient_other_variable
Base::_element, t); .getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
NodalVectorType const coefficient_mixed_variables_node_values = NodalVectorType const coefficient_mixed_variables_node_values =
_data.coefficient_mixed_variables.getNodalValuesOnElement( _data.coefficient_mixed_variables
Base::_element, t); .getNodalValuesOnElement(Base::_element, t)
.template topRows<ShapeFunction::MeshElement::n_all_nodes>();
unsigned const n_integration_points = unsigned const n_integration_points =
Base::_integration_method.getNumberOfPoints(); Base::_integration_method.getNumberOfPoints();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment