Skip to content

PMUT Unit cell - Ultrasound 001

In this step-by-step tutorial, a single PMUT (piezoelectric micromachined ultrasonic transducer) unit cell is modeled and simulated.

The cell consists of a thin-film stack — silicon dioxide substrate, aluminum nitride piezo layer, molybdenum electrodes, and a polysilicon membrane — coupled to a water load above. Symmetry boundary conditions on the lateral faces represent a periodic array, while an absorbing boundary condition (ABC) truncates the water domain at the top.

Cross-section of the PMUT unit cell

The unit cell is built entirely in the Allsolve geometry editor. Each geometry element is given a name, which is then used as a region rule attribute so materials and boundary conditions are easy to set up.

Layer Geometry name Material
Water vol_water Water
Polysilicon membrane vol_poly Polycrystalline Silicon
Top Mo electrode vol_mo_top Molybdenum
AlN piezo layer vol_aln Aluminum Nitride
Bottom Mo electrode vol_mo_bot Molybdenum
SiO₂ substrate (with cavity) vol_sio2 Silicon Dioxide

Import all 29 project variables in Step 1. The table below summarizes the most important ones:

Group Variables Role
Geometry pitch, cell_d, bot_elec_d, t_sio2, t_aln, t_mo, t_poly Stack dimensions
Derived geometry cell_r, bot_elec_r, half_pitch, z_sio2_top, z_aln_top, z_poly_top, z_water_top, eps Centers, radii, and region selectors
Mesh lateral_mesh_size, elem_per_wl, lambda_water Lateral element size and wavelength meshing in water
Simulation freq, dt, t_end, V_amp, delay, ppc, n_cycles Transient settings and drive waveform

At the default values, the excitation frequency is 12 MHz and the water domain height equals one acoustic wavelength (lambda_water = c_water / freq).

Physics Target region Key interactions
Elastic waves vol_solid Clamp on sur_base; symmetry on sur_sym_x0, sur_sym_xL, sur_sym_y0, sur_sym_yL; Piezoelectricity on vol_aln
Acoustic waves vol_water Acoustic structure coupling; Absorbing boundary on sur_water_top
Electrostatics vol_aln Constraint (0 V) on sur_top_elec_intf; Lump V/Q drive on sur_bot_elec_intf

The voltage drive uses V_amp * wavelet(freq, delay). The function wavelet creates a Ricker wavelet with a given frequency and delay, and is often used as an excitation/load in time-dependent simulations.

  • Drive-port signals: voltage (drive.V), charge (drive.Q), and current (dt(drive.Q))
  • Front-face averages: acoustic pressure, normal displacement, and normal velocity averaged over the radiating surface
  • Field outputs: displacement magnitude (norm(u)) and pressure (p), saved every 25th time step

Here you’ll find a detailed step-by-step tutorial on how to build and simulate a PMUT unit cell in Quanscient Allsolve.

Step 1 - Create the project and import variables

Section titled “Step 1 - Create the project and import variables”
  1. Create a new project and name it PMUT unit cell.

  2. Open the Common sidebar, Definitions tab.

  3. Import the variables from a CSV file. In the Variables section, use Import CSV and upload a file with the following contents:

    Name,Expression,Description
    freq,12e6,Centre excitation frequency (Hz)
    V_amp,1.0,Drive voltage amplitude (V)
    delay,1.2,Wavelet delay in periods (peak at delay/freq)
    pitch,60e-6,Inter-cell pitch (m)
    cell_d,50e-6,Cavity / cell diameter (m)
    bot_elec_d,25e-6,Bottom electrode diameter (m)
    t_sio2,2e-6,SiO2 substrate thickness (m)
    t_aln,1e-6,AlN piezo layer thickness (m)
    t_mo,200e-9,Molybdenum electrode thickness (m)
    t_poly,2e-6,Polysilicon elastic layer thickness (m)
    c_water,1500,Speed of sound in water (m/s)
    lambda_water,c_water / freq,Acoustic wavelength in water (m)
    elem_per_wl,6,Mesh elements per wavelength in water
    lateral_mesh_size,10e-6,Lateral mesh element size (m)
    ppc,25,Time-steps per cycle
    dt,1/(freq*ppc),Time-step size (s)
    n_cycles,10,Number of excitation cycles to simulate
    t_end,n_cycles/freq,Total simulation time (s)
    cell_r,cell_d/2,Cell radius (m)
    bot_elec_r,bot_elec_d/2,Bottom electrode radius (m)
    half_pitch,pitch/2,Half of inter-cell pitch (m)
    eps,0.05e-6,Tolerance for bounding-box region selection (m)
    z_sio2_bot,0,z of SiO2 bottom face (base of stack)
    z_sio2_top,t_sio2,z of SiO2 top face / AlN bottom face
    z_aln_bot,z_sio2_top,z of AlN bottom face
    z_aln_top,z_aln_bot + t_aln,z of AlN top face
    z_mo_top_top,z_aln_top + t_mo,z of top Mo electrode upper face
    z_poly_top,z_mo_top_top + t_poly,z of polysilicon top face (front face)
    z_water_top,z_poly_top + lambda_water,z of water domain top face

