Skip to main content

Acoustic scattering from multiple n-spheres in NumPy / PyTorch

Project description

biem-helmholtz-sphere

CI Status Documentation Status Test coverage percentage

uv Ruff pre-commit

PyPI Version Supported Python versions License


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)

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.,

$$ \forall b, b' \in B, b \neq b', |c_b - c_b'| > \rho_b + \rho_b' $$

Asuume that $u_\text{in}$ is an incident wave satisfying the Helmholtz equation

$$ \Delta u_\text{in} + k^2 u_\text{in} = 0 $$

and scattered wave $u$ satisfies the following:

$$ \begin{cases} \Delta u + k^2 u = 0 \quad &x \in \mathbb{R}^d \setminus \overline{\mathbb{S}^{d-1}} \ \alpha u + \beta \nabla u \cdot n_x = -\alpha u_\text{in} -\beta \nabla u_\text{in} \cdot n_x \quad &x \in \mathbb{S}^{d-1} \ \lim_{|x| \to \infty} |x|^{\frac{d-1}{2}} \left( \frac{\partial u}{\partial |x|} - i k u \right) = 0 \quad &\frac{x}{|x|} \in \mathbb{S}^{d-1} \end{cases} $$

The following code assumes

$$ d = 3, k = 1, u_\text{in} (x) = e^{i k x_0}, c_0 = (0, 2, 0), c_1 = (0, -2, 0), \rho_0 = 1, \rho_1 = 1, \alpha = 1, \beta = 0 \quad \text{(Sound-soft)} $$

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)

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

Copier

This package was created with Copier and the browniebroke/pypackage-template project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

biem_helmholtz_sphere-1.1.2.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

biem_helmholtz_sphere-1.1.2-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file biem_helmholtz_sphere-1.1.2.tar.gz.

File metadata

  • Download URL: biem_helmholtz_sphere-1.1.2.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for biem_helmholtz_sphere-1.1.2.tar.gz
Algorithm Hash digest
SHA256 856129f4bdf59cb7abe9bb2ca405fba7971bdc3f9b28831473c0d39e6088bf6d
MD5 fc05864d199edbd58362ad9775c7ca8b
BLAKE2b-256 b662714b8335583f6b95a2bbfb913530dbd9d99db9a23b3092e04d6548b51bb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for biem_helmholtz_sphere-1.1.2.tar.gz:

Publisher: ci.yml on ultrasphere-dev/biem-helmholtz-sphere

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file biem_helmholtz_sphere-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for biem_helmholtz_sphere-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 65a6ce162cd6c37c5aab1499b7f5c587fe694a77913df34691ebded7d35c5c47
MD5 17e9d832b749fae9bd7815533fe8d1d1
BLAKE2b-256 ab7877e5ce18bcee31c845d03355c248e15f28273ec7a1ddec57f133a70acc4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for biem_helmholtz_sphere-1.1.2-py3-none-any.whl:

Publisher: ci.yml on ultrasphere-dev/biem-helmholtz-sphere

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page