LUS3D™ is the name of the application that I wrote during my Ph.D. to model the thermoelastic generation of ultrasonic waves by lasers in composites. The application was written in C++ and is available for download from the current page.
LUS3D calculates the mechanical displacements as a function of time for a set of points forming a plane parallel to the sample plate. The goal of the LabVIEW project presented here was to generate the displacements for several planes throughout the thickness of the plate and make an animation of the displacements in the bulk of the sample. So I used LabVIEW to generate parameter files corresponding to the different positions along the thickness of the plate. Then, LUS3D calculated the displacements for each file and I used LabVIEW again to create and display the animations of mechanical displacements propagating within the plate.
In this document, I present the VIs used to generate the parameter files, to create and display the animations, and to generate an animated Gif. The LabVIEW code was slightly updated from the code developed years ago (cleaned-up, converted to a state machine, and comments added) but not as much as it needed.
One of the resulting ultrasonic displacement animation was uploaded on Youtube a while ago. This video presents the analytical transforms (envelope of signal) of mechanical displacements generated by a 5-mm laser spot at the surface of a 6-mm thick plate. The video was produced using a screen capture application.
The LUS3D application does not have any special requirement. The VIs are LabVIEW 2015.
Here are the steps to create an animation of the ultrasonic waves propagating within a plate.
Step 1: Create a single parameter file (*.rop) containing the parameters of interest.
Use the LUS3D manual for more information.
Step 2: Generates the *.rop files corresponding to the desired steps within the sample.
Use "Generate LUS3d rop files – varying position.vi" to generate all the parameter files (*.rop) for all the desired steps within the depth. When running this VI, a dialog prompts for a *.rop file. The VI then generates all the *.rop corresponding to the steps along the depth of the plate. Notice that the VI looks for a “=” character in the name and appends the corresponding depth position after the equal sign. The number of files that LUS3D can load at one time is limited by the total number of characters of all files so it is better to keep the file names short (“=.rop” for example).
The position step is in m. The maximum depth where the displacements will be calculated is “Initial position” + (“Number of positions” +1) times “Position step”. The initial position is typically 0. Notice that the maximum depth position should correspond to the total thickness of the sample, as defined in the first LUS3D parameter file created in step 1.
Step 3: Calculate displacements using LUS3D.
Use the "Batch calculate" feature of LUS3D in the Calculations menu. This menu prompts the user to select several files and calculates the displacements for the selected files one after the other. LUS3D does not use parallel processing but it is possible to make copies of the application and run calculations in parallel using those copies.
Step 4: Generates the LUS3D video file (*.rov) using the VI presented below.
When clicking on "Create", a dialog prompts the user to select one of the parameter files (*.rop). All result files previously calculated must be in the same folder and in alphabetical order by position in the depth (0 mm being at the generation surface).
The Abs displ? button selects if the Analytical transform (signal envelope) is applied or not to the displacements. A high-pass filter corresponding to the response of a confocal Fabry-Perot is applied to the displacement to remove the DC component but a simple high-pass filter could have been used as well.
Normal (along the depth direction), Trans (along the width of the sample), or the sum of both can be calculated.
The Width (pixels) and Height (pixels) gives the dimensions of the 2D graph. The size of the window must be manually changed to accomodate the desired 2D-graph size. The buttons and indicators will move accordingly. This dimension can be used to produce a video of the displacements of any dimensions using a screen capture software.
Step 5: Generates images for animation.
Images of the 2D graph can be exported as PNG files when the Export button is clicked to generate a Gif animation for example. The Time Redux value is the number of time steps that are skipped between each image. The images are exported by a loop in parallel to the main UI loop, as shown below.
The images are actually created by a subVI that has 2 options for sizes: half-depth resolution or twice lateral resolution. The half-depth resolution (every other row of data is used for the image) to minimize the size of the PNG files, and ultimately of the resulting animated Gif.
The exported PNG files were converted into a Gif animation using Gimp 2. Below are shown Gif animations of mechanical displacements generated by laser in two cases: the Trans displacements generated by a 0.1-mm spot under a 2-mm transparent layer, and the Normal displacement generated by a 5-mm laser spot at the surface of a 6-mm thick plate. The analytical transform was not used for those two animations; I now think that signed displacements make better animations, as shown below.
Gif animation of the Trans ultrasonic displacements generated under a transparent 2-mm thick layer by a 0.1 mm laser spot in a 6-mm thick plate (click on image to see animation).
Gif animation of the Normal displacements generated by a 5- mm laser spot at the surface 6-mm thick plate (click on image to see animation).
Notice that for longer times than those used for the 2 animations above, waves seem to be reflected by at the sides of the images. Those are not reflections but an effect of aliasing associated with the discrete 2D Fourier transforms used in the calculations. More details can be found in the LUS3D manual.
The use of animations provide more information than static images. The two Gif animations above show that the use of animations help to illustrate the different types of ultrasonic waves (longitudinal, shear, Rayleigh, P surface, etc) along with the mode conversions at the interfaces.
LabVIEW helped to extract more and better information from the original application. No doubt that LabVIEW would have been a better choice to develop the application from scratch but unfortunately that option was not available at the time.
If interested by Ultrasonics and LabVIEW, join the group.
Do not hesitate to contact about question or comment about LUS3D or the LabVIEW code presented here.