Parametric Tonpilz Transducer



This tutorial provides the steps to set up a Tonpilz Transducer whose properties can be parameterised using the parameter table in the Designer Workspace.

This example covers: 

  • Using primitives
  • Material Assignment
  • Basic voltage loads and drive functions
  • Circuits
  • Boundary conditions 
  • Analysis
  • Model Outputs
  • Using parameter table 

Creating a 3D Project:

Open OnScale in designer mode and click New Project, create an appropriate folder to save the new project in and choose this as the project save location. Change model working units to mm, set the model type to 3D Model and click OK.



Click Project Materials button to add materials required for the project.

For simplicity of this tutorial, the project material file is premade and can be downloaded using the following link:

Once downloaded select the red import icon in the Materials Database to import the material file.


Ensure you have the type .prjmat chosen in the file explorer when you go to search for the material file.

Parameter Table:

The parameter table allows users to parameterise their model geometry. This means the user can set up their model in a way that any changes are incorporated automatically without having to modify other parts.

The default position of the parameter table is below the Properties window when Designer.

For this tutorial 21 parameters and 1 varying parameter are required - varying parameters can be used in a parametric sweep.

Add the following parameters to the table by setting the name and value in the define parameter dialogue and then hit enter or '+'.

*Please note that all parameters are in the units m*

Parameter  Value 
screw_top_end 3.7e-3
pzt_thk 2e-3
pzt1_end =screw_top_end+pzt_thk
pzt2_end =pzt1_end+pzt_thk
pzt3_end =pzt2_end+pzt_thk
pzt4_end =pzt3_end+pzt_thk
pzt5_end =pzt4_end+pzt_thk
pzt6_end =pzt5_end+pzt_thk
screw_tip_thk 1.2e-3
screw_tip_end =pzt6_end+pzt_thk
screw_beg =screw_top_end
screw_thread_thk 12e-3
screw_thread_end =screw_beg+screw_thread_thk
head_thk 6e-3
head_end =pzt6_end+head_thk
water_thk 15e-3
water_end =head_end+water_thk
water_wdth_beg -15e-3
water_wdth_end 15e-3
xmax =water_wdth_end
ymax =water_end
zmax =water_wdth_end


To see the effect the thickness of the pzt has on the output of the transducer set pzt_thk to varying by checking the tickbox. 

Note: Any parameters dependent on other parameters or use a mathematical expression must have an '=' sign at the beginning. Numerical only parameters must not use an '=' sign. 

Using Primitives: 

Primitives can be created via the Site Tool or the Primitives section added to the Home Tab.

Firstly select Cylinder. This will create a 3D primitive named "primitive_1" and any other primitives created after this will follow this naming convention. The property window is then populated with the primitive's properties. 

When a primitive is selected in the model tree whatever properties are shown in the properties window belongs to that primitive. Set the properties of primitive_1 to:

  • Axis: Y                            
  • Material = stst                 
  • End (mm) = screw_top_end               
  • Radius Begin (mm) = 5.5  
  • Radius End (mm) = 5.5                  

This should create a cylindrical disc representing the screw's head. Next step is to create 6 ceramic discs. To do this right click the primitive in the Model Tree and select duplicate primitive, to copy the primitive and it's properties. 

For this tutorial we will duplicate the primitive 9 times. Once the duplicates have been made change the following properties of the new primitives:


  • Material = fpz26
  • Begin (mm) = screw_top_end
  • End (mm) = pzt1_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


  • Material = fpz26n
  • Begin (mm) = pzt1_end
  • End (mm) = pzt2_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


  • Material = fpz26
  • Begin (mm) = pzt2_end
  • End (mm) = pzt3_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


  • Material = fpz26n
  • Begin (mm) = pzt3_end
  • End (mm) = pzt4_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


  • Material = fpz26
  • Begin (mm) = pzt4_end
  • End (mm) = pzt5_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


  • Material = fpz26n
  • Begin (mm) = pzt5_end
  • End (mm) = pzt6_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 4
  • Hollow Begin (mm) = 2
  • Hollow End (mm) = 2


At this stage the model should look like the following:



The next stage is to insert the screw body and tip. To do this duplicate one of the ceramic discs

