Skip to content

Releases: BrettRyland/Waves

OpenCL release

09 Aug 10:42
Compare
Choose a tag to compare

My integrator for the nonlinear wave equation using Lobatto IIIA-IIIB discretisation in space and leapfrog in time for various boundary and initial conditions.

This version builds on the Qt version by implementing the integrator in OpenCL using boost.compute and transferring the resulting values directly to the OpenGL widget. This allows for significantly improved performance to the point where a 1 million element simulation with 3 stages in x and y can run in real time on my NVIDIA GeForce GTX 960M.

One of the boundary conditions (i.e. simulation configurations) has been changed to show off this improved performance. An extra boundary condition ("Double slit") and initial condition ("Localised wave") have been added to demonstrate interference patterns occurring due to a double slit-like experiment.

Caveats:

  • Fullscreen toggling is not implemented.
  • Some of the integrator controls are not yet exposed to the GUI.
  • The control "Dissipation factor" currently does nothing. When implemented, this will break the multisymplectic nature of the integrator, but will allow the waves to dissipate energy and die out.
  • If running under Linux (I haven't tested this version on Linux yet) on an optimus system, remember to use optirun to use the graphics card that supports OpenGL 3.30.

Changes from v3.0:

  • Refactoring of OpenCL kernels into their own files to simplify maintenance.

OpenCL release

08 Aug 20:21
Compare
Choose a tag to compare

My integrator for the nonlinear wave equation using Lobatto IIIA-IIIB discretisation in space and leapfrog in time for various boundary and initial conditions.

This version builds on the Qt version by implementing the integrator in OpenCL using boost.compute and transferring the resulting values directly to the OpenGL widget. This allows for significantly improved performance to the point where a 1 million element simulation with 3 stages in x and y can run in real time on my NVIDIA GeForce GTX 960M.

One of the boundary conditions (i.e. simulation configurations) has been changed to show off this improved performance. An extra boundary condition ("Double slit") and initial condition ("Localised wave") have been added to demonstrate interference patterns occurring due to a double slit-like experiment.

Caveats:

  • Fullscreen toggling is not implemented.
  • Some of the integrator controls are not yet exposed to the GUI.
  • The control "Dissipation factor" currently does nothing. When implemented, this will break the multisymplectic nature of the integrator, but will allow the waves to dissipate energy and die out.
  • If running under Linux (I haven't tested this version on Linux yet) on an optimus system, remember to use optirun to use the graphics card that supports OpenGL 3.30.

Qt version

09 Sep 13:30
Compare
Choose a tag to compare

My integrator for the nonlinear wave equation using Lobatto IIIA-IIIB discretisation in space and leapfrog in time for various boundary and initial conditions.

This version uses Qt's interface to OpenGL to render the simulation into a widget.

Caveats:

  • It is written using the Qt plug-in to VS2015, so it may take some work to get it to compile on other setups.
  • It is extremely slow in debug mode, but very fast in release mode.
  • Fullscreen toggling is not implemented.
  • Some of the integrator controls are not yet exposed to the GUI.
  • If running under Linux on an optimus system, remember to use optirun to use the graphics card that supports OpenGL 3.30.

Waves 1.0

10 Aug 15:20
Compare
Choose a tag to compare

A functioning version of the nonlinear wave simulator using Lobatto IIIA-IIIB discretisation in space and leapfrog in time.

Caveats:
Periodic domains aren't rendered properly.
Timing is not implemented.