Get GEWtool from



Lamb waves

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.

rendering failed

Laser-ultrasonic excitability

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')
rendering failed

Background and more

Mathematical and physical background

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.

rendering failed

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,

The function computeZGVDirect depends on the MultiParEig toolbox by Bor Plestenjak and Andrej Muhič:

Bor Plestenjak (2022). MultiParEig (, MATLAB Central File Exchange.

Citing GEWtool

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 (


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:   ●   ●   Follow me on ResearchGate!

Logo Institut Langevin        Logo ESPCI Paris