PZT Disc in Water Load

In this tutorial, you will learn how to set up a simple 2D model of a PZT disc residing in a water tank using the designer mode basic geometry shapes.

You will learn:

  • The Basic Simulation Workflow in Onscale Designer
  • How to set up a 2D axi-symmetric model
  • How to create a simple geometry
  • How to simulate piezoelectric materials
  • How to display and post-process your results
What is PZT?: Lead zirconate titanate is an inorganic compound with the chemical formula Pb[ZrxTi1-x]O3 (0≤x≤1). Also called PZT, it is a ceramic perovskite material that shows a marked piezoelectric effect, meaning that the compound changes shape when an electric field is applied. It is used in a number of practical applications such as ultrasonic transducers and piezoelectric resonators. It is a white to off-white solid.

Model Definition


Characteristics of the model:


PZT Disc of dimensions 10 mm x 2 mm 

Water of dimensions 14mm x 10mm 

Mesh Size:

0.1 mm

Output Results:

- Time History of Acoustic Pressure on top of the disc at [0, 6] mm

- Maximum Y displacement data array

Material Data:

Name Water at 25C CTS 3203HD
Code Name watr pmt3
Density 1000 kg.m-3 7820 kg.m-3
Bulk Velocity 1496 ms-1 4708.36 ms-1
Shear Velocity 0 ms-1 1687.891 ms-1

Note: Material Data in OnScale are generally defined using the bulk velocity and the shear velocity parameters instead of the more traditional Elastic Modulus and Poisson's Ratio. You can check this page if you want to understand the relation between those parameters.

Why This Simulation?

PZT material is a piezo-electric material, it can thus deform under a certain voltage.

In this simulation we will apply 2 electrodes on both sides of the PZT Disk and observe the deformation of the disc in function of the voltage load applied.

The water around the PZT Disc will vibrate according to the vibration of the disc.
The model is a Disc in Lead Zirconate Titanate (PZT) inside a cylindrical water tank.

It is a 2D axi-symmetric model, which means that our model will be in 2D, but it will be transformed by the solver into a 3D model by automatically revolving the 2D model around the given Symmetry Axis (Y-Axis here).

In the results, the model will appear as a half cylinder when plotted in the post processor.

The Simulation Process

Let's go through the step by step tutorial and see how to simulate this PZT Disc in OnScale!

Step 1 - Create a New Project

Important: Make sure that you select the correct axis of symmetry in step 5 (Y, not X) because it is impossible to change this afterwards.

  1. Click New Project to open the New Project window.
  2. Name the project PZTDisc.
  3. If desired, change the save location and/or project file name by clicking beside Project File.
  4. For Analysis, select Mechanical Dynamic.
  5. For Model Type, select 2D Axi-Symmetric Model (Y).

    Warning: You can't change the axis of symmetry later, so be sure to select Y here and not X!

  6. Select the Advanced checkbox.
  7. For Distance, select mm.
  8. Click OK.

Step 2 - Add the Materials from the Material DB

First we will add the materials needed from the material database. We will use pmt3 and water in this tutorial.

  1. Click Project Materials to open the database
  2. Expand Fluid and double click to add Water at 25C to the Project Materials (code name: watr)
  3. Expand Piezoelectric and double click to add the material CTS3203HD (code name: pmt3)
  4. In the right panel, expand the pmt3 material, then expand the piezoelectric tab and double click to change the poling direction to Y+
  5. Click Done

Important: The poling direction is a frequent source of error which leads to wrong results, so please double check that you changed it to "Y+".


Step 3 - Create Basic Geometry Shapes

The Geometry consists of a rectangle of water defined by 2 points [Begin Point (X=0, Y=0), End Point (X=14,Y=10)] and a second smaller rectangle which represents the PZT Disc defined also by 2 points [Begin Point (X=0, Y=4), End Point (X=10,Y=6)].

In OnScale, the Geometry Shapes are created with a certain order and the shape created after will be created on the top of the shapes created before. This facilitate the model creation because you do not need to use Boolean operations to cut or create interface between shapes. If you want to change the order after you already created the geometry, it is possible by changing the property "Precedence" of the geometric shape.

Let's start with the first water material rectangle shape [Begin Point (X=0, Y=0), End Point (X=14,Y=10)]

  1. Click the "primitive_1" Rectangle
  2. Change Material to watr in the Properties window
  3. Expand and set End (mm) to X (mm) = 14
  4. Set End (mm) to Y (mm) = 10
