_encode_exodus finds the end of each face with np.where(row == -1), but
connectivity padding is stored as INT_FILL_VALUE. The comparison never
matches, so every face is counted at the maximum width. Two things follow: a
mixed mesh collapses into a single element block carrying the wrong element type
(triangles and quads all written as SHELL4), and the padding itself is written
out as INT_FILL_VALUE + 1 in a slot where a node index belongs.
_encode_exodusfinds the end of each face withnp.where(row == -1), butconnectivity padding is stored as
INT_FILL_VALUE. The comparison nevermatches, so every face is counted at the maximum width. Two things follow: a
mixed mesh collapses into a single element block carrying the wrong element type
(triangles and quads all written as
SHELL4), and the padding itself is writtenout as
INT_FILL_VALUE + 1in a slot where a node index belongs.