#ecs #physics #unit-testing #random #laser-cooling #amop #cold-atoms

bin+lib atomecs

为冷原子实验提供数据驱动的模拟软件包

3个不稳定版本

0.7.1 2022年1月21日
0.7.0 2022年1月21日
0.6.0 2021年12月7日

#165 in 模拟

GPL-3.0-or-later

320KB
6.5K SLoC

AtomECS

使用 Rust 模拟冷原子。

新功能:现在在 arxiv 上有论文发布

crate_version crate_version build unit_tests

atomecs 是一个 Rust crate,用于模拟超冷原子实验。它支持众多功能

  • 通过光散射力对原子进行激光冷却。
  • 对散射光线的原子施加多普勒力,包括引起多普勒温度极限的随机波动。
  • 磁场所实现的网格或简单解析模型。
  • 由烤箱产生的热原子。
  • 在模拟体积的表面产生的热原子(例如,模拟腔室中的热蒸汽)。
  • 定义由失谐和高斯强度分布的光束冷却。
  • 定义模拟边界的体积。
  • 以二进制或文本格式输出文件。
  • 详尽的单元测试以确保模拟结果正确。
  • 在现代多核 CPU 上具有良好的并行性能。
  • 可以使用 Python/Matlab 将模拟封装,如 源优化示例Matlab 示例 所示。
  • 光偶极力陷阱。
  • 磁场所约束的原子,例如四极和 TOP 陷阱。

入门指南

rust 网站 上可以找到安装 rust 的说明,该网站包括 rust 工具链和 cargo 命令行工具。

使用git克隆此仓库后,您可以使用cargo命令行工具运行示例,例如cargo run --release --example 1d_mot。这些MATLAB示例展示了如何加载和绘制仿真结果。

您可以使用cargo doc构建程序文档。

数据导向设计

atomecs遵循数据导向的实体-组件-系统(ECS)模式,该模式使用specs实现。ECS非常适合高性能仿真,并且足够灵活,可以适应不断变化的设计目标。

如果您不熟悉数据导向设计 - 例如,如果您来自面向对象背景 - 在深入研究代码之前强烈建议您先阅读。 一些有用的ECS资源包括

  • Mike Acton的GDC演讲,讨论了ECS + DOD(在Unity游戏引擎的背景下)的优势。
  • specs书籍,描述了atomecs中使用的ECS。
  • 虽然是为Unity/C#编写的,但Unity实体包文档中的概念对于理解非常有用。

当前限制

  • 原子-原子相互作用尚未实现。我们的大部分当前工作都涉及原子源,其稳态数密度较低,因此我们没有实现这一点。对于稳态3D MOT的结果应谨慎解释。

参与其中

我们的目标是使AtomECS用户友好,拥有友好的开发者!请随时使用问题跟踪器提问,或加入问题中正在进行的对话。

如果您想提交贡献

  • 查看问题页面,看是否有适合新用户的项目。
  • 自由开发并更改您的分支。
  • 当功能完成时,提出一个拉取请求将您的更改合并回AtomECS仓库。团队将公开审查您的代码并提出更改/改进建议。

团队

atomecs的当前开发者包括

  • 牛津的Elliot Bentine博士
  • 剑桥的Tiffany Harte博士
  • 牛津的Xuhui Chen
  • 剑桥的Maurice Zeuner

atomecs的长期目标是拥有一个完整的冷原子实验仿真套件。如果您想参与开发,请这样做!

依赖关系

~12MB
~234K SLoC