Let's create now the second smaller rectangle which represents the PZT Disc defined also by 2 points [Begin Point (X=0, Y=4), End Point (X=10,Y=6)].
  1. Right click primitive_1 and select Duplicate Selection
  2. Click primitive_2
  3. Change material from watr to pmt3. The color will change automatically to reflect the color associated to the material.
  4. Expand and set Begin (mm) to Y(mm) = 4
  5. Set End (mm) to X(mm) = 10 and Y(mm) = 6

Note: After making changes to X and Y right click the workspace and select Reset View to update the model visualization.

Step 4 - Define a Time Function

We will now add a Ricker Wavelet drive function for later use as out loads require a time function be set.

  1. Expand the Menu "Forcing Functions" and click '+' to open the Define Input Time function window
  2. Select the Ricker Wavelet as the type of time distribution of the forcing function.
  3. Click Insert to close the window. A record called timefunc_1 will be added to the window

Step 5 - Choose the right Mesh Size

We will now change the mesh settings to use 15 elements per wavelength

  1. Expand the Menu "Model" and then expand "Mesh", then select Configuration
  2. Set Definitions to Wavelength Based
  3. Set Elements Per Wavelength to 15

Step 6 - Create the two electrodes

Note: In this step, we will create 2 loads which will represent electrodes at the bottom and at the top of the PZT Disc. The load_1 will represent the top electrode (1) and will be set as a "Voltage" type of load to which the previously defined forcing function timefunc_1 will be associated. The load_2 will represent the bottom electrode (2) and will be set as a "Voltage" type of load with the termination "Ground".

Create the first electrode

Let's start first by creating the load_1.

  1. In the Model Tree, expand Boundary Conditions and then click + beside Loads to open the Load Definition window.
  2. Change Creation Mode to Geometry Interface.
  3. For Geometry, click the PZT in your model or else select primitive_2 (pmt3) via the dropdown.
  4. For Interfacing Item, click the water in your model or else select primitive_1 (watr) in the dropdown.
  5. For Load Type, select Voltage.
  6. For Termination, select timefunc_1.
  7. Click Create Load.

The load_1 corresponding to the top electrode (1) will then appear under Loads in the Model Tree.

With this load selected, in the Properties window:

  1. Change Area Scaling to 6.28.
  2. Change Interface Definition > Maximum (mm) > Y (mm) to 6.

Important: The area scaling is an important factor used to take into account. For Axi-symmetric models the area scaling is the determined by the central angle of a full circle in radians 2π or 6.28. 

Create the second electrode

The Load Definition window should still be open. Follow these steps to create the second load, corresponding to the bottom electrode:

  1. For Geometry, click the PZT in your model or else select primitive_2 (pmt3) via the dropdown.
  2. For Interfacing Item, click the water in your model or else select primitive_1 (watr) in the dropdown.
  3. For Load Type, select Voltage.
  4. For Termination, select Ground.
  5. Click Create Load.
  6. In the Properties window, change Area Scaling to 6.28.
  7. Change Interface Definition > Maximum (mm) > Y (mm) to 4.

Step 7 - Define the Boundary Conditions

We will need to change the X minimum boundary condition to Symmetry as this model is symmetrical along that axis.

  1. Click Domain Boundaries and expand the items X Minimum, X Maximum, Y Minimum and Y Maximum of the Properties Window
  2. Change the X Minimum boundary condition to Symmetry. All others will be Absorbing
  3. Change remaining boundary conditions to Absorbing

Note: You can find an article explaining what each boundary condition does here

Step 8 - Define the Analysis Simulation Time

We will now set the model simulation time to be 4e-5 seconds

  1. Click Analysis 
  2. Change Simulation Run Time (s) to 4e-5

Step 9 - Define the Output Results

We will now define 2 outputs, a time history of the acoustic pressure on top of the piezo disc will be recorded and the maximum pressure array will be outputted

Output Result 1 : Time History Graph of Acoustic Pressure at Y=6

  1. Click '+' this will create a new output 
  2. Change Output Type to Time History 
  3. Set Array Type to Acoustic Pressure
  4. Expand Location (mm) and set Y = 6

