Skip to content

Guided elastodynamic wave dispersion in anisotropic layered plates and cylinders.

License

Notifications You must be signed in to change notification settings

dakiefer/GEWtool

Repository files navigation

GEWtool DOI

Compute guided elastic wave (GEW) dispersion in MATLAB.

GEWtool is an advanced system to compute and postprocess 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, tubes and rods
  • Super fast, guarantees to find all solutions
  • General anisotropy, dissipation
  • Compute real frequencies, complex wavenumbers, or ZGV points
  • Choose polarization (Lamb/SH/coupled) and parity (S/A)

GitHub Code repository: https://github.com/dakiefer/GEWtool

Example: 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, 'Color', "#3B518B"); hold on;        % symmetric
plot(dat(2).k, dat(2).w/2/pi, 'Color', "#5EC962"); ylim([0, 6e6]); % anti-sym
xlabel('wavenumber k in rad/m'), ylabel('frequency f in Hz')

output: > Elapsed time is 0.010129 seconds.

Lamb waves in steel

Proceed by inspecting the laser-ultrasonic excitability of the waves computed above (product of tangential and normal displacements ux·uy):

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

LUS excitability

Installation

Add GEWtool and the relevant subfolders to the Matlab path and save it for future sessions. To achieve this:

  1. change to the GEWtool folder (e.g., by navigating or using cd)
  2. execute install

Enjoy!

Getting started

To get started, explore the examples directory.

You can also display help for all functions and classes, e.g., by typing help Plate. The most important ones are

  • Material representation: Material, MaterialIsotropic
  • Waveguides: Plate, Cylinder
  • Solvers: computeW, computeK, computeZGV

Known limitations

  • Cylinders: only axial waves are supported for now.
  • Leaky waves: not implemented for now.

Contact me if you have questions: [email protected]

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.

relative error w.r.t. Rayleigh-Lamb root

For general information on the formulation of the elastic waveguide problem 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. PDF

Dependencies

GEWtool depends on the functions barylag, collocD , lglnodes and lgwt 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.

The function legendUnq by Adam Danz is used in the example scripts:

Adam Danz (2024). legendUnq (https://www.mathworks.com/matlabcentral/fileexchange/67646-legendunq), MATLAB Central File Exchange.

Citing GEWtool

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

D. A. Kiefer (2023). GEWtool. https://doi.org/10.5281/zenodo.10114243 (https://github.com/dakiefer/GEWtool)

Please also cite publication(s) as relevant, e.g.,

[1] D. A. Kiefer, S. Mezil, and C. Prada, “Beating resonance patterns and extreme power flux skewing in anisotropic elastic plates,” Science Advances, vol. 9, no. 51, p. eadk6846, Dec. 2023, doi: 10.1126/sciadv.adk6846. PDF.

[2] H. Gravenkamp, B. Plestenjak, and D. A. Kiefer, “Notes on osculations and mode tracing in semi-analytical waveguide modeling,” Ultrasonics, vol. 135, p. 107112, Jul. 2023, doi: 10.1016/j.ultras.2023.107112. PDF.

[3] 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. PDF.

Contributors

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

Gatien Clement, Institut Langevin, ESPCI Paris, Université PSL
Homogenization, quaternions, rotation angles

Acknowledgments - Many inspiring discussions influenced GEWtool. D. A. Kiefer is thankful to:
Hauke Gravenkamp, Pierre Chantelot, Claire Prada, Clemens Grünsteidl and Michael Ponschab

Author

2022–2024 – 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: [email protected]   •   dakiefer.net   •   Follow me on ResearchGate!

Logo Institut Langevin      Logo ESPCI

About

Guided elastodynamic wave dispersion in anisotropic layered plates and cylinders.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages