Skip to main content

Modeling and optimization of piezoresistive and piezoelectric sensors and actuators

Project description

piezod

Modeling and optimization of piezoresistive and piezoelectric sensors and actuators.

Installation

pip install piezod

For development:

git clone https://github.com/MicrosystemsLab/PiezoD.git
cd PiezoD/python
uv sync

Usage

from 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.py

Development

Install dependencies:

uv sync

Run tests:

uv run pytest

Lint and format:

uvx ruff check . --fix && uvx ruff format .

Type check:

uvx ty check src

Doping profile convention

doping_profile() on every cantilever subclass returns (z, active_doping, total_doping):

  • total_doping: total concentration max(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.

Documentation

See the main project documentation at github.com/MicrosystemsLab/PiezoD.

Citation

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.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

piezod-0.13.2.tar.gz (40.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

piezod-0.13.2-py3-none-any.whl (40.2 MB view details)

Uploaded Python 3

File details

Details for the file piezod-0.13.2.tar.gz.

File metadata

  • Download URL: piezod-0.13.2.tar.gz
  • Upload date:
  • Size: 40.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for piezod-0.13.2.tar.gz
Algorithm Hash digest
SHA256 aee68f96862787876d0703ec0a97aed5c84d924fdfeb27d6522329d45b25bb0f
MD5 5f7ed9f12b3e70d0a1d7ecf783b00c25
BLAKE2b-256 6e55d8343abe1effc2798a5541aa60676a3ba07d1c011f2485460133300f5d55

See more details on using hashes here.

Provenance

The following attestation bundles were made for piezod-0.13.2.tar.gz:

Publisher: publish.yml on MicrosystemsLab/PiezoD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file piezod-0.13.2-py3-none-any.whl.

File metadata

  • Download URL: piezod-0.13.2-py3-none-any.whl
  • Upload date:
  • Size: 40.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for piezod-0.13.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5f3c6c5d1c517d5ff264c7ddc72ef40974c7fcd62b2eaced94987ee4ec0ef60c
MD5 064ec899e9351a2d4ddd4bd94fd5b354
BLAKE2b-256 a2cfb92d31d2a69e0b1e89ef17641b2d6b4968a25afa91a5e796bb393d6d58ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for piezod-0.13.2-py3-none-any.whl:

Publisher: publish.yml on MicrosystemsLab/PiezoD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page