An LMS SYSNOISE HOWTO ("Hello pipe!") by Tristan Matthews

Preamble

This document outlines the basic steps required to determine the acoustic impedance at a given point inside an open-closed pipe, using LMS Sysnoise in conjunction with MATLAB. Note that the majority of operations done in Sysnoise can be accomplished by entering commands either directly into Sysnoise's command-line input window, or by running a .cmd file (like a batch file) from Sysnoise. This can automate any operation in Synoise, and drastically reduce the amount of time required to run multiple simulations. However, certain operations such as selecting a surface may be easier to accomplish graphically. Sysnoise has a command history window which keeps track of all the commands entered, so a command accomplished via the GUI can be recreated by taking note of the corresponding command recorded in this window.

Meshing

The script pipemesh.m will create a NASTRAN format 2D mesh called “pipemesh.dat” which can be imported into Sysnoise. Sysnoise will also accept the IDEAS, ANSYS, FREE and USER-DEFINED mesh formats. This particular script creates an axisymmetric mesh of an open closed pipe of radius 0.02 m and length 0.5 m. “pipemesh.m” is a good starting point for anyone using Matlab to do their meshing, or to see how a NASTRAN format mesh can be generated.

Solving

  • Open Sysnoise. Select Create New Model at the startup menu, or if the startup window does not open by default, select File→New.
  • Specify a model name and a filename for the model.
  • Use File→Import, specify the data type as 'Mesh' and the format as 'Nastran'. Click Filebox and find and select 'pipemesh.dat' in the path where it was saved.
  • Select Geometry→Check Mesh and select Element Normal Vector Correction to ensure a consistent direction for each element's normal.
    • Normals must point toward the origin of the pipe. To view the normals, click the button in the toolbar with the yellow tile with a blue arrow coming out of it (hovering over it reveals its label, “Show/Hide Vectors”. If they are pointing outward instead of toward the centre of the pipe, go to Geometry→Reverse Elements, and enter 'All' in the text input box, and click OK.
  • Since we are using a mesh that represents only a 2D slice of the cylinder, we must specify to Sysnoise that this should be treated as an axisymmetric volume. Select Geometry→AxiSymmetry and enter a refinement of 6.
    • Increasing the factor seems to increase accuracy for the high-end of the spectrum but also slows down the simulation considerably).
    • The refinement of the mesh is proportional to the maximum frequency for which the simulation will be correct. To determine if the mesh is fine enough for the range you are looking at, use Inquire→Fmaximum and enter the number of mesh elements you want per wavelength (we used 40). The echo window will then report up to what frequency this number of elements per wavelength holds.
  • Use Model→Vibrating Panels→Manual, set Boundary Type to Velocity and change Continuous to Positive. In the input box next to Real/Imag, enter 0.001 (the real value) and leave the adjacent box (imaginary value) blank.
  • Reorient the mesh with the arrow tools (Rotate, Translate and Zoom) until you have it such that if the pipe was your thumb, and you were giving a thumbs up, the closed end would be the end of your thumb. Further, the view should be as if your thumb was at eye-level in front of you.
  • Use the Box Select tool to select only the closed surface of the pipe without selecting the elements on the rest of the cylinder's surface. Click Add to finalize the condition and close the menu. This results in a positive (i.e. in the direction of the normal) boundary condition of real value 0.001 at the input end.
  • Use Geometry→Sets→Envelope Generation, specify the Set Number as 1 and write in the Take the Envelope: field all.
  • Use Model→Free Edges to specify a jump pressure of real value 0 and imaginary 0 (default). Specify the 'Where' field as Set 1, click Add and Close.
  • Click Geometry→Field Point→Point and specify the location of the field point as X:0.0001 Y:0.5 Z:0 and click Add. This will place the probe at the open end of the pipe. For axisymmetric solving, the probe cannot be directly on the y axis, hence the x value of 0.0001 which puts the probe slightly off centre. This should not skew the results since we are concerned here with planar waves.
  • Use Analysis→Solve and specify the frequencies for which it will be solved, for example 0 to 4110.0 LinStep 5, which means every 5 Hz from 0 to 4110 Hz. This may take quite a while to solve.
  • Use Analysis→Process Field Points and set the Point Selection to '1'.
  • Use Analysis→Store, select Results, specify the frequency as '0 to 4110.0 LinStep 5', hit Apply and Close.
    • WARNING: Make sure to set RFBUFFERSIZE var in environment variables (under Tools) to be greater than number of results.
  • To view the results, use Postprocess→Response Function, select Results, click on Results Point 1, change the field to Impedance and the direction to 0 1 0 and click Apply. The default is linear magnitude.
  • To export the Impedance results, use Tool→Combine, then Read, change Node to Point and enter 1 as the point number, change Pressure to Impedance and the direction vector to (0 1 0). Click Write, use the default type Response Function and enter a name for the function and a filename for the output file.
  • To plot the real and/or imaginary parts of impedance in Sysnoise, this same procedure must be performed, but exporting a table rather than a response function. To view the results, use Postprocess→TableFunction and now all the results are viewable (this is due to a bug in either Sysnoise or the X-Windowing system).

Extracting response data in Matlab

  • Open MATLAB.
  • The script sysplot.m is used to extract results from the file. This script first parses through the response function file and uses another script, alphacleaner.m, to create a file consisting of a single column containing all the numerical values from the response function. 'sysplot.m' then writes each frequency value to a vector freq, and each real and imaginary value to their respective vectors, rea and ima.