Releases: Project-SEA-Stack/HydroChrono
HydroChrono 0.4.0 – Major Refactor with Modular Hydrodynamics Core, New HydroSystem Façade & Chrono Coupling Layer
HydroChrono 0.4.0 introduces a fully modular hydrodynamics architecture with a clean HydroSystem façade and a dedicated Chrono coupling layer. This release preserves all existing behaviour while making HydroChrono cleaner, safer, and easier to extend.
Highlights
- New HydroSystem façade — the main user-facing entry point (replaces
TestHydro) - Chrono-free HydroForces core for hydrostatics, radiation, and excitation
- Dedicated ChronoHydroCoupler linking Chrono bodies to the hydrodynamics core
- Unified C++ and YAML workflows (both now use the same hydrodynamics engine)
- Radiation logic consolidated into a single component (IRF processing, history, convolution)
- Exceptions replace critical
assert()s; public headers cleaned and namespaced - Full regression test suite passing (PDF included)
What’s New
- Core
- Introduced
hydrochrono::hydro::HydroForces,SystemState,BodyForces,GeneralizedForce - Modular force components: Hydrostatics, Radiation, Excitation
- Standardised 6-DOF indexing and sign conventions
- Introduced
- Façade & Coupling
HydroSystemis the new user-facing class (aliasesTestHydroandHydroForcesretained for compatibility)- New
ChronoHydroCouplerbuildsSystemStateand bridges to the core
- Modules & Layout
- Clean directory structure:
core/,chrono/,radiation/,waves/,config/ - New radiation modules for IRF preprocessing and convolution
- Clean directory structure:
- Robustness & Cleanup
- Replaced
assert()with descriptive exceptions - Removed
using namespacefrom public headers - Explicit Chrono includes; improved file-level documentation
- Replaced
Install (Windows x64)
- Download
HydroChrono-0.4.0-win64.zip - Unzip — all required DLLs included (Chrono, HDF5, yaml-cpp, Irrlicht, MSVC)
- Run regression tests:
python .\tests\run_hydrochrono\run_tests.py --all
HydroChrono 0.2.8 - Fixes for gcc compilation and wave kinematics
This patch fixes the following issues:
- Fix compilation issue with gcc for demos (+ explicitly include <algorithm>)
- Add wave stretching option for regular waves
- Deep water check done with a common function (condition k*h>89.4 to be considered deep water)
- Wheeler wave stretching done with a common function, and corrected when mwl=/=0
HydroChrono 0.3.2 – CLI polish & YAML/HDF5 & GUI robustness improvements
HydroChrono 0.3.2 focuses on CLI polish, robust wave inputs, exporting irregular wave data to HDF5 files, and a fix to the GUI pause/play button.
Highlights
- Progress bar updates in-place and respects
--quiet - Wave parsing shorthands:
h/H,t/T/tp/TP/p/P,amplitude/A- with validation - HDF5 export of irregular inputs: frequencies, spectrum, and free-surface time/eta
- Larger Play/Pause button with fixed label
What’s new
- CLI
- Progress bar fixed
- Waves
- Shorthand keys for height/period/amplitude
- Validation errors for missing/invalid regular wave inputs
- Irregular waves: corrected forcing, reproducible via
seed
- Export
- Writes
/inputs/simulation/waves/irregular/{frequencies_hz, spectral_densities, free_surface_time, free_surface_eta}
- Writes
- GUI
- Enlarged Play/Pause button and improved text rendering
Install (Windows x64)
- Download
HydroChrono-0.3.2-win64.zip - Unzip; all required DLLs included (Chrono, HDF5, yaml-cpp, Irrlicht, MSVC)
- Run regression tests:
python .\tests\run_hydrochrono\run_tests.py --all
HydroChrono 0.3.1 – 5× faster radiation damping with Savitzky–Golay smoothing, SIMD & Linux fixes, and --profile support
HydroChrono 0.3.1 delivers major refactoring and performance improvements across hydrostatics and radiation damping, adds profiling and smoothing features, and introduces full Linux build support.
Highlights
- Refactored hydrostatics and radiation damping modules for clarity, safety, and maintainability
- Unified Eigen-only math backend; resolves vectorization/SIMD compatibility issues
- Refactored & Parallelized radiation damping convolution integral (5× faster)
- Added Savitzky–Golay smoothing and tapering for more stable convolution results
- New
--profileflag for runtime performance breakdowns - Auto-enable Irrlicht GUI when
IrrlichtDiris configured - Fixed and verified Linux builds
What’s new
- Core
- Refactored hydrostatics and radiation damping code paths
- Parallel convolution integral with Savitzky–Golay smoothing
- Unified Eigen-only vectorization backend
- CLI
- Added
--profileflag for timing and performance reporting
- Added
- Build
- Linux build support (tested on Ubuntu 22.04 / 24.04)
- Updated
build.ps1with Irrlicht auto-detection and improved dependency handling
Install (Windows x64)
- Download
HydroChrono-0.3.1-win64.zip - Unzip; all required DLLs included (Chrono, HDF5, yaml-cpp, Irrlicht, MSVC)
- Run the regression tests:
python .\tests\run_hydrochrono\run_tests.py --all
HydroChrono 0.3 - YAML CLI app with HDF5 outputs, logging and regression tests
HydroChrono 0.3 delivers a YAML-driven CLI app, portable Windows packaging, consistent HDF5 outputs, and a new regression test suite for the main binary - run_hydrochrono.exe.
Highlights
- New CLI app:
run_hydrochrono.exe(YAML-driven) - HDF5 writer for analysis-ready results
- Unified logging API
- Regression tests for the CLI (CTest + Python)
- Deterministic Windows build; packaged DLLs (Chrono, HDF5, MSVC); tests ON by default
- Updated website documentation with quick start guides and new build instructions
What’s new
- CLI/YAML
- YAML parsing (SEA-Stack-IO schema)
- CLI for running the code
- Demos and batch runs included
- I/O
- HDF5 writer; safe open/write handling
- Logging
- Unified API + backend; consistent usage across src/
- Tests
- Python suite with plotting:
python .\tests\run_hydrochrono\run_tests.py --all
- Python suite with plotting:
- Build
build.ps1for VS2022 x64 with fixed package discovery- Packaged HDF5 + MSVC runtimes; Chrono/yaml-cpp/Irrlicht DLL support
- Tests enabled by default
Install (Windows x64)
- Download
HydroChrono-0.3-win64.zip - Unzip; all required DLLs included (HDF5, MSVC; Chrono/yaml-cpp/Irrlicht)
- Run the Python test suite with plotting:
python .\tests\regression\run_hydrochrono\run_tests.py --all
HydroChrono v0.2.7 – Testing framework & Windows build script
Highlights
- Introduces regression testing framework and helpers.
- Migrates suites: sphere decay, RM3, OSWEC, F3OF DT1/DT2/DT3.
- Unifies reference data & comparison scripts; improves test logging.
- Adds
quick-build.ps1andbuild-config.example.json; updates README with config-driven Windows build steps. - CMake: link Chrono/Eigen as imported targets (PUBLIC) and make include discovery robust when
Chrono_DIRpoints to a build tree. - Updates .gitignore.
- No breaking changes.
Compatibility
- Project Chrono v9.0.1
- Windows 10/11, VS 2022, CMake 3.18+, HDF5 1.10.8+, Eigen 3.4+
- Irrlicht optional (required for GUI helper)
Windows quick build
# from repo root
copy build-config.example.json build-config.json
# edit build-config.json with your local paths, then:
.\quick-build.ps1 -Clean
ctest -C Release --output-on-failure --test-dir buildv0.2.6 – Chrono 9.0.1 Upgrade
- Upgraded Project Chrono dependency to v9.0.1.
- 28/29 tests pass with the new version.
- One demo test (
demo_rm3_reg_waves_01) is still failing and will be tracked separately. - General build and test process improvements.
Thank you to @dariomangoni for their contribution and patience!
HydroChrono v0.2.5 - patch for ramp and eta dt
This patch brings the following updates:
- If a ramp is used, apply it from time = 0.0 and zero out precomputed elevation for time < 0.0
- Use provided simulation dt exactly for irregular wave elevation precomputation
- Increase precision for output files of spectral densities and precomputed wave elevation
What's Changed
Full Changelog: v0.2.4...v0.2.5
HydroChrono v0.2.4 - patch for HDF5 dependency
This patch allows HydroChrono to HDF5 dependency in a more standardized way, tested with HDF5 1.10.8 (originally recommended version by HydroChrono) and newer version HDF5 1.14.4.
What's Changed
Full Changelog: v0.2.3...v0.2.4
HydroChrono v0.2.3 - patch for matching irregular wave elevations
This patch ensures that precomputed wave elevations and wave elevation returned directly from calling GetElevation are matching.
What's Changed
Full Changelog: v0.2.2...v0.2.3