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 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.
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aee68f96862787876d0703ec0a97aed5c84d924fdfeb27d6522329d45b25bb0f
|
|
| MD5 |
5f7ed9f12b3e70d0a1d7ecf783b00c25
|
|
| BLAKE2b-256 |
6e55d8343abe1effc2798a5541aa60676a3ba07d1c011f2485460133300f5d55
|
Provenance
The following attestation bundles were made for piezod-0.13.2.tar.gz:
Publisher:
publish.yml on MicrosystemsLab/PiezoD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
piezod-0.13.2.tar.gz -
Subject digest:
aee68f96862787876d0703ec0a97aed5c84d924fdfeb27d6522329d45b25bb0f - Sigstore transparency entry: 1435924787
- Sigstore integration time:
-
Permalink:
MicrosystemsLab/PiezoD@021e5f96c3c65d709318a1062288e32fe54d3bb1 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/MicrosystemsLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@021e5f96c3c65d709318a1062288e32fe54d3bb1 -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f3c6c5d1c517d5ff264c7ddc72ef40974c7fcd62b2eaced94987ee4ec0ef60c
|
|
| MD5 |
064ec899e9351a2d4ddd4bd94fd5b354
|
|
| BLAKE2b-256 |
a2cfb92d31d2a69e0b1e89ef17641b2d6b4968a25afa91a5e796bb393d6d58ab
|
Provenance
The following attestation bundles were made for piezod-0.13.2-py3-none-any.whl:
Publisher:
publish.yml on MicrosystemsLab/PiezoD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
piezod-0.13.2-py3-none-any.whl -
Subject digest:
5f3c6c5d1c517d5ff264c7ddc72ef40974c7fcd62b2eaced94987ee4ec0ef60c - Sigstore transparency entry: 1435924792
- Sigstore integration time:
-
Permalink:
MicrosystemsLab/PiezoD@021e5f96c3c65d709318a1062288e32fe54d3bb1 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/MicrosystemsLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@021e5f96c3c65d709318a1062288e32fe54d3bb1 -
Trigger Event:
workflow_dispatch
-
Statement type: