Skip to content

MUTs 001 - PMUT array

Prerequisites: complete any one step-by-step tutorial first so you are comfortable with the Allsolve project layout (Geometry, Physics, Simulations, Results).

In this example, ultrasound emitted by a 6x6 array of PMUTs (Piezoelectric micromachined ultrasonic transducers) is modeled and simulated.

6 x 6 PMUT array model

This example corresponds to the demo project 6x6 PMUT array

Here you’ll find an example case level guide on modeling and setting up physics for a simple PMUT array in Quanscient Allsolve. See the last two steps for typical simulation options and visualizing results for harmonic ultrasound.

Allsolve supports inline variable creation, so variables can be created on the fly during modeling. Optionally, you can define all the variables first, and then move on to modeling.

Here is a list of all the variables used in this tutorial:

Name Expression Description
R 100e-6 Cavity radius
thmem 10e-6 Membrane thickness
thpiezo 2e-6 Piezo thickness
thcavity 20e-6 Cavity thickness
n 6 Array size (even numbers only)
Rair 5*R*n Air bubble radius
freq 1e6 Frequency
  1. Build one of the PMUTs by creating 3 cylinders in a stack:

single PMUT disc

Name Element type Center point (m) Size (m) Rotation (deg)
Membrane Cylinder x: 0 Radius: R x: 90
y: 0 Height: thmem y: 0
z: 0 z: 0
Name Element type Center point (m) Size (m) Rotation (deg)
Piezo Cylinder x: 0 Radius: 0.67 * R x: 90
y: 0 Height: thpiezo y: 0
z: thmem/2+thpiezo/2 z: 0
Name Element type Center point (m) Size (m) Rotation (deg)
Cavity Cylinder x: 0 Radius: R x: 90
y: 0 Height: thcavity y: 0
z: -thcavity/2-thmem/2 z: 0
  1. Use the Grid operation to make the 6x6 array of PMUTs:

6 x 6 grid of PMUTs

Name Element type Target volumes Translation Repeat count
Grid Grid operation all 3 cylinder volumes of the single PMUT x: 4*R x: n
y: 4*R y: n
z: 0 z: 0
  1. Select all volumes in the grid and translate them so that your array is centered at the origin [0,0,0]:

Translated array

Name Element type Target volumes Translation
Translate Translate operation All volumes in the grid x: -4*R*(n-1)/2
y: -4*R*(n-1)/2
z: 0
  1. Build a sphere and 2 mostly overlapping boxes for the air bubble and baseplate:

Sphere & 2 boxes

Name Element type Center point (m) Size (m)
Sphere Sphere x: 0 Radius: Rair
y: 0
z: 0
Name Element type Center point (m) Size (m) Rotation (deg)
Box Box x: 0 x: 2*Rair x: 90
y: 0 x: 2*Rair y: 0
z: Rair+thmem/2 x: 2*Rair z: 0
Name Element type Center point (m) Size (m) Rotation (deg)
Box 2 Box x: 0 x: 2*Rair x: 90
y: 0 x: 2*Rair y: 0
z: Rair-thmem/2-thcavity x: 2*Rair z: 0
  1. Apply the Fragment all operation.

  2. Remove extra box and sphere sections (4 volumes in total, selected as in picture below). Remove 1

  3. Remove the cavity disc volume under each PMUT in the array. Remove 2

Proceed to the Physics section to define the model materials.

  1. Assign Air from the material library to the air bubble volume. Save the target as a region.
  2. Create a Geometry selector type region called pzt. Include the small top disc of each PMUT in the region. This is easiest to do by setting both Minimum size and Maximum size with one of the small discs. Use the Pick similar tool to select the disc for min and max size. pzt
  3. Assign PZT from the material library to the pzt region. PZT target
  4. Create a region called all, containing all volumes. It is easiest to do this by creating a computed region and picking the Complement of nothing. This way the all region is also updated if your geometry changes.
  5. Create a Computed region type region. Call it mono-si, and include all the remaining volumes, i.e. the membrane disc of each PMUT as well as the large circular baseplate. To pick these volumes easily, use the Difference operation. Select regions all, pzt and Air target for the operation. The difference of these regions yields the volumes highlighted below (air bubble hidden): Mono-Si target
  6. Assign Monocrystalline silicon from the material library to the mono-si region.

In total, 3 physics are used in this example: Elastic waves, Acoustic waves and Electrostatics. Add all of them to your project, after which you can move on to defining their interactions.

  • As elastic waves target, select all volumes except the air bubble.
  • Add a Clamp interaction.
    • As clamp target, select the baseplate volume.
  • Add the Elastic waves–Electrostatics coupling Piezoelectricity.
    • As piezoelectricity target, select the pzt region.
  • As acoustic waves target, select the air bubble.
  • Add Perfectly matched layer.
    • As perfectly matched layer target, select the air bubble dome surface.
    • Set PML Type to AML.
      • AML is suitable for rounded surfaces such as an air bubble, whereas box PML is built for XYZ-aligned box surfaces.
  • Add the Acoustic waves–Elastic waves coupling Acoustic structure.
  • As electrostatics target, select the pzt region.
  • Add a Constraint interaction.
    • As constraint target, select the bottom surface of each PZT disc on the array, 36 in total. To avoid clicking a large number of surfaces manually, you can define a geometry selector region with a bounding box for the surfaces. To avoid picking the larger PMUT membrane surfaces that exist on the same plane, use Pick similar for max size. Constraint target

      To pick surfaces on a certain Z-plane with geometry selector, it’s recommended to use the exact same value for Z Min and Z Max. Surface localization in a very thin Z-slice can be inaccurate due to floating point errors. If Z min and max are set as the same value however, a buffer is set to both directions to pick planar surfaces reliably.

    • Set constraint value to 0.
  • Add a Lump V/Q interaction.
    • As lump V/Q target, select the top surface of each PZT disc on the PMUTs. Again, define a geometry selector region with a bounding box to save some clicks. Constraint target
    • Set Actuation mode to Voltage.
    • Set voltage to sin(2*pi*freq*t).
  • Add a mesh.
  • Open the collapsible menu for Mesh element size.
  • Set Max size to 1e-4.
  • Save settings & mesh.

Mesh

Create a simulation with following options:

  • Set Analysis type to Harmonic.
  • Set Fundamental frequency to freq.
  • Set Number of FFT samples to 3.
  • Set Node count to 10.
  • As the Mesh, select the mesh you created.
  • For Inputs, create a sweep:
    • Create a Sweep override over variable freq.
    • Set Override expression to linspace(0.7e6, 0.9e6, 41).
    • Add the sweep to simulation inputs.
  • In Outputs, add:
    • u harmonic 2 field
      • Skin only
    • p harmonic 2 field
      • Skin only
    • See demo project for custom value output examples.

In the Simulations section, add visualizations and plots as needed. The u field can be visualized in the air bubble using a slice filter for example:

Visualization example