Exodus.jl
Exodus.jl is a Julia wrapper around the SEACAS ExodusII C library (libexodus, provided via Exodus_jll). It exposes a thin, type-stable interface for reading and writing finite-element mesh databases in the Exodus/Genesis (.e/.g) format: coordinates, element blocks, node sets, side sets, maps, QA/info records, time steps, and field variables (global, nodal, element, node set, and side set variables).
Features
- Read and write Exodus mesh databases (
ExodusDatabase) - Access blocks, node sets, and side sets by ID or by name
- Read/write nodal coordinates and coordinate names
- Read/write maps (node, element, face, edge) and ID maps
- Read/write global, nodal, element, node set, and side set variables
- Read/write time steps
- Read/write QA and info records
- Helper utilities for building connectivity graphs (element-to-element, node-to-element)
- Basic support for parallel/decomposed Exodus databases (load-balance and communication-map parameters)
- Thin wrappers around the
decomp,epu, andexodiffSEACAS command line tools
Installation
] add ExodusExodus.jl depends on Exodus_jll, which ships a prebuilt libexodus, so no separate installation of the SEACAS/ExodusII library is required.
Quick start
using Exodus
# open an existing mesh in read mode
exo = ExodusDatabase("mesh.g", "r")
init = Exodus.initialization(exo) # mesh sizing info
coords = read_coordinates(exo) # num_dim x num_nodes matrix
block = read_block(exo, 1) # element Block by ID
nsets = read_sets(exo, NodeSet) # all NodeSets
close(exo)Or, using the do-block form which closes the file automatically:
ExodusDatabase("mesh.g", "r") do exo
coords = read_coordinates(exo)
block_ids = read_ids(exo, Block)
endManual Outline
- The
ExodusDatabase - Element Blocks
- Node Sets & Side Sets
- Coordinates
- Maps
- Variables
- Time Steps
- Info & QA Records
- Parallel / Decomposed Databases
- Helper Utilities