In this tutorial we will learn how to simulate a simple 3D Tonpilz transducer in a water load. We will analyse the acoustic pressure in the water load.
You will learn:
- The basic simulation workflow in OnScale Designer
- How to set up a 3D model
- How to create a simple geometry
- How to duplicate geometries
- How to edit material properties
- How to add circuits into a design
- How to display and post-process results
What is a Tonpilz Transducer?: The Tonpilz ( a.k.a langevin or acoustic mushroom ) is a type of transducer that is able to achieve a combination of low frequency and high sensitivity in a compact footprint which makes them ideal as projectors for sonar applications.
Model Definition
Characteristics of the model
Model: |
Tonpilz Transducer |
Mesh Size: |
75 um |
Analysis Time: |
0.00075 s |
Output Results: |
-Time History of Acoustic Pressure at [0,29.2,0] -Data Array of Minimum Acoustic Pressure -Data Array of Maximum Acoustic Pressure |
Material Data
Name |
Code Name |
Density |
Bulk Velocity |
Shear Velocity |
Poling |
Ferroperm PZ26 |
fpz26 |
7700 kg.m-3 |
- |
- |
Y+ |
Ferroperm PZ26N |
fpz26n |
7700 kg.m-3 |
- |
- |
Y- |
Magnesium, Generic |
magn |
1740 kg.m-3 |
5770 ms-1 |
3050 ms-1 |
- |
Stainless Steel, Generic |
stst |
7890 kg.m-3 |
5790 ms-1 |
3100 ms-1 |
- |
Water at 25C |
watr | 1000 kg.m-3 | 1496 ms-1 | 0 | - |
Note: All of these materials were taken from the Project Materials Database. However, fpz26n is a copy of the material fpz26 with the poling changed. Copying materials is a useful tool, find out why in this article.
Why This Simulation?
The design of Tonpilz transducers can be tricky as there are a lot of parameters which affect their performance and no solid guidelines for an optimised design. Therefore, it is important that a designer does design studies on these devices.
In this simulation we will excite the piezoelectric stack with the base of the transducer fixed to observe the acoustic pressure wave in the water load.
The Simulation Process
Let's go through the step by step tutorial and see how to simulate this Tonpilz transducer in OnScale!
Note: You can click on any images to make them bigger.
Step 1 - Create a New Project
Open up OnScale in Designer Mode. The first step is to create a new project.
- In the Home tab of the ribbon, click New Project. The New Project window shows.
- Type a name for the project.
- If desired, change the save location and/or project file name by clicking … beside Project File.
- For Analysis, select Mechanical Dynamic.
- Select the Advanced checkbox.
- For Distance, select mm.
- Click OK.
Step 2 - Set the Frequency of Interest
First we will specify the frequency of interest.
- Select Project Settings in the Model Tree
- Expand the Frequency of Interest property
- Tick the box
- Enter a value of 200e3
Step 3 - Add the Materials from the Material DB
The second step is to add the required materials for the tonpilz transducer to the Project Materials database.
Fpz26
Add positively polled piezoelectric material.
- Click Project Materials icon to open the Material Database
- Expand the 'Piezoelectric' materials dropdown
- Double click 'Ferroperm PZ26 - fpz26' to add this to Project Materials
- Expand the 'fpz26' dropdown
- Expand the 'Piezoelectric' properties dropdown
- Double click on the Poling value and change it to Y+
Fpz26n
Add negatively polled piezoelectric material.
- Right click on 'fpz26'
- Select Copy
- Give duplicate material the name 'fpz26n'
- Select OK
- Expand 'fpz26n' dropdown
- Expand 'Piezoelectric' properties dropdown
- Double click on the Poling value and change it to Y-
Magn/Stst/Watr
Now add the screw and head mass materials.
- Expand 'Metal' materials dropdown
- Double click on 'Magnesium - magn' to add it to Project Materials
- Double click on 'Stainless Steel- stst' to add it to Project Materials
- Expand 'Fluid' materials dropwdown
- Double click on 'Water - watr' to add it to Project Materials
- Select Done to save Project Materials
Step 4 - Create Basic Geometric Shapes
We will make use of the geometric primitives to build the Tonpilz transducer. The transducer geometry consists on a tail mass, 6 ceramic rings, a head mass and a screw to join it all together.
Screw Head
We will start by creating the screw. The first step for this is to add a cylinder primitive using the Home Cylinder button in the Home tab to represent the screw head.
- Right click on primitive_1
- Navigate to Assign Material and select 'stst'
- Set the Axis property of primitive_1 to Y
- Set the End property of primitive_1 to 3.7
- Set the Radius Begin property to 5.5
- Set the Radius End property to 5.5
- Right click in the workspace and select Reset View to snap the view to the geometry
Screw Thread
Next we will add another cylinder to represent the screw thread.
- Right click primitive_1 and select Duplicate Selection
- Right click primitive_2
- Navigate to Assign Material and select 'stst'
- Set Begin property of primitive_2 to 3.7
- Set End property of primitive_2 to 15.7
- Set Radius Begin property of primitive_2 to 1.25
- Set Radius End property of primitive_2 to 1.25
- Right click in the workspace and select Reset View
Screw Tip
Next we will add another cylinder to represent the screw tip.
- Right click primitive_2 and select Duplicate Selection
- Right click primitive_3
- Navigate to Assign Material and select 'stst'
- Set Begin property of primitive_3 to 15.7
- Set End property of primitive_3 to 16.9
- Set Radius Begin property of primitive_3 to 1.25
- Set Radius End property of primitive_3 to 0
Piezoelectric Discs
Having completed the screw, we will move on to the stack of 6 piezoelectric discs.
- Right click primitive_3 and select Duplicate Selection
- Right click primitive_4
- Navigate to Assign Material and select 'fpz26'
- Set Begin property of primitive_4 to 3.7
- Set End property of primitive_4 to 5.7
- Set Radius Begin property of primitive_4 to 4
- Set Radius End property of primitive_4 to 4
- Set Hollow Begin property of primitive_4 to 2
- Set Hollow End property of primitive_4 to 2
The second piezoelectric disc is polled in the opposite direction from the first.
- Right click primitive_4 and select Duplicate Selection
- Right click primitive_5
- Navigate to Assign Material and select 'fpz26n'
- Set Begin property of primitive_5 to 5.7
- Set End property of primitive_5 to 7.7
The third piezoelectric disc is polled in the same direction as the first.
- Right click primitive_4 and select Duplicate Selection
- Right click primitive_6
- Navigate to Assign Material and select 'fpz26'
- Set Begin property of primitive_6 to 7.7
- Set End property of primitive_6 to 9.7
The fourth piezoelectric disc is polled in the same direction as the second.
- Right click primitive_5 and select Duplicate Selection
- Set Begin property of primitive_7 to 9.7
- Set End property of primitive_7 to 11.7
The fifth piezoelectric disc is polled in the same direction as the first and third.
- Right click primitive_6 and select Duplicate Selection
- Set Begin property of primitive_8 to 11.7
- Set End property of primitive_8 to 13.7
The last piezoelectric disc is polled in the same direction as the second and fourth.
- Right click primitive_7 and select Duplicate Selection
- Set Begin property of primitive_9 to 13.7
- Set End property of primitive_9 to 15.7
Head Mass
The last part of the transducer to add is the head mass.
- Right click primitive_9 and select Duplicate Selection
- Right click primitive_10
- Navigate to Assign Material and select 'magn'
- Set Begin property of primitive_10 to 15.7
- Set End property of primitive_10 to 21.7
- Set Radius Begin property of primitive_10 to 4
- Set Radius End property of primitive_10 to 7
- Set Hollow Begin property of primitive_10 to 0
- Set Hollow End property of primitive_10 to 0
Water Load
The final part of the model is the water load which can be added using the cuboid primitive.
- Click on Cuboid icon
- Set Material property to 'watr'
- Set X Begin property of primitive_11 to -15
- Set Y Begin property of primitive_11 to 21.7
- Set Z Begin property of primitive_11 to -15
- Set X End property of primitive_11 to 15
- Set Y End property of primitive_11 to 36.7
- Set Z End property of primitive_11 to 15
- Right click in the workspace and select Reset View
Step 5 - Define a Time Function
The next step is to add a drive function. We will use a Sinusoidal time function with a frequency of 2e5 Hz.
- Click '+' to open the Drive Function dialogue
- Set Drive Frequency to 200e3
- Click Insert to close the window. A record called timefunc_1 will be added to the Model Tree
Step 6 - Define a Circuit
It is now time to define a circuit.
- Click '+' to open the Circuit dialogue
- Select the line between points 2 and 3
- Double click on Resistor
- Select the resistor in the circuit diagram
- Set resistance to 50 ohms
- Select Insert to close window. A record called circuit_1 will be added to the Model Tree
Step 7 - Choose The Right Mesh Size
It is time to set up the meshing of the model.
- Expand Model in the Model Tree
- Select Configuration
- Set Definitions to Advanced
- Set Elements per Wavelength to 20
Step 8 - Create Voltage Loads on Discs
We will now create loads on each side of the piezoelectric discs. There will be a total of seven loads.
- In the Model Tree, expand Boundary Conditions and then, beside Loads, click +.
- For Creation Mode, select Geometry Interface.
- For Geometry, select a primitive via the dropdown or click it in the model (see table below).
- For Interfacing Item, select a primitive via the dropdown or click it in the model (see table below).
- For Load Type, select Voltage.
- For loads 2, 4 and 6, select circuit_1 for Circuit.
- Set Termination (see table below).
- Click Create Load.
Repeat steps 3 through to 8 until you've created all seven loads.
Load |
Geometry |
Interfacing Item |
Termination |
1 |
primitive_1 |
primitive_4 |
Ground |
2 |
primitive_4 |
primitive_5 |
timefunc_1 |
3 |
primitive_5 |
primitive_6 |
Ground |
4 |
primitive_6 |
primitive_7 |
timefunc_1 |
5 |
primitive_7 |
primitive_8 |
Ground |
6 |
primitive_8 |
primitive_9 |
timefunc_1 |
7 |
primitive_9 |
primitive_10 |
Ground |
Step 9 - Define the Boundary Conditions
We need to change the boundary conditions so that the tail of the transducer is fixed and the water load has absorbing boundaries.
- Click Domain Boundaries in the Model Tree
- Set X Minimum to Absorbing
- Set X Maximum to Absorbing
- Set Y Minimum to Fixed
- Set Y Maximum to Absorbing
- Set Z Minimum to Absorbing
- Set Z Maximum to Absorbing
Step 10 - Define the Type of Analysis
We will now set the model simulation time to be 0.1ms seconds
- Click Analysis
- Change Simulation Run Time to 0.0001
Step 9 - Define the Simulation Output Results
We will now define 3 outputs, a time history of the acoustic pressure in the middle of the water load will be recorded as well as the maximum and minimum pressure arrays.
Output Result 1 : Field Data Array of Minimum Acoustic Pressure
- Click '+' to create a new output
- Set Output Type to Field Data
- Set Field Type to Minimum
Output Result 2 : Field Data Array of Maximum Acoustic Pressure
- Click '+' to create a new output
- Set Output Type to Field Data
- Set Field Type to Maximum
Output Result 3: Time History Graph of Acoustic Pressure at (0,29.2,0)
- Click '+' to create a new output
- Expand Location dropdown
- Set Y Location to 29.2
Step 12 - Run the Simulation on the Cloud
At this point the model is completely set up and it can now be run on the cloud.
- Click Run on Cloud
- Select Estimate
- Select Run
How to Get the Simulation Results?
Once the simulation has finished, the results are available in your storage to download.
- Click the Storage icon to open the cloud storage
- Select your job from the dropdown menu
- Expand the simulation folder
- CTRL + select the flxdato & flxhst file, right click and select Download Selection
Choose an appropriate save location and close the cloud storage.
Step 13 - Check the Simulation Results
Switch to the Post Processor
- Click this icon to access the Post Processor to analyse simulation results
Open Results
- Click File Explorer
- Expand the job simulation folder. Double click the data out file to open the field data results
- Double click the history file to open the time history results
Plot Time History (Acoustic Pressure in Middle of Water)
- Double click 'aprs' to plot acoustic pressure time history
- Set Plot Title to Acoustic Pressure at Center of the water load
- Change maximum value of xAxis to 0.0001
Plot Data Array (Maximum Pressure)
- Double click 'apmx' in the Data Out section of the Results Manager to plot maximum pressure data field
- Select Continue to plot 'apmx' to workspace
Try for yourself
Now that we have introduced you to the tutorial, try have a play around with some of the settings, add some other outputs, or use this model as a starting point of your own.