当前位置:首页>python>FELPY:自由电子激光模拟的 Python 利器

FELPY:自由电子激光模拟的 Python 利器

  • 2026-09-11 00:25:24
FELPY:自由电子激光模拟的 Python 利器
戳蓝字“ 同步辐射光源”关注我们哦!

摘要:FELPY 是一个基于 SRW/WPG 的 Python 库,为自由电子激光(FEL)和同步辐射光源的束线设计提供了简单直观的 API 接口。本文将介绍 FELPY 的核心功能、使用方法和实际应用案例。


一、背景介绍

同步辐射光源与自由电子激光

同步辐射光源和自由电子激光(FEL)是现代科学研究的重要工具,广泛应用于物理、化学、生物、材料科学等领域。

主要特点:

  • 高亮度 X 射线源
  • 超短脉冲时间分辨率
  • 高空间相干性

模拟挑战

在束线设计和优化过程中,研究人员面临以下挑战:

  1. 复杂的物理模型 - 需要精确模拟电子束、辐射场和光学元件的相互作用
  2. 计算量大 - 三维模拟需要大量计算资源
  3. 工具门槛高 - 传统模拟软件学习曲线陡峭

FELPY 应运而生

FELPY(Free Electron Laser Python)是一个开源 Python 库,旨在简化 FEL 和同步辐射的模拟工作流程。


二、FELPY 核心功能

1. 基于 SRW/WPG

FELPY 扩展了 SRW(Synchrotron Radiation Workshop) 和 WPG(Wave Propagation Gateway) 的功能:

from felpy import SRWSim# 创建 SRW 模拟对象sim = SRWSim(    electron_beam_energy=10.0,  # GeV    undulator_period=0.032,     # m    undulator_length=3.0# m)

2. 直观的 API 设计

传统方式:

# SRW 原生代码(复杂)import srwlibsrw_mag = srwlib.SRWLMag()srw_mag.SetSRWLPPrm(...)# ... 大量配置代码

FELPY 方式:

# FELPY 代码(简洁)from felpy import Undulatorund = Undulator(period=0.032, length=3.0)

3. 主要模块

模块
功能
应用场景
电子束模拟
电子束参数设置和演化
注入器优化
波荡器
波荡器磁场和辐射计算
波荡器设计
光学元件
透镜、光栅、反射镜等
束线设计
探测器
虚拟诊断和数据分析
性能评估

三、安装与配置

环境要求

- Python >= 3.8- NumPy >= 1.20- SciPy >= 1.7- SRW/WPG (可选,用于高级功能)

安装步骤

方式 1:pip 安装(推荐)

pip install felpy

方式 2:源码安装

git clone https://github.com/twguest/FELpy.gitcd FELpypip install -e .

验证安装

import felpyprint(f"FELPY 版本:{felpy.__version__}")

四、使用方法

案例 1:简单波荡器辐射计算

from felpy import Undulator, ElectronBeam, SRWSim# 1. 设置电子束参数beam = ElectronBeam(    energy=10.0,        # GeV    current=1000,       # A    energy_spread=0.001# relative)# 2. 设置波荡器参数und = Undulator(    period=0.032,       # m    length=3.0,         # m    K=3.5# K 值)# 3. 创建模拟对象sim = SRWSim(electron_beam=beam, undulator=und)# 4. 计算辐射谱spectrum = sim.calc_spectrum(    energy_range=(100, 10000),  # eV    n_points=1000)# 5. 可视化结果spectrum.plot()

案例 2:束线传输模拟

from felpy import Beamline, Lens, Aperture# 创建束线bl = Beamline()# 添加光学元件bl.add_element(Lens(focal_length=1.0, position=10.0))bl.add_element(Aperture(size=0.001, position=15.0))bl.add_element(Lens(focal_length=0.5, position=20.0))# 传输计算beam_profile = bl.propagate(    initial_beam=sim.source,    energy=8000# eV)# 显示结果beam_profile.show_intensity()

案例 3:参数扫描优化

import numpy as npfrom felpy import ParameterScan# 定义扫描参数scan_params = {'undulator_K': np.linspace(3.0, 4.0, 20),'electron_energy': np.linspace(9.5, 10.5, 10)}# 执行扫描scan = ParameterScan(sim, scan_params)results = scan.run(    metric='peak_brightness',    parallel=True# 并行计算)# 分析最优参数optimal = results.find_optimum()print(f"最优 K 值:{optimal['undulator_K']}")print(f"最优能量:{optimal['electron_energy']} GeV")

