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 HydroSystem each step with other hydro forces
  • MoorDynConfig - Config struct and SetMoorDynConfig() API; must be set before first DoStepDynamics()
  • 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 - Centralised M_PI (and related constants) replacing per-file definitions
  • IRF processing - Truncation separated from smoothing/tapering in RadiationKernelProcessing
  • RegularWave - Encapsulated with SetPeriod() / 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-submodules or init MoorDyn for mooring support

Install (Windows x64)

  1. Download HydroChrono-0.7.0-win64.zip

  2. Unzip - all required DLLs included
    (Chrono, HDF5, yaml-cpp, VSG, MSVC runtime)

  3. Run a simulation:

    .\run_hydrochrono.exe path\to\input_directory
    
  4. 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 integration
  • RadiationStateSpaceFitter — Hankel-SVD system identification matching the WEC-Sim / BEMIO approach
  • RadiationStateSpaceComponent — force component integrating with HydroSystem
  • RadiationMethod enum and StateSpaceOptions configuration 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_bodies removed from wave classes — set automatically in HydroSystem::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)

  1. Download HydroChrono-0.6.0-win64.zip

  2. Unzip — all required DLLs included
    (Chrono, HDF5, yaml-cpp, VSG, MSVC runtime)

  3. Run a simulation:

    .\HydroChrono.exe path\to\input_directory
    
  4. 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 ChLoadAddedMass retained 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)
  • 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: LoadSolverData not invoked due to structure mismatch
  • YAML runner: mesh path resolution when m_script_directory was 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
  • Façade & Coupling
    • HydroSystem is the new user-facing class (aliases TestHydro and HydroForces retained for compatibility)
    • New ChronoHydroCoupler builds SystemState and bridges to the core
  • Modules & Layout
    • Clean directory structure: core/, chrono/, radiation/, waves/, config/
    • New radiation modules for IRF preprocessing and convolution
  • Robustness & Cleanup
    • Replaced assert() with descriptive exceptions
    • Removed using namespace from public headers
    • Explicit Chrono includes; improved file-level documentation

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}
  • 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 --profile flag for runtime performance breakdowns
  • Auto-enable Irrlicht GUI when IrrlichtDir is 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 --profile flag for timing and performance reporting
  • Build
    • Linux build support (tested on Ubuntu 22.04 / 24.04)
    • Updated build.ps1 with 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
  • Build
    • build.ps1 for 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.ps1 and build-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_DIR points 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:

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