Usage

Building

See the main README for build and installation instructions.

Fortran

Basic usage:

bellhop.exe inputfile
bellhop3d.exe inputfile

Input files have an .env extension and specify: - Ocean environment (sound speed, boundaries, bathymetry) - Source characteristics (frequency, depth, beam pattern) - Receiver array geometry - Run parameters (ray angles, output options)

Additional text files can be provided to define tables of sound speed profile (.ssp), bathometry (.bty), and so on.

Python

A modern Python interface is provided in this package. Basic usage:

    TODO

This allows reading and writing of bellhop-native input and output files, with a modern Python interface for specifying parameters and executing calculation tasks.

The automated test suite for this repository is written using this Python bellhop module.

This Python interface is extended from the arlpy module uwapm by Mandar Chitre.

Documentation

The BELLHOP code base includes extensive historic documentation from the original Acoustics Toolbox project and subsequent development efforts:

User guides

Text file formats

Original Acoustics Toolbox documentation

PDF documentation

Additional material

Repository architecture

As a historic codebase, Bellhop is impressively portable and easy to compile. This repository serves as a largely untouched extraction of Bellhop from the broader Acoustics Toolbox code.

Repository contributions

The following are the major changes or additions:

  • Remove non-Bellhop files entirely. If other components of the AT should be similarly modernised, in my view independent repositories should be used. The shared code is relatively small.

  • Improve Makefile to attempt to auto-configure compiler flags. This is mostly a stub as I have limited platforms and compilers to experiment with.

  • Alter the commenting style of the code to permit automatic documentation using FORD. This tool creates the current documentation you are reading.

  • Add a Python test suite. This has multiple purposes:

    • Provide a fully documented and automated regression test suite that checks numerical outputs. The original Bellhop tests required manual checking that the output was valid.

    • Integrate the tests with a code coverage tool that allows us to ensure that all possible code paths are tested (work in progress).

    • Allow GitHub workflows to automatically test the repository for every code change. This allows refactoring and algorithm improvements without added risk of introducing bugs.