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:
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!