twice and change the properties of the primitives to:


  • Material = stst
  • Begin (mm) = pzt6_end
  • End (mm) = screw_tip_end
  • Radius Begin (mm) = 1.25
  • Radius End (mm) = 0
  • Hollow Begin (mm) = 0
  • Hollow End (mm) = 0


  • Material = stst
  • Begin (mm) = screw_top_end
  • End (mm) = screw_thread_end
  • Radius Begin (mm) = 1.25 
  • Radius End (mm) = 1.25
  • Hollow Begin (mm) = 0
  • Hollow End (mm) = 0


Another cylinder is needed next for the head of the Tonpilz transducer so duplicate one of the ceramic discs again and change the properties to the following:


  • Material = magn
  • Begin (mm) = pzt6_end
  • End (mm) = head_end
  • Radius Begin (mm) = 4 
  • Radius End (mm) = 7
  • Hollow Begin (mm) = 0
  • Hollow End (mm) = 0


Finally, to simulate a water load add a cuboid primitive and change its properties to the following:


  • Material = watr
  • Begin 
    • X (mm) = water_wdth_beg
    • Y (mm) = head_end
    • Z (mm) = water_wdth_beg
  • End 
    • X (mm) = water_wdth_end
    • Y (mm) = water_end
    • Z (mm) = water_wdth_end


Every part of the Tonpilz has been defined using parameters in the parameter table resulting in a model similar to:


Drive Function:

To define a drive function follow Setup > Forcing Functions > Time > +

Click '+' to bring up the Define Input Drive Function Window. Set the parameters as shown in the image below:

Click insert to add the time function to the model tree.


To add a damping circuit navigate to Setup > Circuits >  + click the '+' icon and the Circuit Tool will open up:

Click the line between nodes 2 and 3 then click the resistor to add it to this location. Once the resistor has been added to the circuit select it to view the property values. Change the resistance to 50 and click insert. The circuit definition is automatically added to the Model tree.


To define a new load follow Model Tree > Model > Boundary Conditions > Loads > +. This will bring up the load definition window.

Seven loads are required for this Tonpilz, one for each side of the ceramics. This can be done easily using the Geometry Interface creation mode which creates a load between the surface of two specified primitives.

To create a load select the two primitives from the drop down menus which interface the load and select create load. Do this for all of these loads:

  • load_1: primitive_1 and primitive_2
  • load_2: primitive_2 and primitive_3
  • load_3: primitive_3 and primitive_4
  • load_4: primitive_4 and primitive_5
  • load_5: primitive_5 and primitive_6
  • load_6: primitive_6 and primitive_7
  • load_7: primitive_7 and primitive_10

For load_1, 3, 5, and 7 change the following properties to:

  • Load Type - Voltage 
  • Area Scaling - 1
  • Circuit - circuit_1
  • Termination - timefunc_1
  • Amplitude Scale Factor - 1
  • Time Shift (s) - 0.0

For load_2, 4, and 6 and change the following properties to:

  • Load Type - Ground 
  • Area Scaling - 1
  • Circuit - No Circuit
  • Termination - Ground


Since the plan is to sweep the pzt_thk, the maximum extents of the model must be parameterised too by setting them to the maximum parameter in each direction (see parameter table for reference):

Maximum (mm)

  • X = xmax
  • Y = ymax
  • Z = zmax

Domain Boundaries:

To set boundary conditions follow Model Tree > Model > Boundary Conditions > Domain Boundaries set the following boundaries:

  • XMIN = absorbing
  • XMAX =absorbing
  • YMIN = fixed
  • YMAX = absorbing
  • ZMIN = absorbing
  • ZMAX = absorbing

Simulation Time: 

To set the simulation time follow Model Tree > Model > Analysis > Properties > Simulation Run Time > Enter 1e-06 as the value.

Model Outputs:

To request outputs select follow Model Tree > Model > Outputs > +. Do this twice.

Edit the properties of the first output via: Model Tree > Model > Outputs > output_1 > Properties

Set the properties of output_1 to calculate the minimum acoustic pressure field data: Output Type > Field Data; Field Type > Minimum; Array Type > Acoustic Pressure

Repeat the step above for Maximum Acoustic Pressure.


At this stage all of the model components have been set up and the model can be run on the cloud. To do this select the Run on Cloud button in the ribbon of the application. This opens up the cloud scheduler where you can sweep the thickness of the PZT rings by setting the end value, simulations and increments.


0 out of 0 found this helpful



Please sign in to leave a comment.