In Part 1 of this Blog Tutorial we provided a more theoretical example of piezoelectric equations and the important coefficients to know.

If you missed Part 1 you can check it out here!

Now let’s start with a practical consideration:

What parameters do we need in OnScale to define a Piezoelectric material?

The accurate modelling of piezoelectric materials requires **13 independent parameters**:

- Density – ?
- 6 stiffness [c] (or compliance [s]) components: c11, c12, c13, c33, c44, c66
- 3 piezoelectric coefficients ([d] or [e]): ex5, ez1, ez3
- 2 dielectric constants(relative permittivity) ([?T] or [?S]: ?xx and ?zz)
- Mechanical Q (dimensionless)

If we look at the material properties in OnScale for a material such as pmt3, we will require the following:

## How to calculate the stiffness or compliance coefficients?

Let’s consider the isotropic case. Most metallic alloys and thermoset polymers are considered isotropic which means that the material properties are independent of direction.

Such materials have only 2 independent variables (i.e. elastic constants) in their stiffness and compliance matrices, as opposed to the 21 elastic constants in the general anisotropic case.

The two elastic constants are usually expressed as the **Young’s modulus** E and the **Poisson’s ratio** ?. However, the alternative elastic constants K (bulk modulus) and/or G (shear modulus) can also be used. For isotropic materials, G and K can be found from E and n by a set of equations, and vice-versa.

Hooke’s law for isotropic materials in compliance matrix form is given by:

Some literatures may have a factor 2 multiplying the shear moduli in the compliance matrix resulting from the difference between shear strain and engineering shear strain, where the stiffness matrix is equal to the inverse of the compliance matrix, and is given by:

Now… remember, this is all for the isotropic case!

A piezoelectric material is not isotropic so those relations will be slightly more complex.

Now, let’s go back to the example on the datasheet provided in Part 1.

Which parameter do we already have on the material datasheet and which parameter should we calculate?

For this material datasheet, we see that we have the **density**, the **mechanical Q** and the **2 dielectric constants** (also called relative permittivity).

We will need to calculate the **stiffness matrix (1)** using the young’s modulus and Poisson’s ratio provided. Then, we will need to calculate the **matrix [e] (2)** of piezoelectric coefficients from the matrix [d] provided.

### 1- Calculation of the stiffness matrix

First, we need to calculate the compliance matrix and then we can inverse it to obtain the stiffness matrix. As PZT materials exhibits transverse isotropy (6mm crystal symmetry), we can use the following matrix to calculate the compliance matrix:

The transverse modulus G12 is related to the transverse Poisson’s ratio and the transverse stiffness through the following equation:

Here is a python script that you can use to calculate this compliance matrix and the associated stiffness matrix (which is the inverse of the compliance matrix).

import numpy as np from numpy.linalg import inv E1 = 6.2e10 #N/m2 E2 = 6.2e10 #took E2=E1 E3 = 4.9e10 nu = 0.32 E5 = 1.9e10 G6 = E1/(2*(1+nu)) #compliance matrix s = np.array([ [1/E1,-nu/E2,-nu/E3,0,0,0], [-nu/E2,1/E2,-nu/E3,0,0,0], [-nu/E3,-nu/E3,1/E3,0,0,0], [0,0,0,1/(2*E5),0,0], [0,0,0,0,1/(2*E5),0], [0,0,0,0,0,1/G6]]) #print (s) #stiffness matrix c = inv(s) print('Stiffness Matrix\n') for i in range(6): for j in range(6): print('c'+str(i+1)+str(j+1)+'='+str(c[i][j]))

Note: To run this script, you will need to install Python first and then the module numpy of python.

This is what you should obtain:

**Compliance Matrix:**

[[ 1.61290323e-11 -5.16129032e-12 -6.53061224e-12 0.00000000e+00 0.00000000e+00 0.00000000e+00] [-5.16129032e-12 1.61290323e-11 -6.53061224e-12 0.00000000e+00 0.00000000e+00 0.00000000e+00] [-6.53061224e-12 -6.53061224e-12 2.04081633e-11 0.00000000e+00 0.00000000e+00 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.63157895e-11 0.00000000e+00 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.63157895e-11 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.25806451e-11]]

**Stiffness Matrix:**

[[9.71426186e+10 5.01729217e+10 4.71409729e+10 0.00000000e+00 0.00000000e+00 0.00000000e+00] [5.01729217e+10 9.71426186e+10 4.17508418e+10 0.00000000e+00 0.00000000e+00 0.00000000e+00] [4.71409729e+10 4.71409729e+10 7.91702226e+10 0.00000000e+00 0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00 0.00000000e+00 3.80000000e+10 0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.80000000e+10 0.00000000e+00] [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.34848484e+10]]

Now that we have the Stiffness Matrix, we can calculate the coefficient [e] from the coefficient [d] written on the material datasheet.

To transform those [d] coefficients, we need to have a look at some of the transformation relations mentioned on this page from the efunda website:

Stress-Charge to Strain-Charge:

This tells us the following:

- To calculate [e], we need to use the relation [e] = [d].[c]
- [c] is the stiffness matrix calculated previously

Note: [c] is the stiffness matrix, NOT the compliance matrix, it’s a bit confusing

We can now use the following Python script to calculate:

# Piezo properties d11 = 0 d12 = 0 d13 = 0 d14 = 0 d15 = 758e-12 d16 = 0 d21 = 0 d22 = 0 d23 = 0 d24 = d15 d25 = 0 d26 = 0 d31 = -210e-12 d32 = d31 d33 = 472e-12 d34 = 0 d35 = 0 d36 = 0 d = np.array([[d11,d12,d13,d14,d15,d16], [d21,d22,d23,d24,d25,d26], [d31,d32,d33,d34,d35,d36]]) e = d @ c for i in range(3): for j in range(6): print('e'+str(i+1)+str(j+1)+'='+str(e[i][j]))

**Result:**

e11=0.0 e12=0.0 e13=0.0 e14=0.0 e15=28.804 e16=0.0 e21=0.0 e22=0.0 e23=0.0 e24=28.804 e25=0.0 e26=0.0 e31=-8.68572426099775 e32=-8.685724260997747 e33=17.569136472961443 e34=0.0 e35=0.0 e36=0.0

Now that we have all the coefficients, we are ready to input this new material in OnScale

### How to create a new Piezoelectric material in OnScale?

To add this new piezoelectric material into the global onscale database, follow the steps below in the material database:

- Click on Add Global Material
- Add a Material Description
- Add a Material Name (It must be unique)
- Choose a Material Category and a Material Model
- Double click on the coefficients you want to modify
- Click on Save

We hope from this you will now be able to Calculate Piezoelectric Material Properties from Material Datasheet. If you have any questions let us know in the comment section below!