Skip to content

release: 1.4.0 - XDMF parser, annotation mode, faster playback - #9

Merged
sssilvar merged 5 commits into
mainfrom
annot
Aug 7, 2026
Merged

release: 1.4.0 - XDMF parser, annotation mode, faster playback#9
sssilvar merged 5 commits into
mainfrom
annot

Conversation

@sssilvar

@sssilvar sssilvar commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Summary

Release 1.4.0. Adds XDMF support for dynamic simulation data, reworks the playback bar, and ships the previously unreleased annotation mode.

XDMF parser (.xdmf / .xmf)

  • XML light data via vtkXMLUtilities; heavy data via the HDF5 C API using the copy VTK already links (VTK::hdf5, falling back to find_package(HDF5)) - no new dependency.
  • Static Topology/Geometry read once (Triangle/Quadrilateral/Line, XY or XYZ); the temporal collection becomes one dataset path per step per Attribute, Node- and Cell-centered.
  • Unsupported topologies, geometry types and non-HDF DataItem formats fail with an explicit message.

Playback

  • Per frame: one H5Dread directly into the existing vtkFloatArray buffer (float64 to float32 on the fly), no allocation, no geometry re-read; only the array is marked modified.
  • Frames cache in RAM as float under a 512 MB budget, so looping a typical run is zero-I/O.
  • Playback is now clock-driven (QElapsedTimer + anchor step): each tick jumps to the frame the elapsed time calls for, dropping frames instead of queueing them, so 8x/12x runs at the requested rate rather than in slow motion.
  • Bar gains previous/next frame buttons and a speed drop-up (1x/2x/4x/8x/12x, opening upwards since the bar is bottom-centered). Icons stay vector-drawn QPainterPath glyphs.
  • TemporalSource is now an interface with VTKHDFTemporalSource and XdmfTemporalSource backends; parsers expose their series through MeshParser::temporal(), replacing the dynamic_cast in MeshLoading.

Verification

Loaded a 302-step FEniCS output (22801 points, 45000 triangles): geometry, scalars and playback all correct, and the fixed color range matches an independent h5py computation exactly (-84.28 .. 35.02).

Also included: annotation mode (--annotate) and mesh JSON surfaces key, both previously committed but unreleased.

@sssilvar
sssilvar merged commit abbf53a into main Aug 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant