Plane Wave


Definition

An acoustic plane wave with amplitude $a$ and direction of propagation $\hat{\bm d}$ (vectors with a hat denote unit vectors) is defined by the pressure field [BSUA70]

\[p_\mathrm{PW}(\bm r) = a \, \mathrm{e}^{-\mathrm{j} k \hat{\bm d} \cdot \bm r}\]

with the wavenumber $k = \omega \sqrt{\varepsilon \mu}$.

Note

The background medium is defined by the chosen excitation as a Medium(ε, μ), just as for the electromagnetic excitations. For acoustics the two parameters are to be read via the analogy $\mu \rightarrow \rho$ (mass density) and $\varepsilon \rightarrow 1 / (\rho c^2)$ (compressibility), so that the speed of sound is $c = 1 / \sqrt{\varepsilon \mu}$ and the wave impedance is $\rho c = \sqrt{\mu / \varepsilon}$. Since the default is free space, a medium matching the fluid of interest should be provided.

Note

Throughout this package the time convention $\mathrm{e}^{\mathrm{j} \omega t}$ is employed, hence the spherical Hankel functions of the second kind $h_n^{(2)}$ describe outgoing waves.


API

The API provides the following constructor with default values:

SphericalScattering.Acoustic.planeWave — Function
ex = planeWave(;
        embedding = Medium(ε0, μ0),
        frequency = error("missing argument `frequency`"),
        amplitude = 1.0,
        direction = SVector{3,typeof(frequency)}(0.0, 0.0, 1.0)
)

Constructor for an acoustic plane wave travelling in direction.

source
Tip

The direction vector is automatically normalized to a unit vector during the initialization.

The Acoustic Submodule

The constructors of the acoustic excitations are collected in a submodule, so that their names do not clash with the electromagnetic ones:

SphericalScattering.Acoustic — Module
Acoustic

Submodule bundling the constructors of the acoustic excitations, so that, e.g., Acoustic.planeWave does not clash with the electromagnetic planeWave.

source

Incident Field

The pressure of the plane wave is as given above. On a surface with outward unit normal $\hat{\bm n}$ the two Cauchy data (the surface traces) are the Dirichlet trace

\[\gamma_0 p_\mathrm{PW} = p_\mathrm{PW}\]

and, since $\nabla p_\mathrm{PW} = -\mathrm{j} k \hat{\bm d} \, p_\mathrm{PW}$, the Neumann trace

\[\gamma_1 p_\mathrm{PW} = \hat{\bm n} \cdot \nabla p_\mathrm{PW} = -\mathrm{j} k (\hat{\bm d} \cdot \hat{\bm n}) \, p_\mathrm{PW} \,.\]

API

The general API is employed:

p  = field(ex, Pressure(point_cart))

γ₀ = field(ex, PressureTrace(point_cart))

γ₁ = field(ex, PressureNormalGradient(point_cart))

Without further specification the outward normal $\hat{\bm n} = \hat{\bm r}$ of a sphere centered in the origin is assumed at every location. One normal vector per location may be provided instead, which is required, e.g., for the facets of a surface mesh:

γ₁ = field(ex, PressureNormalGradient(point_cart, normals))

See PressureNormalGradient for details.

Note

The far-field of a plane wave is not defined.


Scattered Field

The scattered field computation follows [BSUA70]. For the sound-hard and the sound-soft sphere it is obtained by a series in the spherical wave functions, see Acoustic Spheres; for the spheroids and the disc by a series in the spheroidal wave functions, see Spheroidal Solution.

API

The general API is employed:

p  = scatteredfield(sp, ex, Pressure(point_cart))

FF = scatteredfield(sp, ex, FarField(point_cart))

γ₀ = scatteredfield(sp, ex, PressureTrace(point_cart))

γ₁ = scatteredfield(sp, ex, PressureNormalGradient(point_cart))

where sp is a HardSphere, a SoftSphere, a Spheroid, or a Disc. The traces and the far field are described under Quantities.

Warning

For a spheroid, the outward normals have to be provided, PressureNormalGradient(sp, point_cart), see Surface Traces.

Note

The pressure vanishes inside the scatterer, whereas the far field is determined by the direction of observation alone and is, therefore, not suppressed for locations inside the scatterer.


Total Field

API

The general API is employed:

p  = field(sp, ex, Pressure(point_cart))

γ₀ = field(sp, ex, PressureTrace(point_cart))

γ₁ = field(sp, ex, PressureNormalGradient(point_cart))
Note

The total far-field is not defined (since the incident far-field is not defined).

Tip

The total traces are a convenient check of the implementation: $\gamma_1 p$ vanishes on a sound-hard sphere and $\gamma_0 p$ vanishes on a sound-soft sphere.