Skip to content

v1.2.0

Choose a tag to compare

@Interfluo Interfluo released this 27 Jun 23:20
0de6381

exovista 1.2.0

This release adds a PyVista import path (the inverse of write_exo), fixes
a number of real bugs, and stands up project infrastructure (CI, packaging).

✨ New feature: ExodusII → PyVista

  • exovista.read_exo(filename, *files, ...) reconstructs an ExodusII file
    into a pyvista.UnstructuredGrid — the inverse of write_exo:
    • Node coordinates (2D meshes embedded in 3D with z = 0) and all element
      blocks, with exo_block_id / exo_block_name recorded as cell data.
    • Node variables → point_data, element variables → cell_data, sampled at a
      selectable time_step; time history exposed in field_data.
    • read_side_sets=True also returns a MultiBlock of PolyData side sets,
      rebuilt over the shared volume nodes (3D faces → polygons, 2D edges → lines),
      each carrying orig_elem_id / face_id. Round-trips are exact.
  • Works for both serial files and globbed parallel decompositions.

🐛 Bug fixes

  • Parallel join crash: get_node_set_dist_facts returned a np.ones
    fallback while caching None, so num_dist_facts disagreed with dist_facts
    and crashed the join. Now consistent with the serial reader.
  • similar() compared a file against itself for element block IDs, so
    block-ID mismatches were never detected.
  • Quad4.center averaged only x, divided by 4 a second time, and dropped y;
    now returns the true centroid like its sibling elements.
  • numpy 2.x: replaced deprecated np.row_stack with np.vstack.
  • Invalid block IDs now raise a clear ValueError instead of an opaque
    TypeError (five raise None sites).
  • Fixed a latent NameError in copy_variable_histories.
  • write_exo no longer mutates the caller's meshes (works on shallow copies,
    so helper arrays don't leak onto inputs).
  • Fixed the broken exoread console-script entry point
    (exodusii:exoreadexovista:exoread).

🔧 Infrastructure & packaging

  • GitHub Actions CI: flake8 + pytest across Python 3.10–3.12 (headless VTK);
    the package is now lint-clean.
  • Filled out pyproject.toml metadata (readme, requires-python, license,
    classifiers, URLs, [dev] extras, explicit package discovery).
  • Test suite expanded to cover read_exo, parallel join, elements, similar,
    and the exoread CLI. Tests depending on non-redistributed reference files
    now skip cleanly instead of failing.

Full changelog: v1.1.1...v1.2.0