def _read_exodusii_mesh(reader, timestep=None):
<EOL>reader.UpdateInformation()<EOL>if timestep:<EOL><INDENT>reader.SetTimeStep(timestep)<EOL><DEDENT>for k in range(reader.GetNumberOfPointResultArrays()):<EOL><INDENT>arr_name = reader.GetPointResultArrayName(k)<EOL>reader.SetPointResultArrayStatus(arr_name, <NUM_LIT:1>)<EOL><DEDENT>for k in range(reader.GetNumberOfElementResultArrays()):<EOL><INDENT>arr_name = reader.GetElementResultArrayName(k)<EOL>reader.SetElementResultArrayStatus(arr_name, <NUM_LIT:1>)<EOL><DEDENT>for k in range(reader.GetNumberOfGlobalResultArrays()):<EOL><INDENT>arr_name = reader.GetGlobalResultArrayName(k)<EOL>reader.SetGlobalResultArrayStatus(arr_name, <NUM_LIT:1>)<EOL><DEDENT>reader.Update()<EOL>out = reader.GetOutput()<EOL>vtk_mesh = []<EOL>for i in range(out.GetNumberOfBlocks()):<EOL><INDENT>blk = out.GetBlock(i)<EOL>for j in range(blk.GetNumberOfBlocks()):<EOL><INDENT>sub_block = blk.GetBlock(j)<EOL>if sub_block is not None and sub_block.IsA("<STR_LIT>"):<EOL><INDENT>vtk_mesh.append(sub_block)<EOL><DEDENT><DEDENT><DEDENT>assert vtk_mesh, "<STR_LIT>"<EOL>assert len(vtk_mesh) == <NUM_LIT:1>, "<STR_LIT>"<EOL>for k in range(vtk_mesh[<NUM_LIT:0>].GetPointData().GetNumberOfArrays()):<EOL><INDENT>array = vtk_mesh[<NUM_LIT:0>].GetPointData().GetArray(k)<EOL>array_name = array.GetName()<EOL>if array_name[-<NUM_LIT:1>] == "<STR_LIT:_>":<EOL><INDENT>array.SetName(array_name[<NUM_LIT:0>:-<NUM_LIT:1>])<EOL><DEDENT><DEDENT>return vtk_mesh[<NUM_LIT:0>]<EOL>
Uses a vtkExodusIIReader to return a vtkUnstructuredGrid.