Linear potential wave-body model
Overview
We would like to combine the non-linear hydrostatic restoring force model used in asv_wave_sim with a linear potential flow wave-body interaction model.
The initial application is to buoys and other structures that satisfy the requirement that the displacements about an initial condition are expected to be small. However some of the features may be useful for surface vehicles, in particular the wave radiation damping and added mass contributions from the linear model may provide a better mechanism than the current model, particularly for larger / more massive vessels.
Approach
The linear wave-body model resolves the interaction into a number of different forces and the way these are incorporated in the simulation differs depending on the type of waves.
Forces
- Buoyancy
- Linear hydrostatic restoring forces
- Wave radiation damping
- Wave radiation added mass
- Wave excitation
Waves
- No waves (decay tests)
- Regular waves, single frequency
- Regular waves, multi-frequency
- Random waves, multi-frequency (FFT methods)
The proposed approach is to progress through the cases starting with the simplest model, no waves with linear hydrostatic restoring forces, and progressively work through the additional forces for each wave category before moving onto a more complex wave model.
Implementation
A working demonstration of the model is available on the demo/linear-wave-body branch which will be used to track progress:
- #70
- #71
- #72
- #73
- #74
- #75
- #76
- #77
Ellipsoid buoy test case
The test case is an ellipsoid buoy with same dimensions used in the WEC-Sim Nonlinear_Hydro example.
- semi-axis: x=5.0m, y=5.0m, z=2.5m
- mass: 134200kg
- moments: Ixx=838750, Iyy=838750, Izz=1342000 kg m^2
- water plane origin at (0, 0, 0)m, link origin at (0, 0, 0)m, CoM at (0, 0, -2.0)m, CoB at (0, 0, -0.935)m
- BEM coefficients calculated using Capytaine and converted to WEC-Sim HDF5 using bemio.
The first step towards the general case of random FFT generated waves, non-linear hydrostatics and a linear potential model for wave body interactions is to look at a simple standalone linear wave-body model in the absence of waves and in regular waves of fixed period and height.
The following tests cases build up to a model synchronised with the wave visuals that implements combined hydrostatic, radiation and excitation forces assuming constant BEM coefficients for a regular wave with period T = 6s and height H = 4m.
Hydrostatics
Forces
- Buoyancy
- Linear hydrostatic restoring
Figures: response from initial conditions: z=3m, pitch=45deg, no waves, no damping
https://user-images.githubusercontent.com/24916364/192846546-61b6c1f9-3874-4f4b-befb-8f379789db0b.mov

Radiation damping and added mass
Forces
- Buoyancy
- Linear hydrostatic restoring
- Wave radiation damping
- Wave radiation added mass
Figures: response from initial conditions: z=3m, pitch=45deg, no waves. There are two plots for each DOF, the higher frequency / lower amplitude plots correspond to damping only.
https://user-images.githubusercontent.com/24916364/192847749-bdcd6b74-90fc-4bc6-bb28-a59514a82632.mov

Incorporating added mass in the Gazebo physics solver
Modifications to Gazebo
Gazebo Garden (sdformat13) allows an added mass term to be included in the <inertial> element according to the proposal:
http://sdformat.org/tutorials?tut=added_mass_proposal&branch=chapulina/added_mass
An entry for the fluid added mass has been added to the Inertial class in gz-math7 and is accessed using the method Inertial::FluidAddedMass. This may be written to directly in the plugin Configure method via the component::Inertial attached to a link entity.
The following issues and PRs track including the fluid added mass in the DART physics engine.
- https://github.com/gazebosim/gz-sim/pull/1592
- https://github.com/gazebosim/gz-math/pull/459
- https://github.com/gazebosim/sdformat/pull/1077
- https://github.com/gazebosim/gz-physics/pull/384
- https://github.com/gazebosim/gz-msgs/pull/271
With the patches from this branch to correct the conversion from a Gazebo inertia matrix and the DART spatial inertia tensor:
- https://github.com/srmainwaring/gz-physics/tree/srmainwaring/6/added_mass
Edit 10 Oct 2022
The added mass input into the Gazebo
Inertiaclass is expected to be taken about the link frame origin and with reference to the link frame (rather than about the CoM with reference to the CoM frame). In this case no additional transform is required.
Gravity
The DART solver includes gravity at the world level, and assumes that the inertial mass in the spatial inertia tensor is equivalent to gravitation mass. This is not valid when the tensor contains added mass elements.
To get the correct gravitation forces the world gravity must be disabled by setting the element <gravity>0 0 0</gravity>, with gravity added back in for the inertial mass only in the plugin.
Excitation
Forces
- Buoyancy
- Linear hydrostatic restoring
- Wave radiation damping
- Wave radiation added mass
- Wave excitation
Figures: combined response in regular waves with constant period 6s and amplitude 2m. The initial excitation forces are suppressed over the first 10s using the ramp function implemented in the WEC-Sim Simulink model.
https://user-images.githubusercontent.com/24916364/192851231-e947be57-0278-4ca0-80a6-2584f0ddceef.mov