Go to the Geometry section and build the stack from the bottom up. Give each element the Name shown below — these names are used later in region rules and boolean targets.

  1. Add a Box named sio2_raw:

    Setting Value
    Size (X, Y, Z) pitch, pitch, t_sio2
    Center (X, Y, Z) 0, 0, t_sio2/2
  2. Add a Cylinder named cavity_void:

    Setting Value
    Radius cell_r
    Height t_sio2
    Center (X, Y, Z) 0, 0, t_sio2/2

    Build both elements. The substrate block and cavity cutter should look like this:

    SiO₂ box and cavity cylinder

  3. Add a Difference operation named vol_sio2:

    Setting Value
    Set 1 /sio2_raw
    Set 2 /cavity_void
    Delete Unchecked

    This subtracts the cavity cylinder from the substrate without deleting the cutter volume from the model tree yet.

    Difference operation

  4. Add a Remove operation named remove_cavity with Target /cavity_void.

    Remove operation

  1. Add a Cylinder named vol_mo_bot:

    Setting Value
    Radius bot_elec_r
    Height t_mo
    Center (X, Y, Z) 0, 0, z_aln_bot - t_mo/2

    Bottom Mo cylinder

Add a Box for each layer:

Name Size (X, Y, Z) Center (X, Y, Z)
vol_aln pitch, pitch, t_aln 0, 0, z_aln_bot + t_aln/2
vol_mo_top pitch, pitch, t_mo 0, 0, z_aln_top + t_mo/2
vol_poly pitch, pitch, t_poly 0, 0, z_mo_top_top + t_poly/2
vol_water pitch, pitch, lambda_water 0, 0, z_poly_top + lambda_water/2

Build each element. Your geometry list should contain vol_sio2, vol_mo_bot, vol_aln, vol_mo_top, vol_poly, and vol_water:

Layer boxes added

  1. Add Fragment all (finalize) and select Confirm model changes.

    Finished geometry

Return to the Common sidebar, Definitions tab.

  1. Under Regions, use Mass rule create:

    • Attribute: name
    • Entity type: Volume

    This creates one volume region for each named geometry element (vol_sio2, vol_mo_bot, vol_mo_top, vol_aln, vol_poly, vol_water).

    Material regions from mass rule create

  2. Add a Computed region named vol_mo:

    Setting Value
    Entity type Volume
    Operation Union (OR)
    Regions vol_mo_top, vol_mo_bot

Go to the Physics section and assign materials from the global library:

Material Target region
Silicon Dioxide vol_sio2
Aluminum Nitride vol_aln
Molybdenum vol_mo
Polycrystalline Silicon vol_poly
Water vol_water

Materials assigned

Back in the Common sidebar, define surface and volume regions for boundary conditions.

Add a Computed region named vol_solid (entity type Volume, operation Union):

Regions to union
vol_sio2, vol_aln, vol_poly, vol_mo

Computed region vol_solid

Create Surface regions by picking on the model view:

Region Selection hint
sur_base Bottom face of the stack at z = z_sio2_bot (this surface has a circular cut-out due to the cylinder cavity)
sur_water_top Top face of the water box at z = z_water_top
sur_top_elec_intf Interface between the top Mo electrode and the polysilicon layer
sur_bot_elec_intf Top face of the bottom Mo electrode disc
sur_front_face Front face of the unit cell (boundary surface between water and poly-Si)

For the four lateral symmetry faces, use Rule selector with Bounding box and Pick similar:

  1. Create a surface region named sur_sym_x0.
  2. Select top-most and bottom-most surfaces in the x0 plane, so that the bounding box includes all 4 solid region surfaces in that plane.
  3. Repeat for sur_sym_xL, sur_sym_y0, sur_sym_yL.

Step 6 - Define physics and boundary conditions

Section titled “Step 6 - Define physics and boundary conditions”

In the Physics section, add three modules to your physics set: Elastic waves, Acoustic waves, and Electrostatics.

  • Set Elastic waves target to vol_solid.

  • Add a Clamp interaction named ClampBase on sur_base.

    Clamp on base

  • Add four Symmetry interactions:

    Name Target
    SymmetryX0 sur_sym_x0
    SymmetryXL sur_sym_xL
    SymmetryY0 sur_sym_y0
    SymmetryYL sur_sym_yL

    Symmetry boundaries

  • Add Piezoelectricity with target vol_aln.

    Piezoelectricity coupling

  • Set Acoustic waves target to vol_water.

  • Add Acoustic structure (AW_EW_Coupling) to couple acoustic and elastic domains.

  • Add an Absorbing boundary named WaterTopABC on sur_water_top.

    Acoustic structure coupling and ABC

  • Set Electrostatics target to vol_aln.

  • Add a Constraint named GroundTopElectrode on sur_top_elec_intf with Constraint value 0.

    Ground constraint on top electrode

  • Add a Lump V/Q named DrivePort:

    Setting Value
    Namespace drive
    Target sur_bot_elec_intf
    Actuation mode Voltage
    Voltage V_amp * wavelet(freq, delay)

    Drive port on bottom electrode

Go to the Simulations section and create a new mesh:

  1. Set Autorefine to Disabled.

  2. Under Mesh element size, set Max size to lateral_mesh_size with type Absolute.

  3. Under Runtime, set Node type to Fast start.

  4. Under Customizations, add Mesh extrusion → Simple extrusion:

    • Target: select all six volumes.
    • Sublayers (from top down; water first): elem_per_wl, 1, 1, 1, 1, 1.

    See Simple extrusion for more on layered extruded meshing.

  5. Apply settings and mesh. Check the preview:

    Extruded mesh

  1. Create a new simulation named PMUT Unit Transient.

  2. Set Analysis type to Transient.

  3. Configure Generalized alpha timestepping:

    Setting Value
    Start time 0
    End time t_end
    Timestep size dt
    Target frequency freq
  4. Select the extruded mesh.

  5. Add Outputs. First, add the drive-port value outputs:

    Name Expression
    V_drive drive.V
    Q_drive drive.Q
    I_drive dt(drive.Q)

    Then add surface-averaged value outputs on the front face of the unit cell:

    Name Expression
    p_avg_front average(reg.sur_front_face, p, 3)
    uz_avg_front average(reg.sur_front_face, compz(u), 3)
    vz_avg_front average(reg.sur_front_face, dt(compz(u)), 3)

    These track the average acoustic pressure, normal displacement, and normal velocity on the radiating surface.

    Finally, add field outputs for visualization. Set the filter to Output every Nth step with an interval of 25 on both:

    Name Expression
    u_mag norm(u)
    pressure p

    Simulation settings

  6. Run the simulation.

Once the simulation completes, inspect the outputs to verify that the PMUT behaves as expected.

In the Simulations section:

  1. Add Plots for the drive-port Voltage, Charge, and Current custom values over time.

  2. Add a Visualization for the pressure field p in the water load (for example with a Slice filter through the cell center).

  3. Add a Visualization for displacement u in the solid stack.

The drive port plots show the applied Ricker wavelet voltage, the charge accumulated on the bottom electrode, and the resulting current. The wavelet peaks at delay / freq ≈ 100 ns, after which the current decays rapidly — confirming that the excitation is compact in time and well-suited for broadband characterization.

Drive port electrical signals (voltage, charge, current)

The surface-averaged pressure, displacement, and velocity on the radiating front face reveal the transducer’s impulse response. After the initial excitation, the membrane rings down over several cycles. The peak pressure reaches approximately 2 kPa and the normal velocity is on the order of 1 mm/s — typical values for a PMUT driven at 1 V.

Front-face averaged pressure, displacement, and velocity

By applying an FFT to the time-domain results, you can extract the transmit sensitivity spectrum (Pa/V) and the electrical impedance spectrum. The sensitivity peaks near 13–14 MHz, indicating the fundamental flexural resonance of the membrane. The impedance curve shows a predominantly capacitive response, as expected for a thin piezoelectric film operating below its thickness-mode resonance.

Transmit sensitivity and electrical impedance spectra