
Elastic cylinder modal series solution
Source:vignettes/ecms/ecms-implementation.Rmd
ecms-implementation.RmdacousticTS implementation
These pages sit between the classical elastic-cylinder literature and later finite-length cylinder approximations used in fisheries acoustics (Faran 1951; Stanton 1988).
The elastic-cylinder modal-series solution is available through
target_strength(..., model = "ecms"). The preferred
geometry carrier is an elastic-cylinder ESS object, while
the elastic material parameters are supplied through:
density_bodysound_speed_longitudinal_bodysound_speed_transversal_body
The implementation check uses an independent direct transcription of the Faran-Stanton algebra rather than a package-to-package comparison. That is useful for confirming that the package code path reproduces the intended elastic-cylinder algebra on a shared grid, but it is not a substitute for an external benchmark ladder or a separate public software implementation.
ECMS is marked unvalidated because the check is an
independent algebra transcription rather than an external benchmark
ladder or separate public software implementation.
Reference case
The reference cylinder uses:
- length
40 mm - radius
5 mm - body density
2800 kg m^-3 - longitudinal speed
6398 m s^-1 - transverse speed
3122 m s^-1 - surrounding water density
1026.8 kg m^-3 - surrounding water sound speed
1477.3 m s^-1 - broadside incidence
-
12-200 kHzin2 kHzsteps
In acousticTS, the call is:
library(acousticTS)
elastic_cylinder <- fls_generate(
shape = cylinder(
length_body = 0.04,
radius_body = 0.005,
n_segments = 201
),
density_body = 2800,
sound_speed_body = 1500,
theta_body = pi / 2
)
elastic_cylinder <- target_strength(
elastic_cylinder,
frequency = seq(12e3, 200e3, by = 2e3),
model = "ecms",
density_sw = 1026.8,
sound_speed_sw = 1477.3,
sound_speed_longitudinal_body = 6398,
sound_speed_transversal_body = 3122
)
head(extract(elastic_cylinder, "model")$ECMS)## frequency ka f_bs sigma_bs TS
## 1 12000 0.2551893 -0.001166938+1.400062e-05i 1.361941e-06 -58.65842
## 2 14000 0.2977208 -0.001556457+2.480975e-05i 2.423172e-06 -56.15616
## 3 16000 0.3402524 -0.001985893+4.061151e-05i 3.945421e-06 -54.03907
## 4 18000 0.3827839 -0.002447214+6.270084e-05i 5.992788e-06 -52.22371
## 5 20000 0.4253155 -0.002931593+9.261615e-05i 8.602815e-06 -50.65359
## 6 22000 0.4678470 -0.003429548+1.322009e-04i 1.177928e-05 -49.28881
Implementation check
| Diagnostic | Value |
|---|---|
| Max abs. \Delta TS (dB) | 0.00 |
| Mean abs. \Delta TS (dB) | 0.00 |
| Frequency at max \Delta (kHz) | 12.00 |
| acousticTS elapsed (s) | 0.08 |
| Direct transcription elapsed (s) | 0.03 |
This is not presented as a benchmark. It is an implementation
identity check: the package output and the independent algebra
transcription coincide on the shared grid, so the ECMS code
path is reproducing the stated elastic-cylinder series rather than
drifting numerically from it.
Closing note
The point of this page is therefore narrower than the benchmarked
modal-series families. ECMS is not being claimed here as
externally validated. What is being documented is that the package
reproduces the elastic-cylinder algebra it claims to implement, across a
full frequency band rather than only at a few checkpoint
frequencies.