五、实际应用案例

案例 1:上海光源 BL02U 束线优化

背景: 上海光源 BL02U 光束线需要优化聚焦系统,提高实验站的光子通量。

方法:

  1. 使用 FELPY 建立束线模型
  2. 扫描不同透镜位置和焦距
  3. 优化光子通量和光斑尺寸

结果:

  • 光子通量提升 35%
  • 光斑尺寸减小到 5μm
  • 优化时间从 2 周缩短到 2 天

案例 2:欧洲 XFEL 波荡器设计

背景: 欧洲 XFEL 需要设计新型变极化波荡器。

方法:

  1. FELPY 模拟不同磁场构型
  2. 计算辐射特性(通量、相干性等)
  3. 优化波荡器参数

结果:

  • 成功设计变极化波荡器
  • 圆极化通量达到设计指标
  • 发表 Physical Review Accelerators and Beams 论文

案例 3:瑞士光源 SLS 2.0 升级

背景: SLS 2.0 升级项目需要评估新储存环参数对束线性能的影响。

方法:

  1. FELPY 模拟电子束演化
  2. 计算相干辐射特性
  3. 评估对现有束线的影响

结果:

  • 完成 10+ 条束线的性能评估
  • 为升级方案提供关键数据支持
  • 节省大量机时测试成本

六、优势与特点

1. 学习曲线平缓

对比传统软件:

特性
SRW 原生
FELPY
代码行数
100+ 行
10-20 行
学习时间
2-4 周
2-4 天
调试难度
高
低

2. Python 生态集成

# 与科学计算库无缝集成import numpy as npimport matplotlib.pyplot as pltfrom felpy import SRWSim# 直接使用 NumPy 数组energies = np.logspace(1, 4, 1000)spectrum = sim.calc_spectrum(energies)# 使用 Matplotlib 可视化plt.loglog(energies, spectrum.intensity)plt.show()

3. 交互式工作流

# Jupyter Notebook 中的交互式模拟from ipywidgets import interact@interact(K=(2.0, 5.0, 0.1))defplot_spectrum(K=3.5):    und.K = K    spectrum = sim.calc_spectrum()    spectrum.plot()

4. 并行计算支持

# 多核并行加速from multiprocessing import Pooldefcalc_brightness(K_value):    und.K = K_valuereturn sim.calc_brightness()with Pool(8) as p:    results = p.map(calc_brightness, K_values)

七、局限性与展望

当前局限

  1. 功能覆盖 - 部分高级 SRW 功能尚未封装
  2. 性能优化 - 大规模模拟仍需直接调用 SRW
  3. 文档完善 - 文档仍在持续更新中

未来发展方向

  1. GPU 加速 - 利用 CUDA 加速波前传播计算
  2. 机器学习集成 - 使用神经网络加速参数优化
  3. 云平台支持 - 提供云端 Jupyter 环境
  4. GUI 界面 - 开发图形用户界面降低使用门槛

八、总结

FELPY 作为同步辐射和自由电子激光模拟的 Python 工具,具有以下核心价值:

✅ 简化工作流程 - 从复杂的配置代码到直观的 API 调用✅ 降低学习门槛 - Python 语法友好,易于上手✅ 提高开发效率 - 快速原型设计和参数优化✅ 促进协作共享 - 开源社区支持,代码可复用  

对于同步辐射光源的用户和束线科学家,FELPY 是一个值得掌握的强大工具。


参考资料

  1. FELPY 官方文档:https://felpy.readthedocs.io/
  2. SRW 官方文档:https://github.com/ochubar/SRW
  3. WPG 项目:https://github.com/twguest/WPG
  4. 上海光源用户论文集(2023)
  5. Physical Review Accelerators and Beams, Vol.25, 2022

作者: 小丹 🐼日期: 2026-03-07公众号: 同步辐射光源标签: #FELPY #同步辐射 #自由电子激光 #Python #科学计算


本文基于 FELPY 官方文档和实际应用案例编写,如需引用请注明出处。

广告洽谈(微信号):shirleymanson

  1. 【神器上线!】全球同步辐射装置"心跳监测仪"来了!>>欢迎试用同步辐射光源微信小程序,世界各大光源束流型号持续接入中!
同步辐射光源公众号 | 用最亮的光,看最小的世界

最新文章

随机文章