Skip to content

Commit 01dbbdd

Browse files
committed
Handle ambiguous SIDE_HIERARCHIC sides gracefully
Otherwise as soon as we try to evaluate in between sides with a mixed context object (e.g. when doing edge projections) we error out.
1 parent 5f3d505 commit 01dbbdd

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/fe/fe_hierarchic_shape_3D.C

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,9 @@ Real FE<3,SIDE_HIERARCHIC>::shape(const Elem * elem,
874874
libmesh_assert_less(i, 6*dofs_per_side);
875875

876876
const unsigned int sidenum = cube_side(p);
877+
if (sidenum > 5)
878+
return std::numeric_limits<Real>::quiet_NaN();
879+
877880
const unsigned int dof_offset = sidenum * dofs_per_side;
878881

879882
if (i < dof_offset) // i is on a previous side
@@ -1095,6 +1098,9 @@ Real FE<3,SIDE_HIERARCHIC>::shape_deriv(const Elem * elem,
10951098
libmesh_assert_less(i, 6*dofs_per_side);
10961099

10971100
const unsigned int sidenum = cube_side(p);
1101+
if (sidenum > 5)
1102+
return std::numeric_limits<Real>::quiet_NaN();
1103+
10981104
const unsigned int dof_offset = sidenum * dofs_per_side;
10991105

11001106
if (i < dof_offset) // i is on a previous side
@@ -1346,6 +1352,9 @@ Real FE<3,SIDE_HIERARCHIC>::shape_second_deriv(const Elem * elem,
13461352
libmesh_assert_less(i, 6*dofs_per_side);
13471353

13481354
const unsigned int sidenum = cube_side(p);
1355+
if (sidenum > 5)
1356+
return std::numeric_limits<Real>::quiet_NaN();
1357+
13491358
const unsigned int dof_offset = sidenum * dofs_per_side;
13501359

13511360
if (i < dof_offset) // i is on a previous side
@@ -1578,8 +1587,10 @@ unsigned int cube_side (const Point & p)
15781587
return 4;
15791588
else if (zeta > maxabs_xi_eta)
15801589
return 5;
1581-
else
1582-
libmesh_error_msg("Cannot determine side to evaluate");
1590+
1591+
// We need to be able to return invalid values for cases where
1592+
// mixed FE are being evaluated together on edges and vertices
1593+
return 65535;
15831594
}
15841595

15851596

0 commit comments

Comments
 (0)