Modeling and optimization of piezoresistive and piezoelectric sensors and actuators.
pip install piezodFor development:
git clone https://github.com/MicrosystemsLab/PiezoD.git
cd PiezoD/python
uv syncfrom piezod import CantileverEpitaxy
# Create cantilever and set geometry
c = CantileverEpitaxy()
c.l = 300e-6 # length: 300 um
c.w = 44e-6 # width: 44 um
c.t = 89e-9 # thickness: 89 nm
c.fluid = "water"
# Calculate properties
print(f"Stiffness: {c.stiffness() * 1e3:.3f} mN/m")
print(f"Resonant frequency: {c.omega_vacuum_hz() / 1e3:.1f} kHz")
freq_hz, Q = c.omega_damped_hz_and_Q()
print(f"Damped frequency: {freq_hz / 1e3:.1f} kHz, Q = {Q:.1f}")Run the example:
uv run python examples/quickstart.pyInstall dependencies:
uv syncRun tests:
uv run pytestLint and format:
uvx ruff check src tests --fix && uvx ruff format src testsType check:
uvx ty check srcdoping_profile() on every cantilever subclass returns
(z, active_doping, total_doping):
total_doping: total concentrationmax(dopant_species, substrate_background_cm3)(cm^-3). Floors at the substrate so plotting code shows the implant peak rolling down into the substrate floor directly.active_doping: net active resistor carriers (cm^-3) =max(0, electrically_active_dopant - substrate_background_cm3). Goes to zero below the junction. Used internally by all carrier integrals (Nz,sheet_resistance,beta).
The substrate is always counter-doped to the piezoresistor. Set the substrate
concentration via the substrate_background_cm3 attribute on Cantilever (or
the equivalent kwarg on PiezoresistorFromProfile); the default is 1e15 cm^-3.
The TSUPREM-4 lookup table's baked-in 1.36e15 cm^-3 substrate is subtracted at
load time so the tsuprem4 and dopedealer sources share the same underlying
dopant convention.
Use cantilever.plot_doping_profile() for a quick total + net active overlay
with the junction marked.
See the main project documentation at github.com/MicrosystemsLab/PiezoD.
If you use piezod in your research, please cite:
Joseph C. Doll, Sung-Jin Park and Beth L. Pruitt Design optimization of piezoresistive cantilevers for force sensing in air and water Journal of Applied Physics 106.6 (2009): 064310-064310.
GPL-3.0-or-later