ZeppSav / BEMUse

A lightweight boundary element method library for hydrodynamics and aerodynamics.
GNU General Public License v3.0
9 stars 3 forks source link

BEMUse - A lightweight boundary element method library for hydrodynamics and aerodynamics.

The purpose of the BEMUse library is threefold:

BEMUse is written in C++ and can be compiled in two configurations depending on your application case:

The core architecture of BEMUse is identical in both cases.

Why should you use BEMUse?

Licensing and authorship

BEMUse is developed by Joseph Saverin and is distributed under the GNU General Public License Version 2.0, copyright © Joseph Saverin 2022.

How to use the BEMUse command-line configuration

In order to carry out an analysis with BEMUse, you need to specify the geometry which you wish to analyse and the simulation parameters. The geometry is specified over the command line. There are two options for specifying a geometry.

Importing a Geometry

You can import an external geometry simply by specifying a WAMIT® (.gdf), NEMOH (.mar) or (.stl) geometry file. The specified path should be relative to the directory in which the executable is found. An example might be:

BEMUse <ExternalGeos/MyGeo.mar> <OutputPrefix>

BEMUse will automatically recognise the geometry type based on the file suffix. As the surface elements are externally defined, you do not need to specify the input files Discretisation.bemin or Dimensions.bemin (these are described below).

Using a Template Geometry

A range of template geometries are available which are already parametrised in BEMuse, so that you only need to specify the discretisation or dimensions. These geometries include analytical geometries as well as standard geometries for floating offshore wind turbine platforms. This list is regularly being extended and if you would like to have your geometry on this list, please get in touch. In order to see a list of the available geometries, type the following into the command line:

BEMUse Templates

In order to check what the necessary inputs (described below) are for your chosen template geometry, <GeoType>, you need simply to type:

BEMUse Inputs <GeoType>

You are required to specify a directory named Outputs within the directory of the executable where the output files will be written. In order to discern between multiple runs, you are also required to specify the output file prefix. Provided you have provided the input parameters (described below), a complete call to execute BEMUse and write the outputs will look like this:

BEMUse <GeoType> <OutputPrefix>  

That simple! If there are insufficient inputs defined for the chosen geometry, the behaviour will be undefined.

Specifying input files

A range of simulation parameters also need to be defined for a BEMUse simulation. These are defined in text-based input files. You are required to specify a directory named Inputs within the directory of the executable from where the input files will be read.
These files are defined below along with the corresponding variables:

How to use the BEMUse GUI configuration

In this case you really don't need to do very much at all, just follow the steps in the GUI. Once you have specified a geometry, you can toggle any of the visualisation options at the top right of the window. BEMUse solves a radiation potential for each of the six degrees of freedom (surge, sway, heave, roll, pitch, yaw) at each frequency. BEMUse solves a diffraction potential for each of the six degree of freedom for each incoming wave angle selected in the specification of the analysis. The radiation potential and diffraction potential can only be visualised once an analysis has completed. The free surface visualisation is only possible if you have specified an exterior free surface grid in the creation of the geometry.

Modifying the view angle or visualisation

A number of options exist for modifying the visualisation:

Citation information

I am currently in the process of preparing a simple reference paper for BEMUse on ArXiv. In the meantime, if you use BEMUse please cite it in your publication as follows:

Compilation

The only dependency of BEMUse is the eigen lineary algebra library. The compilation of BEMUse has been tested with GCC (v7.3).

Two options are available for compiling:

Pre-compiled libraries

Pre-built binaries are available on the releases page.

Documentation

A [readthedocs] page is currently being prepared.