Particula
An Python-based aerosol simulator. Particula captures gas-particle interactions, transformations, and dynamics to power predictive aerosol science.
https://github.com/uncscode/particula
Category: Atmosphere
Sub Category: Atmospheric Chemistry and Aerosol
Keywords
aerosol atmosphere model package particle research science simulation
Keywords from Contributors
climate
Last synced: about 23 hours ago
JSON representation
Repository metadata
Particula is an open-source, aerosol simulation library.
- Host: GitHub
- URL: https://github.com/uncscode/particula
- Owner: uncscode
- License: mit
- Created: 2021-10-31T15:31:16.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2026-09-07T22:10:41.000Z (24 days ago)
- Last Synced: 2026-09-10T03:07:18.970Z (21 days ago)
- Topics: aerosol, atmosphere, model, package, particle, research, science, simulation
- Language: Python
- Homepage: https://uncscode.github.io/particula/
- Size: 997 MB
- Stars: 12
- Watchers: 0
- Forks: 12
- Open Issues: 1
- Releases: 38
-
Metadata Files:
- Readme: readme.md
- License: license
- Citation: citation
- Codeowners: .github/CODEOWNERS
- Agents: AGENTS.md
readme.md
Particula
A simple, fast, and powerful particle simulator for aerosol science.
Requires: Python 3.12+
Documentation | Examples | PyPI
Installation
pip install particula
or via conda:
conda install -c conda-forge particula
Quick Start
import particula as par
# Build an aerosol system
aerosol = (
par.AerosolBuilder()
.set_atmosphere(atmosphere)
.set_particles(particles)
.build()
)
# Run dynamics (chainable with | operator)
process = par.dynamics.Condensation(strategy) | par.dynamics.Coagulation(strategy)
aerosol = process.execute(aerosol, time_step=10, sub_steps=1000)
Migration / What's New
See the migration guide for
current APIs, compatibility notes, and direct-kernel troubleshooting.
Code Structure
particula/
├── gas/ # Gas phase: species, vapor pressure, atmosphere
├── particles/ # Particle representations & distributions
├── dynamics/ # Time-dependent processes
│ ├── coagulation/
│ ├── condensation/
│ └── wall_loss/
├── activity/ # Activity coefficients, phase separation
├── equilibria/ # Gas-particle partitioning
└── util/ # Constants, validation, unit conversion
Documentation Guide
| Looking for... | Go to |
|---|---|
| Tutorials & walkthroughs | Examples/ |
| Scientific background | Theory/ |
| API reference | Full Docs |
| Contributing | contribute/ |
Examples by Topic
- Aerosol — Building and inspecting aerosol objects
- Dynamics — Coagulation, condensation, wall loss simulations
- Equilibria — Gas-particle partitioning calculations
- Gas Phase — Vapor pressure, species properties
- Particle Phase — Size distributions, optical properties
- Simulations — Full end-to-end scientific scenarios
Featured Examples
-
Aerosol Tutorial — Learn how to build gas species, atmospheres, particle distributions, and combine them into an
Aerosolobject. -
CPU Latent-Heat Condensation Bookkeeping
— CPU-only walkthrough showing diagnostic latent-heat bookkeeping from real
condensation mass transfer with no temperature feedback. -
Direct-Warp GPU Nucleation
— Explicit-transfer, fixed-capacity low-level example using the package-
exportednucleation_step_gpu. It requires Warp and is separate from the
CPU-onlyNucleationrunnable; it provides no CPU fallback. -
Organic Partitioning & Coagulation — Full simulation of secondary organic aerosol (SOA) formation from 10 organic vapors, followed by Brownian coagulation over 10 minutes.
-
Cloud Chamber Cycles
— Multi-cycle cloud droplet activation demonstrating κ-Köhler theory across
3 seed compositions (Ammonium Sulfate, Sucrose, Mixed), showing how
hygroscopicity affects activation at different supersaturations.
Features
- Gas & Particle Phases — Full thermodynamic modeling with swappable strategies
- Dynamics — Coagulation, condensation, wall loss, dilution
- Flexible Representations — Discrete bins, continuous PDF, particle-resolved
- Builder Pattern — Clean, validated object construction with unit conversion
- Composable Processes — Chain runnables with
|operator - Condensation Utilities — Non-isothermal helpers via
particula.dynamics.get_thermal_resistance_factor,
particula.dynamics.get_mass_transfer_rate_latent_heat, and
particula.dynamics.get_latent_heat_energy_released - Condensation Strategies —
CondensationIsothermalplus
CondensationLatentHeatwith latent-heat-corrected
mass_transfer_rate()/rate()andstep()energy tracking via
last_latent_heat_energy, with optionaldynamic_viscosityoverride - Latent Heat Factories — Build constant, linear, and power-law latent heat
strategies viaparticula.gas.LatentHeatFactorywith unit-aware builders and
gas-phase exports for upcoming non-isothermal workflows
Citation
If you use Particula in your research, please cite:
Particula [Computer software]. DOI: 10.5281/zenodo.6634653
License
MIT
Citation (citation)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Particula
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Particula
family-names: Developers
doi: 10.5281/zenodo.6634653
repository-code: 'https://github.com/uncscode/particula'
url: 'https://uncscode.github.io/particula/'
license: MIT
Owner metadata
- Name: uncscode
- Login: uncscode
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/91224023?v=4
- Repositories: 10
- Last ynced at: 2026-09-25T13:54:10.454Z
- Profile URL: https://github.com/uncscode
GitHub Events
Total
- Create event: 286
- Delete event: 254
- Issue comment event: 519
- Issues event: 686
- Pull request event: 465
- Pull request review comment event: 491
- Pull request review event: 493
- Push event: 1635
- Release event: 10
- Watch event: 4
Last Year
- Create event: 26
- Delete event: 32
- Issue comment event: 117
- Issues event: 515
- Pull request event: 206
- Pull request review comment event: 146
- Pull request review event: 77
- Push event: 195
- Release event: 2
Committers metadata
Last synced: 2 days ago
Total Commits: 3,208
Total Committers: 10
Avg Commits per committer: 320.8
Development Distribution Score (DDS): 0.102
Commits in past year: 1,748
Committers in past year: 4
Avg Commits per committer in past year: 437.0
Development Distribution Score (DDS) in past year: 0.033
| Name | Commits | |
|---|---|---|
| Kyle Gorkowski | k****w@g****m | 2881 |
| ngam | 6****m | 148 |
| dependabot[bot] | 4****] | 74 |
| copilot-swe-agent[bot] | 1****t | 41 |
| Naser Mahfouz | n****z@p****v | 35 |
| wkchuang | w****7@c****u | 16 |
| sourcery-ai[bot] | 5****] | 6 |
| Naser Mahfouz | 1****z | 5 |
| Akshay Kumar | a****0@g****m | 1 |
| Sourcery AI | 1 |
Committer domains:
- columbia.edu: 1
- pnnl.gov: 1
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 338
Total pull requests: 533
Average time to close issues: 16 days
Average time to close pull requests: 5 days
Total issue authors: 6
Total pull request authors: 8
Average comments per issue: 0.98
Average comments per pull request: 1.86
Merged pull request: 418
Bot issues: 2
Bot pull requests: 100
Past year issues: 137
Past year pull requests: 41
Past year average time to close issues: 3 days
Past year average time to close pull requests: 2 days
Past year issue authors: 1
Past year pull request authors: 3
Past year average comments per issue: 1.77
Past year average comments per pull request: 3.9
Past year merged pull request: 36
Past year bot issues: 0
Past year bot pull requests: 10
Top Issue Authors
- Gorkowski (282)
- ngam (31)
- mahf708 (16)
- ngmahfouz (4)
- wkchuang (3)
- sourcery-ai[bot] (2)
Top Pull Request Authors
- Gorkowski (370)
- dependabot[bot] (75)
- ngam (36)
- sourcery-ai[bot] (25)
- mahf708 (15)
- wkchuang (6)
- ngmahfouz (5)
- Copilot (1)
Top Issue Labels
- agent (137)
- model:default (136)
- blocked (112)
- type:complete (106)
- auto:enabled (105)
- enhancement (75)
- bug (43)
- type:generate-auto (29)
- adw:in-progress (24)
- sourcery-ai (13)
- no-issue-activity (12)
- documentation (12)
- .data (10)
- next (4)
- analysis (4)
- .Lagrangian (4)
- Tests (3)
- type:planner (2)
- question (2)
- wait (2)
- .equilibria (2)
- .activity (1)
- particlephase (1)
- model:base (1)
- release (1)
Top Pull Request Labels
- dependencies (77)
- github_actions (74)
- enhancement (69)
- documentation (66)
- codex (57)
- agent (25)
- next (19)
- adw:in-progress (18)
- Refactor (17)
- request:review-fix (17)
- Tests (16)
- bug (15)
- release (9)
- no-pr-activity (8)
- blocked (6)
- .data (3)
- packaging (3)
- .Lagrangian (3)
- request:plan-fix (2)
- request:fix (1)
- javascript (1)
- analysis (1)
Package metadata
- Total packages: 2
-
Total downloads:
- conda: 46,268 total
- pypi: 530 last-month
- Total dependent packages: 1 (may contain duplicates)
- Total dependent repositories: 1 (may contain duplicates)
- Total versions: 48
- Total maintainers: 1
pypi.org: particula
a simple, fast, and powerful particle simulator
- Homepage:
- Documentation: https://particula.readthedocs.io/
- Licenses: MIT License
- Latest release: 0.2.13 (published 4 days ago)
- Last Synced: 2026-09-29T13:02:07.316Z (2 days ago)
- Versions: 37
- Dependent Packages: 1
- Dependent Repositories: 1
- Downloads: 530 Last month
-
Rankings:
- Dependent packages count: 4.736%
- Average: 13.362%
- Downloads: 13.693%
- Dependent repos count: 21.657%
- Maintainers (1)
conda-forge.org: particula
Particula is a Python-based aerosol particle simulator. Its goal is to provide a robust aerosol simulation (including both gas and particle phases) that can be used to answer scientific questions arising from experiments and research endeavors.
- Homepage: https://uncscode.github.io/particula
- Licenses: MIT
- Latest release: 0.0.12 (published almost 4 years ago)
- Last Synced: 2026-03-24T18:10:42.694Z (6 months ago)
- Versions: 11
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 46,268 Total
-
Rankings:
- Dependent repos count: 34.025%
- Average: 48.811%
- Dependent packages count: 51.175%
- Forks count: 51.645%
- Stargazers count: 58.398%
Dependencies
- actions/checkout v3 composite
- actions/setup-python v4.5.0 composite
- actions/checkout v3 composite
- actions/setup-python v4.5.0 composite
- pypa/gh-action-pypi-publish c7f29f7adef1a245bd91520e94867e5c6eedddcc composite
- actions/stale v7 composite
- actions/checkout v3 composite
- actions/setup-python v4.5.0 composite
- hypersolver ==0.0.8
- numpy *
- pint *
- scipy *
- @opencode-ai/plugin 1.14.31
- @opencode-ai/sdk 1.14.31
- zod 4.1.8
- @ai-sdk/provider 3.0.8
- @msgpackr-extract/msgpackr-extract-darwin-arm64 3.0.4
- @msgpackr-extract/msgpackr-extract-darwin-x64 3.0.4
- @msgpackr-extract/msgpackr-extract-linux-arm 3.0.4
- @msgpackr-extract/msgpackr-extract-linux-arm64 3.0.4
- @msgpackr-extract/msgpackr-extract-linux-x64 3.0.4
- @msgpackr-extract/msgpackr-extract-win32-x64 3.0.4
- @opencode-ai/plugin 1.18.16
- @opencode-ai/sdk 1.18.16
- @standard-schema/spec 1.1.0
- cross-spawn 7.0.6
- detect-libc 2.1.2
- effect 4.0.0-beta.83
- fast-check 4.8.0
- find-my-way-ts 0.1.6
- ini 7.0.0
- isexe 2.0.0
- json-schema 0.4.0
- kubernetes-types 1.30.0
- msgpackr 2.0.4
- msgpackr-extract 3.0.4
- multipasta 0.2.7
- node-gyp-build-optional-packages 5.2.2
- path-key 3.1.1
- pure-rand 8.4.0
- shebang-command 2.0.0
- shebang-regex 3.0.0
- toml 4.1.1
- uuid 14.0.1
- which 2.0.2
- yaml 2.9.0
- zod 4.1.8
- actions/checkout v7 composite
- actions/setup-python v7.0.0 composite
- JamesIves/github-pages-deploy-action v4 composite
- actions/checkout v7 composite
- actions/setup-python v7.0.0 composite
- rossjrw/pr-preview-action v1 composite
- @opencode-ai/plugin 1.18.16
- actions/checkout v7 composite
- actions/setup-python v7.0.0 composite
Score: 15.621194299654407