Compute guided elastic wave (GEW) dispersion in MATLAB.

`GEWtool`

provides extremely fast and reliable computation of guided elastodynamic waves (GEWs) in plates and cylinders. It is simple to use yet provides full access to the computational results as well as the underlying code. You are welcome to contribute to this open-source project.

**Features**:

- Multi-layered plates and cylinders
- Finds all solutions, super fast
- General anisotropy, dissipation
- Compute real frequencies, complex wavenumbers, or ZGV points
- Choose polarization (Lamb/SH/coupled) and symmetry (S/A)

```
mat = Material('steel'); % load from database (or create your own)
h = 1e-3; % thickness in m
N = 12; % number of nodes (dictates accuracy)
k = linspace(1e-2, 12, 100)/h; % wavenumbers to solve for
plate = Plate(mat, h, N); % create waveguide description
gews = plate.LambSA; tic; % choose S+A Lamb waves (assembles matrices)
dat = computeW(gews, k, 4); toc; % solve and save 4 modes (argument optional)
plot(dat(1).k, dat(1).w/2/pi, 'b'); hold on; % plot symmetric
plot(dat(2).k, dat(2).w/2/pi, 'r'); ylim([0, 6e6]); % plot anti-symmetric
xlabel('wavenumber k in rad/m'), ylabel('frequency f in Hz')
```

output:
`> Elapsed time is 0.010129 seconds.`

```
k = linspace(1e-2, 12, 200)/h; % use more wavenumbers
gew = plate.Lamb; % choose all Lamb waves
dat = computeW(gew, k, 7); % compute
exc = excitabilityLUS(gew, dat, 'top'); % ux*uy at top surface (value of 1 at 100x median)
exc = 20*log10(exc); % in decibel
scatter(dat.k(:)/1e3, dat.w(:)/2/pi/1e6, 15, exc(:), 'filled'), ylim([0, 6]);
colormap(flipud(colormap)); cb = colorbar; caxis([-50, 0]);
xlabel('wavenumber k in rad/mm'), ylabel('frequency f in MHz')
title('laser-ultrasonic excitability in dB')
```

GEWtool implements the *Spectral Element Method (SEM)* (higher-order Finite Elements) to solve the *waveguide problem*, i.e., the boundary value problem that describes wave propagation in the structure. Such an approach is commonly qualified as ‘semi-analytical’. Contrary to classical root-finding of the characteristic equation, this method does not miss solutions. Moreover, unlike Finite Elements, the Spectral Elements lead to small but dense matrices.

Solusions are computed with machine precision provided you have set the discretization order `N`

sufficiently high. The higher you go in frequency-thickness, the higher `N`

should be. As a rule of thumb: half of the obtained modes will be accurate. The figure below shows the convergence with respect to the Rayleigh-Lamb root of the S1 mode at 5.6 rad/mm in an aluminum plate (solution close to 5 MHz mm). A Spectral Collocation implementation is shown in comparison. 15 digits accuracy is attained with N = 16 in this case.

For general information on the theory of guided elastic wave propagation refer to

D. A. Kiefer,

Elastodynamic quasi-guided waves for transit-time ultrasonic flow metering, ser. FAU Forschungen, Reihe B, Medizin, Naturwissenschaft, Technik, vol. 42. Erlangen: FAU University Press, 2022, doi: 10.25593/978-3-96147-550-6.

For the computation of zero-group-velocity (ZGV) points refer to

D. A. Kiefer, B. Plestenjak, H. Gravenkamp, and C. Prada, “Computing zero-group-velocity points in anisotropic elastic waveguides: Globally and locally convergent methods,” The Journal of the Acoustical Society of America, vol. 153, no. 2, pp. 1386–1398, Feb. 2023, doi: 10.1121/10.0017252.

GEWtool depends on the functions `collocD`

and `lglnodes`

created by Greg von Winckel. They are bundled together with their license files in the `resourcesAndDeps`

directory. You may also find them on

Greg von Winckel, MATLAB Central File Exchange, https://fr.mathworks.com/matlabcentral/profile/authors/869721.

The function `computeZGVDirect`

depends on the `MultiParEig toolbox`

by Bor Plestenjak and Andrej Muhič:

Bor Plestenjak (2022). MultiParEig (https://www.mathworks.com/matlabcentral/fileexchange/47844-multipareig), MATLAB Central File Exchange.

If this code is useful to you, please cite it as (always indicate the DOI):

D. A. Kiefer (2023). GEWtool [Computer software]. doi: 10.5281/zenodo.10114243 (https://github.com/dakiefer/GEWtool)

Daniel A. Kiefer, Institut Langevin, ESPCI Paris, Université PSL

Author and developer

Bor Plestenjak, Faculty of Mathematics and Physics, University of Ljubljana, Slovenia

Numerical methods to compute ZGV points

Acknowledgments - Many inspiring discussions influenced GEWtool. D. A. Kiefer is thankful to:

Hauke Gravenkamp, Claire Prada and Michael Ponschab

2022–2023 – Daniel A. Kiefer, Institut Langevin, ESPCI Paris, Université PSL.

I have several years of experience in waveguide modeling and numerical implementations thereof. In January 2022 I decided to create a new modular and versatile code from scratch. The result is GEWtool. My hope is that it be a valuable research tool and at the same time a helpful educational resource for those interested in numerical methods and elastic waves.

Contact: daniel.kiefer@espci.fr ● dakiefer.net ● Follow me on ResearchGate!