Output Result 2: Maximum Y Displacement Field

  1. Click '+' this will create a new output 
  2. Change Output Type to Field Data 
  3. Change Array Type to Displacement and Array Component to Y 
  4. Change Field Type to Maximum

Step 10 - Run on the Cloud

At this point the model is completely set up and it can now be run on the cloud.

  1. Click Run on Cloud 
  2. The option to rename your job. This is how it will appear in the storage
  3. Click Estimate 
  4. Click Run

How to Get the Simulation Results?

The simulation results will need to be downloaded from the cloud storage in order to analyse the results in the post processor. More experience users may also be able to process Time Histories in Review.

  1. Click Storage this opens the window shown above
  2. Locate the job 
  3. Click Download
  4. Click Download all and choose a download destination folder

Choose an appropriate save location when the file explorer pops up and click Select Folder to close the window.

Step 11 - Check the Simulation Results

Switch to the Post Processor

Click this icon to access the Post Processor 


Open Results

  1. Click File Explorer
  2. Expand the folder containing the results just downloaded
  3. Double click the flxdato and flxhst file to open them
  4. Click Results Manager

Plot Data Array (Maximum Displacement in Y)

  1. Double click on Data Out > PZTDisk> Time-30112 > ydmx to plot the maximum pressure data array
  2. Click the work-space to rotate the model 

Plot Time History

  1. Click Reset Viewport and choose Reset All Viewports
  2. Double click piez load1:Charge to plot the charge time trace
  3. Change Plot Title to Charge Top Electrode (optional you can choose)
  4. Change Y-Axis Label to Piezoelectric Charge (optional you can choose)

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 for your own.

Advanced - Transmit and Receive Sensitivity

If you wish to take this example a bit further, let's calculate the sensitivity of the device. To do this we must add an extrapolation output.

Step 1 - Add Output

Output Result 3 : Extrapolation Data

  1. Click '+' this will create a new output 
  2. Change Output Type to Extrapolation Data
  3. Set Cutting Plane to Y
  4. Set Cutting Point (mm) to 6.3

Step 2 - Rerun Model

Repeat Steps 10 and 11 to simulate download new results.

Note: Ensure to add 'PZTDisc.flxext' to the list of download files.

Step 3 - Plot TVR in Extrapolation Tool

Transmit sensitivity a.k.a Transmit Voltage Response (TVR) can be visualised in the extrapolation tool in Post Processor.

Switch to the Post Processor

Click this icon to access the Post Processor 


Plot Results

  1. In the Tools tab, select Extrapolation Toolkit
  2. Expand Model Import 
  3. Select Open and choose 'PZT_Disc.flxext'
  4. Select Yes to also load 'PZT_Disc.flxmdl'
  5. Expand TVR Calculation
  6. Select Start

Step 4 - Plot in Review

To visualise both transmit (TVR) and receive sensitivity (OVC), you must use Review.

What is Review?: Click here to find out!

Download: TVR/OVC Review File

Download the Review file 'tvr_ovc.revinp' and place it in the same directory as the downloaded results in Step 2. Here is a brief description of what each section of code is doing is included below:

Insert Inputs



Line 11: Set reference distance ( 1m )

Line 12 & 13: Set frequency range

Line 16: Read in history file 'PZT_Disc.flxhst' containing time history outputs

Line 18 : Must use standard graphics

Calculate Extrapolation Data


Line 27: Read in extrapolation file 'PZT_Disc.flxext' containing extrapolation data

Line 29: Specify observation point to which the pressure field will be extrapolated XYZ (0,1,0) m

Line 30: Perform the extrapolation 

Convert To Frequency Domain 


Line 40: Define new local file name 'f3' which will contain the frequency domain data computed in subsequent commands

Line 41: Use padding factor of 5

Line 42: Compute the FFT of the first time record in 'f2' (extrapolated pressure)

Line 43: Compute FFT of the third time record in 'f1' (input voltage)

Line 44: Calculate impedance using voltage and charge records

Calculate TVR


Line 55:  Define new local file name 'f4' which will contain the frequency domain data computed in subsequent commands

Line 56: Normalise pressure response (extrapolated pressure / input voltage)

Line 57: Convert to TVR

Line 58: Convert to TCR

Line 59: Calculate OCV

Lines 70 - 111: Plot Impedance, TVR and OCV

Lines 116 - 119 - Output above to text file