acousticTS implementation
SPHMS evaluates canonical spherical boundary-value problems (Anderson 1950; Faran 1951; Hickling 1962).
The acousticTS package uses object-based scatterers so the same
implementation pattern carries across models: create a scatterer, run
target_strength(), inspect the stored model output, and
then compare a small set of physically important inputs. For SPHMS, the
object must be spherical and the main model choice is the boundary
condition.
That apparent simplicity is one of the reasons SPHMS is so useful. When the target really is well approximated by a sphere, the geometry and the coordinate system match exactly, so the main practical decisions collapse to size, material contrast, and boundary interpretation rather than to complicated numerical bookkeeping.
Sphere object generation
The example below uses a gas-filled sphere so the same geometry can be reused for gas-filled and idealized rigid or pressure-release comparisons.
library(acousticTS)
sphere_shape <- sphere(
radius_body = 1e-3
)
gas_sphere <- gas_generate(
shape = sphere_shape,
g_fluid = 0.0012,
h_fluid = 0.22,
theta_body = pi / 2
)
gas_sphere## GAS-object
## Gas- and fluid-filled scatterer
## ID:UID
## Body dimensions:
## Diameter:0.002 m
## Radius:0.001 m
## Material properties:
## g: 0.0012
## h: 0.22
This setup is a good example of the geometry-versus-physics distinction that runs through the package. The outer geometry is simply spherical. The scatterer constructor then gives that sphere a specific physical interpretation, here a gas-filled interior with strong density and sound-speed contrast relative to the surrounding fluid.
Calculating a TS-frequency spectrum
frequency <- seq(1e3, 100e3, by = 1e3)
gas_sphere <- target_strength(
object = gas_sphere,
frequency = frequency,
model = "sphms",
boundary = "gas_filled"
)This call is mechanically simple, but it is still worth reading
carefully. The model argument selects the spherical
modal-series solution, while the boundary argument chooses
which spherical boundary-value problem is being solved. In other words,
SPHMS does not mean only one thing acoustically. The same spherical
geometry can be used under different interface assumptions, and that
choice is often the most important physical decision in the run.
Extracting model results
Model results can be extracted either visually or directly through
extract().
Accessing results
## frequency f_bs sigma_bs TS
## 1 1000 0.0001158582+5.707283e-08i 0.0001158582 -78.72147
## 2 2000 0.0007102572+4.290423e-06i 0.0007102702 -62.97153
## 3 3000 0.0137934919+2.507809e-03i 0.0140196122 -37.06528
## 4 4000 -0.0025074533+1.071839e-04i 0.0025097431 -52.00741
## 5 5000 -0.0016243596+5.620899e-05i 0.0016253318 -55.78116
## 6 6000 -0.0013630916+4.751739e-05i 0.0013639196 -57.30422
At this stage, readers should confirm that the returned output matches the intended spherical problem. A gas-filled run should usually look materially different from a rigid or pressure-release run of the same size, especially when the contrast is strong. This is also a good point to confirm that the frequency grid and reporting variables are the ones needed for the later comparison.
Comparison workflows
Boundary conditions
Because the geometry is fixed, boundary-condition comparisons are a clean way to understand what part of the response is due to the interface assumption rather than the size of the sphere itself.

This comparison is especially helpful because it isolates the role of the boundary condition cleanly. The outer radius is the same in all three runs. What changes is the interface physics: suppressed normal motion, vanishing surface pressure, or a highly compressible gas-filled interior. That makes the resulting differences much easier to interpret than if geometry and boundary were changed simultaneously.
For fluid-filled spheres, the same implementation pattern applies.
Change the selected boundary and interior material
properties. Sphere radius, boundary condition, and medium-to-interior
contrasts are the first inputs to verify.
Benchmark comparisons
SPHMS can be compared directly against the Jech benchmark definitions
stored in benchmark_ts (Jech et al. 2015).
| Boundary | Max abs. \Delta TS (dB) | Mean abs. \Delta TS (dB) |
|---|---|---|
fixed_rigid |
0.00497 | 0.00246 |
pressure_release |
0.00500 | 0.00243 |
gas_filled |
0.00499 | 0.00263 |
liquid_filled |
0.00492 | 0.00241 |
All four spherical boundary types remain very close to the benchmark family over the full grid, with the implementation staying within about 0.005 dB in the worst case.
Cross-software implementation checks
For the penetrable spherical cases, the current acousticTS
implementation can also be checked directly against
R-package KRMr (Gastauer 2025) and
Python package echoSMs (Macaulay and
contributors 2024). Those checks serve a different
purpose from the Jech benchmark table above: they verify that the
software implementations agree when they are solving the same penetrable
spherical problem, rather than only asking how closely any one
implementation tracks the benchmark family.
| Boundary | Comparison | Mean abs. \Delta TS (dB) | Max abs. \Delta TS (dB) |
|---|---|---|---|
gas_filled |
acousticTS vs KRMr | 3.21e-14 | 2.21e-12 |
gas_filled |
acousticTS vs echoSMs | 1.71e-13 | 1.52e-11 |
liquid_filled |
acousticTS vs KRMr | 5.70e-12 | 1.30e-10 |
liquid_filled |
acousticTS vs echoSMs | 3.68e-11 | 3.37e-09 |
Those values show that the penetrable SPHMS branches are effectively identical across the three implementations on the shared spherical definitions. In other words, the small residuals reported against the benchmark family above are not an acousticTS-specific artifact. They are shared by the matched software implementations solving the same gas-filled and liquid-filled sphere problems.
SPHMS does expose one additional numerical control,
m_limit, so it is worth checking how aggressively the modal
cap can be reduced before the liquid-filled benchmark fit starts to
move. The table below keeps the same weakly scattering liquid-filled
benchmark and only changes that truncation cap.
| Boundary | m_limit |
Max abs. \Delta TS (dB) | Mean abs. \Delta TS (dB) |
|---|---|---|---|
liquid_filled |
default rule | 0.00492 | 0.00241 |
liquid_filled |
20 |
0.52550 | 0.00640 |
liquid_filled |
10 |
58.24225 | 8.07819 |
Aggressive under-truncation degrades the spherical result. Treat
m_limit as a guarded numerical override rather than a
routine tuning control.


