Parallel / Decomposed Databases
When a mesh has been decomposed across multiple processors (e.g. via decomp), each processor's piece is written to its own Exodus file (typically named mesh.g.N.RRRR where N is the number of processors and RRRR is the zero-padded rank). Exodus.jl provides read access to the parallel-specific metadata stored in these files: load-balance parameters, communication maps, and processor-local node/element maps.
These capabilities work without requiring an MPI-enabled build of Exodus.jl/SEACAS — they simply read the parallel metadata that SEACAS decomposition tools embed in each per-rank file. Genuinely parallel (MPI-collective) I/O is not implemented.
Global initialization info
num_proc, num_proc_in_file, file_type = read_init_info(exo)
init_global = InitializationGlobal(exo) # global mesh sizing, mirrors InitializationLoad balance parameters
For a given per-rank file and processor number (1-indexed, matching the rank's position within the file):
lb = LoadBalanceParameters(exo, processor)
lb.num_int_nodes # interior nodes owned solely by this processor
lb.num_bor_nodes # border (shared) nodes
lb.num_ext_nodes # external (ghost) nodes
lb.num_int_elems
lb.num_bor_elems
lb.num_node_cmaps
lb.num_elem_cmapsCommunication map parameters
cmap_params = CommunicationMapParameters(exo, lb, processor)
cmap_params.node_cmap_ids
cmap_params.node_cmap_node_cnts
cmap_params.elem_cmap_ids
cmap_params.elem_cmap_elem_cntsNode and element communication maps
node_cmap = NodeCommunicationMap(exo, node_map_id, node_cnt, processor)
node_cmap.node_ids
node_cmap.proc_ids
elem_cmap = ElementCommunicationMap(exo, elem_map_id, elem_cnt, processor)
elem_cmap.elem_ids
elem_cmap.side_ids
elem_cmap.proc_idsProcessor-local node/element maps
node_maps = ProcessorNodeMaps(exo, processor)
node_maps.node_map_internal
node_maps.node_map_border
node_maps.node_map_external
elem_maps = ProcessorElementMaps(exo, processor)
elem_maps.elem_map_internal
elem_maps.elem_map_borderHigh-level helpers
A handful of convenience functions in Helper Utilities build on these primitives to assemble global numbering information across an entire decomposed mesh, e.g. Exodus.read_node_cmaps, Exodus.read_ghost_nodes_and_procs, and Exodus.read_internal_nodes_and_procs.
Command-line tool wrappers
Exodus.jl also exposes thin wrappers around the SEACAS command-line utilities for mesh decomposition and post-processing:
decomp— partition a mesh into per-processor filesepu— recombine (un-decompose) per-processor results filesexodiff— numerically compare two Exodus databases
These call out to the corresponding SEACAS executables and are intended for scripting parallel pre/post-processing workflows around Exodus.jl.