3D aerosol particle modeling and optical property computation
Project description
Aerosol3D
Aerosol3D is a Python toolkit for modeling the 3D geometry and optical properties of atmospheric aerosol particles. It provides a unified pipeline from geometric construction to Discrete Dipole Approximation (DDA) optical computation.
Features
- 3D Geometry Modeling — Build spheres, ellipsoids, cubes, and import fractal aggregates
- Coating Algorithms — Apply distance-based, potential-based, CCM (Closed-Cell Model), and CAM (Coated-Aggregate Model) coatings
- Optical Computation — Solve optical properties via DDA using a Julia-based backend with optional GPU acceleration
- Visualization — Generate 3D screenshots and rotation videos using PyVista
- Material Database — Built-in refractive index data for common aerosol materials
- Flexible I/O — Export to VTP and voxel formats
Installation
Requires Python >= 3.10.
pip install Aerosol3D
For development:
git clone https://github.com/openEarthModelling/Aerosol3D.git
cd Aerosol3D
pip install -e ".[dev]"
Optional Dependencies
- Julia backend (required for DDA optical computation): Install Julia and run
pip install pyjulia - GPU acceleration: Requires CUDA-capable GPU and Julia CUDA packages
Quick Start
from Aerosol3D import (
AerosolParticle, create_sphere, MixingState,
preset_material, save_screenshot, solve_optics, SimulationConfig
)
# Create a black carbon sphere
soot = preset_material("black_carbon")
particle = AerosolParticle(
name="bc_sphere",
mixing_state=MixingState.INTERNAL,
unit="nm",
)
particle.add_mesh("core", create_sphere((0, 0, 0), 50.0), soot)
# 3D visualization
save_screenshot(particle, "sphere.png", colors={"core": "black"})
# DDA optical computation
config = SimulationConfig(wavelength=550.0, source="solar")
result = solve_optics(particle, config)
print(f"Extinction efficiency: {result.qext}")
See the examples/ directory for complete workflows including fractal aggregates and coated particles.
Examples
| Example | Description |
|---|---|
black_carbon_sphere.py |
Bare BC sphere with DDA optics |
black_carbon_fractal.py |
Fractal aggregate via pyFracAggregate with full pipeline |
API Overview
Core Classes
AerosolParticle— Particle container with multiple meshes/materialsMixingState— Internal / external mixing stateMaterial— Refractive index and densityFractalAggregate— Fractal aggregate geometry
Geometry
create_sphere(center, radius)create_ellipsoid(center, radii)create_cube(center, size)
Coating
apply_distance_coating(particle, thickness, material)apply_potential_coating(particle, thickness, material)apply_ccm_coating(particle, thickness, material)apply_cam_coating(particle, thickness, material)
Optics
solve_optics(particle, config)— DDA optical solverSimulationConfig(wavelength, source)— Simulation parameters
I/O & Visualization
save_screenshot(particle, path)save_rotation_video(particle, path)save_vtp(particle, path)/save_voxel(particle, path)
Development
# Run tests
pytest
# Run tests with coverage
pytest --cov=Aerosol3D --cov-report=term-missing
License
MIT License. See LICENSE for details.
Acknowledgments
DDA optical computation is powered by CEMD.jl via a Python-Julia bridge.
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
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 aerosol3d-0.3.0.tar.gz.
File metadata
- Download URL: aerosol3d-0.3.0.tar.gz
- Upload date:
- Size: 48.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e85e1c202e711c8e973b5099911ad2c7ce6cbdc53ab5d609a1167a7b9170aca3
|
|
| MD5 |
ffac2dce0fa5a1db96f6fbead98ece08
|
|
| BLAKE2b-256 |
59e04c67a6175726939351613864950fec5d9476b52b304050b04b981b117d7b
|
File details
Details for the file aerosol3d-0.3.0-py3-none-any.whl.
File metadata
- Download URL: aerosol3d-0.3.0-py3-none-any.whl
- Upload date:
- Size: 42.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2d0a0690b8d481852c92d9eb7a174b5cee6e8ce1b059d98f0188e32167511e7
|
|
| MD5 |
e297ea348e0995ae11f17b4dad4d92e4
|
|
| BLAKE2b-256 |
eb4b587a6c54bb64e626dc036fcc1f823a5f1712fbd3c6f512d45d7b486e6136
|