This example demonstrates how to set up and run a model with a piezoelectric load and more complex outputs.
This example covers:
- Piezoelectric materials
- Basic piezoelectric loads
- More detailed model outputs
The files used in this tutorial are found at the bottom of this page!
Starting the Model
This example does not go into detail for the initial model setup. For a step by step guide follow Transducer 2D Pressure Load up to the load definition step. Alternatively, start working from the attached 'FLEX_transducer_2D_piezo_model_setup.jfpx' archived project file.
Before continuing with this example, the following steps should be complete:
- Import geometry
- Import and assign materials
- Define model properties
- Mesh and preview
Piezoelectric Load Definition
Define a new load on the top edge of the piezoelectric ceramic part: Model Tree > Model > Boundary Conditions > Loads > + > Click below the top edge of the part > Create Load
Define a second load on the bottom edge of the ceramic part: Model Tree > Model > Boundary Conditions > Loads > + > Click above bottom edge of the part > Create Load
Two loads should now be defined as shown below, with each load acting normal to the top and bottom edges of the part respectively:
Change the type of both loads to piezoelectric: Model Tree > Model > Boundary Conditions > Loads > CTRL + load_1 + load_2 > Properties > Load Type > Voltage
Just as a driving time function had to be assigned to the pressure load that was applied in the previous example, piezoelectric loads must be assigned terminations to create a drive circuit.
Create a time function of a 500 kHz Ricker Wavelet: Access the time function tool using either the ribbon menu (Tools > Tools > Time Function) or the model tree (Model Tree > Setup > Forcing Functions > Time > +).
Assign timefunc_1 as the termination for load_1: Model Tree > Model > Boundary Conditions > Loads > load_1 > Properties > Termination > timefunc_1
Assign the termination for load_2 as ground, completing the drive circuit across the piezoelectric ceramic part: Model Tree > Model > Boundary Conditions > Loads > load_2 > Properties > Termination > ground
Area scaling must be applied to correctly define the surface area of an electrode. For a 2D model, the depth component which would exist along the z-axis in reality must be considered. In this case we will assume that the electrode has a total length of 0.02 m along the z-axis, providing us with a scaling factor to use.
Apply this scaling factor to both loads: Model Tree > Model > Boundary Conditions > Loads > load_1 + load_2 > Properties > Area Scaling > 0.02
For full 3D models and axisymmetric models, the area scaling factor can be left at the default value of 1. For other models, factors must consist of the following components depending on the model type:
- Half model - scaled by a factor of 2
- Quarter model - scaled by a factor of 4
- 2D model - scaled by the missing dimension (in general the z-axis, as is the case in this example)
In addition to terminating each piezoelectric load, it is essential to set the poling direction of the piezoelectric material. This option is a material property which can be set from within the material tool.
In this case we will set the poling direction along the positive global y-axis: Home > Materials > Project Materials > Expand pmt3 in Project Materials > Piezoelectric > Poling > Set to Y+
Set all boundaries of the model to the absorbing type: Model Tree > Model > Boundaries Conditions > Domain Boundaries > Properties > Select each boundary in turn > Boundary Type > Absorbing
Define three new outputs: Model Tree > Model > Outputs > +
Set the first output to minimum acoustic pressure: Output Type > Field Data; Field Type > Minimum; Array Type > Acoustic Pressure
Repeat this step for the second output, this time assigning maximum acoustic pressure to the array type.
This was also done in the Transducer Pressure Load tutorial!
Displacement (Time History):
The third output will be a time history of displacement at a specific point. In this case we want to look at the surface of the piezoelectric part and the displacement along the y-axis.
First we must a find good location for the output. To do so, select the piezoelectric part and view the bounding information: Model Tree > Setup > Geometry > part_6 (piezoelectric part) > Properties > Bounding Information
From the bounding information, we can see that the center is at the origin of the x-axis. The top edge is located at a Y Maximum value of 0.023 along the y-axis.
These provide coordinates we can assign to the third output: Output Type > Time History; Array Type > Displacement; Array Component > Y; Location > X > 0; Location > Y > 0.023
The location of the time history output will be indicated with a marker placed at the defined coordinates on the geometry.
We also want to take a look at the charge on the top electrode, which is defined as load_1 in this example. There is, however, no need to define a new output for this. Voltage, charge and current outputs are already set up in the background when a piezoelectric load is defined.
Run the Model
Run Time and Analysis Properties:
To display the outputs that we just defined as the model runs, it is necessary to set up views in run time properties as shown below.
Set up three views:
Model Tree > Run Time Graphics > Properties > Number of Views > 3
Define View 1: View 1 > Plot Type > Array; Array Type > Acoustic Pressure
Define View 2: View 2 > Plot Type > Time History; Time History > Output 3
Define View 3: View 3 > Plot Type > Electrode; Electrode > load_1; Electric Output > Charge
We will keep the number of frames at 20, with no output format assigned.
The following analysis properties can be used, or alternatively default values are appropriate as long as the simulation run time is changed.
- Limit CPU usage: Unchecked
- Zoning: Off
- Simulation run time: 2e-05
- Precision type: Single Precision
- Timestep factor: 0.95
- Generate restart file: No