python makefigs.py
Introduction
In the course of my studies on the subject of ultrasonic Lamb waves I have become fairly familiar with the basics of elasticity. I also prepared various pieces of computer code and notes which might be of interest to others studying in the area. I intend to group these materials together here.
UPDATE
I have added a second version of these notes including discussion of guided waves in plates, as well as an example set of Python/Gnuplot input files to plot a dispersion curve for a layered plate
Basic Elasticity
I have prepared a basic set of notes on elasticity, under the title: Notes on Wave Propagation in Anisotropic Elastic Solids[pdf]. The notes are about 361kb, in a single pdf file. The outline is as follows:

Basic equations of elasticity, including definition of stress and strain and dynamic equation.

Stiffness tensor introduced

Reduced notation and engineering strain introduced

Tensor transformations discussed, in context of material symmetry.

Point group diagrams introduced

Symmetry classes discussed, with reference to the transformation tensors involved in their definition and the appropriate pointgroups. Triclinic, Monoclinic, Orthotropic, Tetragonal, Trigonal, Hexagonal, Cubic and Isotropic symmetry discussed and stiffness matrices are presented.

Bulk waves in anisotropic materials discussed. Slowness curves and procedure for their calculations discussed (i.e. for a given propagatin direction, how to obtain the velocities and polarisation vectors for the (quasi)longitudinal and two (quasi)shear modes).

Slowness curves for specific materials in different symmetry classes are presented, using various planes of propagation as appropriate.
I think these notes are quite easy to follow, and they are pretty short. The basic material is summarised quickly and then specific examples follow. References provide pointers to more detailed and exhaustive work on the topic.
You can download the programs to produce the slowness curve figures from the text here in tar.gz:
To use the programs you will need Python with the Numerical Python extensions and Gnuplot. All of this software is free to download. When you run the python program makefigs.py,
it will create a directory called "figures/" and place numerous .dat files. These contain the data for the slowness and skew curves. The commands to plot the curves are contained in the figures/inas_0_slow.gp and figures/inas_0_skew.gp files. To produce the eps (PostScript) figures type
gnuplot figures/inas_0_skew.gp
gnuplot figures/inas_0_slow.gp
If you don’t have access to gnuplot, they you can just output the data to an appropriate text file and import it into any program you like (e.g. MS Excel) for plotting. If you don’t have access to python and/or numerical python, then it is probably not too difficult to translate the program into whatever computer languages you do have access to. Matlab would be particularly easy since it has appropriate highlevel commands, but with a little care it should be possible to translate the program into other languages too. If you are having problems, or if you either translate the program into another language or discover a bug or mistake, then please feel free to mail me.
Lamb Waves
Following on from getting a handle on the problem of propagation in anisotropic bulk media, I also needed to calculate dispersion curves for Lamb waves in anisotropic media. Lamb waves are guidedwaves that propagate in plates of elastic material. The phase velocity of such waves depends strongly on frequency. This is different to bulk waves in linear elastic media, where phase velocity is entirely independent of frequency.
I have prepared an extended version of the original notes posted here]. This includes a discussion of Lamb waves in isotropic plates, and guided waves in anisotropic plates and layered plates (where individual layers may be isotropic or anisotropic). Filesize is up too, to 1.6 megabytes.
Looking at computer code implementing these calculations makes the process of producing a dispersion curve far easier to understand. Layered_Dispersion_Example.tar.gz contains the appropriate Python and Gnuplot files to produce such a figure.