srmainwaring / asv_wave_sim

This package contains plugins that support the simulation of waves and surface vessels in Gazebo.
GNU General Public License v3.0
110 stars 29 forks source link

Waves simulation optimisation - part 1 #82

Closed srmainwaring closed 1 year ago

srmainwaring commented 1 year ago

This PR is the part in a series of updates to the wave simulation to improve performance.

The main change is to replace the use of std::vector<double> and std::vector<std::vector<double>> for storage with Eigen types. Aside from the advantages of memory alignment, this also prepares the wave simulation and associated classes for vectorisation. The wave spectra and spreading functions are now vectorised, as is the regular wave model.

Details

  1. Create classes for wave spectra with vectorised methods.
  2. Create classes for wave spreading functions with vectorised methods.
  3. Update wave simulations to use Eigen types rather than std::vector.
  4. Vectorise the SinusoidalWaveSimulation.
  5. Add extra tests for wave simulation models.
  6. Streamline class declarations and move to under_score_naming for member variables (for non-Gazebo specific classes).
  7. Remove dead code - old FFTW and OpenCL wave simulations
  8. Update physical constants and reset buoyancy regression tests.