mesh-sieve 4.0.2

Modular, high-performance Rust library for mesh and data management, designed for scientific computing and PDE codes.
Documentation
# Exodus Support

## Overview
`mesh-sieve` ships two Exodus paths:

- **Legacy ASCII**: `ExodusReader`/`ExodusWriter` parse the simple text format that starts with `EXODUS`.
- **Exodus II (HDF5)**: `ExodusIiReader`/`ExodusIiWriter` handle the HDF5-backed Exodus II layout and translate common entities into sieve topology and labels.

## Supported Exodus II entities

### Coordinates
- Reads `coord` (2D) or the `coordx`/`coordy`/`coordz` datasets.
- Uses the optional `num_dim` dataset to set coordinate dimension metadata when present.
- Writes `num_dim` plus `coordx`/`coordy`/`coordz` on export.

### Element blocks
- Reads `elem_blk_id`/`connect*` datasets and maps each block to label entries named `exodus:block:<id>`.
- Writes `elem_blk_id`/`connect*` datasets. Blocks are inferred from labels named `exodus:block:<id>`; otherwise all cells are emitted in block `1`.
- Supported element types:
  - `POINT`
  - `BAR2`, `LINE2`, `EDGE2`
  - `TRI3`
  - `QUAD4`
  - `TET4`
  - `HEX8`
  - `WEDGE6`
  - `PYRAMID5`

### Node sets
- Reads `node_ns*` datasets and labels nodes using `exodus:node_set:<id>`.
- Writes node set datasets from `exodus:node_set:<id>` labels.

### Side sets
- Reads `elem_ss*`/`side_ss*` datasets and labels elements using `exodus:side_set:<id>`.
- Writes side set datasets from `exodus:side_set:<id>` labels. The label value is used as the side ordinal when present.

## Limitations
- Only the **HDF5-backed** Exodus II layout is supported. Classic netCDF Exodus files are not handled.
- Element blocks must be homogeneous: mixed cell types within a block are rejected on export.
- Higher-order Exodus elements (for example, `HEX20`, `TET10`) are not supported.
- Side sets are stored on element points; face/edge points are not created automatically. If multiple sides of the same element appear in one set, the last side ordinal wins.