Welcome to biem-helmholtz-sphere documentation!¶
Installation & Usage
Project Info
API Reference
biem-helmholtz-sphere¶
Documentation: https://biem-helmholtz-sphere.readthedocs.io
Source Code: https://github.com/ultrasphere-dev/biem-helmholtz-sphere
Acoustic scattering from multiple n-spheres in NumPy / PyTorch
Installation¶
Install this via pip (or your favourite package manager):
pip install biem-helmholtz-sphere
Usage (GUI)¶

uvx biem-helmholtz-sphere serve
Usage¶
Boundary Integral Equation Method (BIEM) for the Helmholtz equation.
Let \(d \in \mathbb{N} \setminus \lbrace 1 \rbrace\) be the dimension of the space, \(k\) be the wave number, and \(\mathbb{S}^{d-1} = \lbrace x \in \mathbb{R}^d \mid \|x\| = 1 \rbrace\) be a unit sphere in \(\mathbb{R}^d\). Let \(B := {0, ..., }\) be the index set of spheres, \(c_b \in \mathbb{R}^d\) be the center of sphere \(b \in B\), and \(\rho_b > 0\) be the radius of sphere \(b \in B\). Assume that the closure of spheres do not overlap, i.e.,
Asuume that \(u_\text{in}\) is an incident wave satisfying the Helmholtz equation
and scattered wave \(u\) satisfies the following:
The following code assumes
and computes the scattered wave at \((0, 0, 0)\).
>>> from array_api_compat import numpy as xp
>>> from biem_helmholtz_sphere import BIEMResultCalculator, biem, plane_wave
>>> from ultrasphere import create_from_branching_types
>>> c = create_from_branching_types("ba")
>>> uin, uin_grad = plane_wave(k=xp.asarray(1.0), direction=xp.asarray((1.0, 0.0, 0.0)))
>>> calc = biem(c, uin=uin, uin_grad=uin_grad, k=xp.asarray(1.0), n_end=6, eta=xp.asarray(1.0), centers=xp.asarray(((0.0, 2.0, 0.0), (0.0, -2.0, 0.0))), radii=xp.asarray((1.0, 1.0)), kind="outer")
>>> complex(xp.round(calc.uscat(xp.asarray((0.0, 0.0, 0.0))), 6))
(-0.741333-0.669657j)
Accuracy¶
The radius of spheres is fixed to
1.0.The incident wave is \(u_\text{in} (x) = e^{i k x_0}\).
For
n_balls == 2, spheres are centered at(0, 2, 0, ...)and(0, -2, 0, ...).For
n_balls == 4, ..., spheres are placed in 2D grid pattern with distance of4.0between adjacent spheres.
vs Wavenumber k¶
2D¶

3D¶

vs Number of Spheres n_balls¶
2D¶

Citation¶
Consider citing the following paper if you use this package in your research:
Contributors ✨¶
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Credits¶
This package was created with Copier and the browniebroke/pypackage-template project template.