Photokinetics V2.1 — 可微光学物理引擎 (Differentiable Optics Engine in PyTorch) with time-resolved photothermal model
Project description
Photokinetics V2.0
可微光学物理引擎 (Differentiable Optics Engine in PyTorch)
基于光子动能传递的光学统一计算框架,使用 PyTorch 实现,天然支持自动微分、批量计算和逆向设计。
核心特性
- 可微分 — 所有公式返回
torch.Tensor,支持requires_grad=True自动求导 - 批量化 — 参数可以是张量,自动向量化(如批量光强扫描)
- 纯解析 — 没有数值积分,没有训练数据,直接公式计算
- 极速 — 比 1D-FDTD 快 10²
10³x,比 3D-FDTD 理论快 10⁶10⁹x - 统一框架 — 8 个光学模块从同一套光子动能传递公设推导
安装
pip install photokinetics
快速开始
基本计算
from photokinetics import calc_photothermal
# 计算水在 1064nm 激光下的温升
result = calc_photothermal(
n=1.33, kappa=0.00012, wavelength_nm=1064,
I0=1e7, rho=1000, Cp=4186, depth_mm=1.0, time_s=1.0
)
print(f"温升: {result['dT'].item():.2f} K")
# 输出: 温升: 877.02 K
自动微分
import torch
from photokinetics import calc_photothermal
I0 = torch.tensor(1e7, requires_grad=True)
result = calc_photothermal(1.33, 0.00012, 1064, I0, 1000, 4186, 1.0, 1.0)
result['dT'].backward()
print(f"d(ΔT)/d(I₀) = {I0.grad.item():.2e}")
# 输出: 8.77e-05
逆向设计(梯度下降求光强)
import torch
from photokinetics import calc_photothermal
target_dT = 100.0
I0 = torch.tensor(1e5, requires_grad=True)
optimizer = torch.optim.Adam([I0], lr=5e4)
for i in range(100):
optimizer.zero_grad()
result = calc_photothermal(1.33, 0.00012, 1064, I0, 1000, 4186, 1.0, 1.0)
loss = (result['dT'] - target_dT) ** 2
loss.backward()
optimizer.step()
print(f"I₀ = {I0.item():.2e}, ΔT = {result['dT'].item():.2f} K")
# 输出: I₀ = 1.15e+06, ΔT = 100.52 K
批量计算
import torch
from photokinetics import calc_photothermal
I0_batch = torch.logspace(4, 8, 1000) # 1000 个光强
result = calc_photothermal(1.33, 0.00012, 1064, I0_batch, 1000, 4186, 1.0, 1.0)
print(result['dT'].shape) # torch.Size([1000])
8 个模块速查表
| 模块 | 函数 | 核心参数 |
|---|---|---|
| 光电效应 | calc_photoelectric(phi_ev, lambda_nm) |
逸出功, 波长 |
| 黑体辐射 | calc_blackbody(T, lambda_nm=None) |
温度, 波长 |
| 康普顿散射 | calc_compton(E0_keV, theta_deg) |
入射能量, 散射角 |
| 多普勒效应 | calc_doppler(nu0, v_km_s, receding) |
频率, 速度 |
| 引力红移 | calc_gravitational_redshift(M, r1, r2) |
质量, 半径 |
| 光热模型 | calc_photothermal(n, kappa, λ, I0, ρ, Cp, z, t) |
8 个参数 |
| 非线性光学 | calc_nonlinear_order(Eg_eV, lambda_nm) |
禁带, 波长 |
| 光镊力 | calc_tweezer_force(a, n_p, n_m, λ, grad_I) |
半径, 折射率 |
物理常数
所有常数使用 CODATA 2018 推荐值,定义为 torch.tensor。
性能对比
与 1D-FDTD 数值仿真对比(绝热近似适用域内):
| 材料 | ΔT 误差 | 加速比 |
|---|---|---|
| 水 @ 1064nm | 3.49% | 1125x |
| 硅 @ 532nm | 0.98% | 97x |
| 锗 @ 532nm | 1.15% | 385x |
详见 benchmarks/。
应用场景
- AI for Science — 嵌入 PyTorch 做物理驱动机器学习
- 逆向设计 — 已知目标温升,梯度下降反推光强/波长
- 灵敏度分析 — 计算各参数对输出的梯度
- 参数扫描 — 批量计算数千组参数
- 实时仿真 — 解析公式微秒级计算
- 教学/科普 — 在线计算器 在线体验
限制
- 光热模型采用绝热近似,适用条件
t ≪ L²/D - 目前支持平面波入射 + 均匀介质
- 光镊力使用瑞利近似(小颗粒,a ≪ λ)
引用
如果本项目对您的研究有帮助,请引用:
@misc{photokinetics2026,
title={Photokinetics V2.0: A Differentiable Optics Engine},
author={Cogito Lin},
year={2026},
url={https://github.com/XxLCFLXx/photokinetics}
}
License
MIT
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 photokinetics-2.1.0.tar.gz.
File metadata
- Download URL: photokinetics-2.1.0.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82a8bbb14c3f31b170b771ba283e5ddbed653b9202e040666a0a69cb1aecc7eb
|
|
| MD5 |
1a2d2bc61d14e2676962027fcb2cedbb
|
|
| BLAKE2b-256 |
fe31484a3c7d324b77ee8cb42a11670c7f9dce4377d07d0246e8f049580086be
|
File details
Details for the file photokinetics-2.1.0-py3-none-any.whl.
File metadata
- Download URL: photokinetics-2.1.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e572f3e7dc7c46b736a1d4b79bc0a5e06c37ac6590be0b9e2aa40757c2c8d6ac
|
|
| MD5 |
1e33d23038d1c6bafc1a951333f2c4c5
|
|
| BLAKE2b-256 |
7d13271ed71598f22b5526301b4349176b057296ef7c30535a4899c0f2452a38
|