Skip to content

About

A Julia package for acoustic scattering and target strength calculations using modal-series, Kirchhoff, boundary-element, finite-element, and fundamental-solution methods.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

AcousticScattering.jl

Julia Registry GitHub Version Julia Compatibility GitHub last commit DOI

Documentation (stable) Documentation (latest) License: GPL-3.0

Build status (basic) Build status (extended) codecov SciML Code Style

AcousticScattering.jl models how individual objects scatter sound in a fluid. It provides access to modal series solutions, Kirchhoff approximations in physical optics, boundary- and finite-element methods, the method of fundamental solutions, and Fourier matching methods for calculating scattering amplitude and target strength. Supported geometries include spheres, spheroids, straight and bent cylinders, shells, and general bodies of revolution. Material options include rigid, pressure-release, fluid-filled, and elastic configurations. Support varies by solver. See the model guide for available combinations and limitations.

Installation

Requires Julia 1.10 or later. Install the development version from GitHub:

import Pkg
Pkg.add("AcousticScattering.jl")

Installation runs an optional precompile workload to reduce first-call latency. Getting Started explains how to disable it before installation.

Examples

Calculate backscatter target strength for a rigid sphere with a 1 cm radius at 38 kHz using the modal series solution:

using AcousticScattering

# Parameters
frequency = 38000.0 # Hz
sound_speed = 1477.4 # m/s
wavenumber = 2pi * frequency / sound_speed

solution = modal(Sphere(0.01), Rigid(), wavenumber)
pressure(solution, (0.02, 0.0, 0.0)) # total pressure relative to the incident wave
target_strength(solution) # dB re 1 m²

Calculate the scattering amplitude and target strength for an aluminum shell on a spheroid with a 2 mm wall at 12 kHz using numerical methods:

# Parameters
exterior_density = 1000.0 # kg/m³
exterior_sound_speed = 1500.0 # m/s
interior_density = 1000.0 # kg/m³
interior_sound_speed = 1500.0 # m/s
wavenumber = 2pi * 12000.0 / exterior_sound_speed

# Boundaries/material
shell = Shell(Spheroid(0.02, 0.01), 0.002)
elastic_material = Shelled(0.33, 2700.0, 70e9) # Poisson ratio, density (kg/m³), Young's modulus (Pa)

solution = fem(shell, elastic_material, exterior_density, exterior_sound_speed,
    interior_density, interior_sound_speed, wavenumber)

scattering_amplitude(solution) # complex m
target_strength(solution) # dB re 1 m²

Documentation

Citation

If you use this package in research, cite the archived version you used:

Lucca, B. (2026). AcousticScattering.jl (v0.1.2) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22776330

Please also cite the relevant model papers listed in the documentation references.

License

GPL-3.0-only license for the package. The logo artwork incorporates Julia's dots and is licensed separately under CC BY-NC-SA 4.0.

Contributors

GitHub Contributors Image

About

A Julia package for acoustic scattering and target strength calculations using modal-series, Kirchhoff, boundary-element, finite-element, and fundamental-solution methods.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages