Recent Releases of HydroChrono
HydroChrono - HydroChrono v0.7.0 - MoorDyn mooring integration
Highlights
MoorDyn mooring integration - MoorDyn v2.6.1 is now coupled as a Git submodule, so you can run catenary and taut mooring analysis inside Chrono-based WEC simulations. Mooring forces are applied at each timestep alongside hydrostatic, radiation, and excitation. Configure via MoorDynConfig and HydroSystem::SetMoorDynConfig(); optional at build time with HYDROCHRONO_HAVE_MOORDYN.
RM3 mooring verification - Cross-code comparison against the WEC-Sim/MoorDyn co-simulation of the RM3 two-body point absorber with a 3-line catenary mooring. Automated CTest checks body heave and fairlead tensions; typical agreement is correlation ≈ 0.998 and max tension error ≈ 1.8% of mean. Reference data and comparison plots are documented in the verification section of the docs.
Real-time mooring visualization - The VSG GUI draws mooring line geometry from MoorDyn each frame and colours lines by instantaneous tension (blue–red gradient), so you can visually check mooring loads during a run.
https://github.com/user-attachments/assets/84a79142-62e8-4efa-8a2d-b5f97f5f8b29
What's New
MoorDyn Mooring
- MoorDyn v2.6.1 - Integrated as a submodule; optional build with
HYDROCHRONO_HAVE_MOORDYN - Force coupling - MoorDyn fairlead forces applied in
HydroSystemeach step with other hydro forces MoorDynConfig- Config struct andSetMoorDynConfig()API; must be set before firstDoStepDynamics()- RM3 mooring demo - YAML-driven case: RM3 float + plate, 3 lines × 2 segments (anchor–clump, clump–fairlead), runnable with
run_hydrochrono - Mooring line visualization - VSG renders line nodes from MoorDyn with dynamic tension colormap
- RM3 mooring verification test - CTest comparison vs WEC-Sim/MoorDyn reference (body motions + FairTen4/5/6); plots and tolerances in
tests/verification/rm3_mooring/
Core / Build
hydroc/math_constants.h- CentralisedM_PI(and related constants) replacing per-file definitions- IRF processing - Truncation separated from smoothing/tapering in
RadiationKernelProcessing RegularWave- Encapsulated withSetPeriod()/SetOmega()accessors- Build fixes - HDF5 target conflicts and Eigen3 detection resolved for cross-machine builds; Chrono API and test infrastructure updated
Known Issues
- OSWEC validated with GMRES only (SPARSE_QR not yet confirmed stable)
- PSOR solver incompatible with added-mass assembly (stiffness/damping matrix errors; other solvers pass)
- MoorDyn is not included in the Windows package when built without the MoorDyn submodule; clone with
--recurse-submodulesor init MoorDyn for mooring support
Install (Windows x64)
-
Download
HydroChrono-0.7.0-win64.zip -
Unzip - all required DLLs included
(Chrono, HDF5, yaml-cpp, VSG, MSVC runtime) -
Run a simulation:
.\run_hydrochrono.exe path\to\input_directory -
Run the full regression suite:
.\RUN-TESTS.ps1
Renewable Energy - Hydro Energy
- C++
Published by dav-og about 2 months ago
HydroChrono -
Highlights
State-space radiation damping — a new O(1)-per-timestep alternative to convolution-based radiation. Instead of convolving the full RIRF kernel history at every step, the kernel is approximated as a sum of exponential and oscillatory modes and propagated via a compact state vector. Selectable via C++ API or YAML (radiation_method: state_space). Performance gains range from modest to significant depending on kernel complexity and simulation length — up to 19.6x on the sphere decay benchmark.
Irregular wave excitation reworked — the time-domain excitation convolution is replaced by a pre-computed frequency-domain transfer function, and the irregular wave model is decoupled from simulation parameters (simulation_dt_, simulation_duration_ removed from IrregularWaveParams), clearing the path for adaptive time integration.
What's New
State-Space Radiation
RadiationStateSpaceModel— exponential and oscillatory mode support with exact exponential time integrationRadiationStateSpaceFitter— Hankel-SVD system identification matching the WEC-Sim / BEMIO approachRadiationStateSpaceComponent— force component integrating withHydroSystemRadiationMethodenum andStateSpaceOptionsconfiguration struct- YAML keys:
radiation_method,ss_max_order,ss_r2_threshold,output_kernel_fit - Kernel-fit diagnostics (R² values and mode counts per DOF pair) optionally written to HDF5 output
- Unit tests for model and fitter
- Regression tests: sphere/OSWEC decay and irregular waves (state-space vs convolution)
Wave Class Improvements
- Frequency-domain excitation transfer function for irregular waves — O(N_freq) per DOF per timestep instead of O(N_irf × N_freq)
- Irregular wave model decoupled from simulation parameters;
nfrequencies_is now a required parameter - Redundant
num_bodiesremoved from wave classes — set automatically inHydroSystem::AddWaves()
Known Issues
- OSWEC validated with GMRES only (SPARSE_QR not yet confirmed stable)
- PSOR solver incompatible with added-mass assembly (stiffness/damping matrix errors; other solvers pass)
Install (Windows x64)
-
Download
HydroChrono-0.6.0-win64.zip -
Unzip — all required DLLs included
(Chrono, HDF5, yaml-cpp, VSG, MSVC runtime) -
Run a simulation:
.\HydroChrono.exe path\to\input_directory -
Run the full regression suite:
.\RUN-TESTS.ps1
Renewable Energy - Hydro Energy
- C++
Published by dav-og about 2 months ago
HydroChrono - HydroChrono 0.5.0 – Real-Time VSG Ocean Visualization, ChLoadHydrodynamics Added Mass & Improvements to Automated Regression Reporting
🚢 HydroChrono 0.5.0
HydroChrono 0.5.0 introduces real-time free-surface visualization using VulkanSceneGraph (VSG), switches to Chrono’s native added-mass assembly, and significantly strengthens automated regression reporting.
https://github.com/user-attachments/assets/75a450f1-ba90-4e02-9659-59072dc4e36b
This release improves numerical consistency, visualization capability, and reproducibility while preserving the modular hydrodynamics architecture introduced in 0.4.0.
Highlights
- Real-time VSG free-surface rendering driven directly by the wave model
- Default added-mass assembly via
ChLoadHydrodynamics - Legacy
ChLoadAddedMassretained behind compile flag - Automated headless regression test reporting with PDF output
- Multibody excitation phase bug fix
- Full regression suite passing (Sphere, OSWEC, RM3, F3OF)
What’s New
-
Visualization
- Animated free-surface mesh with per-vertex normals
- Physically based rendering ocean materials and configurable grid resolution
- Radiated wave overlay surface
- Modular VSG components (
vsg_water_surface,vsg_radiation_surface, etc.)
-
Core & Hydrodynamics
- Default added-mass now assembled using
ChLoadHydrodynamics - Determinism unit test across all Chrono solvers
- Wave model extensions:
GetElevationGradientXY()
GetElevationForVisualization() - Improved irregular wave surface evaluation performance (parallelism + caching)
- Default added-mass now assembled using
-
Testing & Reporting
- Regression tests fully headless (no GUI dependency)
- Standardised comparison plots with error metrics
- Consolidated PDF report per test suite run
- RM3 output retained at full double precision
-
Packaging
- CPack bundles HydroChrono and HydroChronoGUI DLLs
- Transitive dependency collection (Chrono, VSG, yaml-cpp, draco)
- OpenMP runtime explicitly included
- Fully self-contained Windows x64 distribution
Fixed
- Regular wave excitation phase indexing for multibody systems
- YAML runner:
LoadSolverDatanot invoked due to structure mismatch - YAML runner: mesh path resolution when
m_script_directorywas empty - OSWEC solver divergence (switched from SPARSE_QR to GMRES)
- Regression report image path handling
Known Issues
- OSWEC validated with GMRES only (SPARSE_QR not yet confirmed stable)
- PSOR solver incompatible with added-mass assembly
(stiffness/damping matrix errors; other solvers pass)
Install (Windows x64)
-
Download
HydroChrono-0.5.0-win64.zip -
Unzip — all required DLLs included
(Chrono, HDF5, yaml-cpp, VSG, MSVC runtime) -
Run a simulation:
.\HydroChrono.exe path\to\input_directory -
Run the full regression suite:
.\RUN-TESTS.ps1
HydroChrono 0.5.0 extends the 0.4.0 modular architecture with real-time visualization and stronger numerical verification infrastructure.
Renewable Energy - Hydro Energy
- C++
Published by dav-og 2 months ago
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
Renewable Energy - Hydro Energy
- C++
Published by dav-og 5 months ago
HydroChrono - 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
Renewable Energy - Hydro Energy
- C++
Published by tridelat 5 months ago
HydroChrono - 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
Renewable Energy - Hydro Energy
- C++
Published by dav-og 6 months ago
HydroChrono - 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
Renewable Energy - Hydro Energy
- C++
Published by dav-og 6 months ago
HydroChrono - 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
Renewable Energy - Hydro Energy
- C++
Published by dav-og 7 months ago
HydroChrono - 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 build
Renewable Energy - Hydro Energy
- C++
Published by dav-og 7 months ago
HydroChrono - v0.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!
Renewable Energy - Hydro Energy
- C++
Published by dav-og 11 months ago
HydroChrono - 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: https://github.com/NREL/HydroChrono/compare/v0.2.4...v0.2.5
Renewable Energy - Hydro Energy
- C++
Published by tridelat 11 months ago
HydroChrono - 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: https://github.com/NREL/HydroChrono/compare/v0.2.3...v0.2.4
Renewable Energy - Hydro Energy
- C++
Published by tridelat over 1 year ago
HydroChrono - 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: https://github.com/NREL/HydroChrono/compare/v0.2.2...v0.2.3
Renewable Energy - Hydro Energy
- C++
Published by tridelat over 1 year ago
HydroChrono - HydroChrono v0.2.2 - patch for use as external library
This patch ensures that headers are installed correctly during a make install and allows for generating regular waves without .h5 file input.
What's Changed
Full Changelog: https://github.com/NREL/HydroChrono/compare/v0.2.1...v0.2.2
Renewable Energy - Hydro Energy
- C++
Published by tridelat over 1 year ago
HydroChrono - HydroChrono v0.2.1 - expansion of wave generation features
This minor release adds some features for wave generation before the upcoming switch to Chrono 9.0.0.
What's Included:
Additional wave generation features include: creation of spectrum without .h5 file, wave stretching, fluid velocity and acceleration calculations, refactoring to unify API of regular and irregular waves, etc. See related PR notes https://github.com/NREL/HydroChrono/pull/58 for details.
Full Changelog: https://github.com/NREL/HydroChrono/compare/v0.2.0...v0.2.1
Renewable Energy - Hydro Energy
- C++
Published by tridelat almost 2 years ago
HydroChrono - HydroChrono v0.2.0 - 1.6x speed up, new docs, improved irregular waves
This 2nd release covers some important improvments to HydroChrono's hydrodynamic capabilities, a 1.6x speed up and a new website.
What's Included:
- Improvements to convolution integral demonstrate 1.6x speed-up: PR https://github.com/NREL/HydroChrono/pull/50
- Overhauled documentation: https://nrel.github.io/HydroChrono/
- Several improvements made to irregular waves in PR https://github.com/NREL/HydroChrono/pull/54 , including:
- Bugfix for excitation force convolution integral
- New test for irregular waves
- Added JONSWAP spectrum (in addition to Pierson-Moskowitz)
- Improved UI for specifying irregular wave parameters
What's Next:
The next major goal is to prepare distributable binaries for future releases (currently being developed in PR #51) and associated Python wrapper for improved user friendliness.
Renewable Energy - Hydro Energy
- C++
Published by dav-og about 2 years ago
HydroChrono - HydroChrono v0.1.0 - Core Hydrodynamic Capabilities
This initial release covers HydroChrono's core hydrodynamic capabilities, which have now been developed and verified - providing a foundation for further enhancements.
What's Included:
- Main Hydrodynamic Calculations: The core hydrodynamic force computations are ready and functioning reliably.
What's Next:
While this release represents a major step forward, there's still more work ahead. We plan to:
- Continue refining and optimizing the existing calculations.
- Address any minor issues and further enhance robustness.
- Prepare distributable binaries for future releases (currently being developed in PR #51).
Renewable Energy - Hydro Energy
- C++
Published by dav-og over 2 years ago