3个不稳定版本
0.7.1 | 2022年1月21日 |
---|---|
0.7.0 | 2022年1月21日 |
0.6.0 | 2021年12月7日 |
#165 in 模拟
320KB
6.5K SLoC
AtomECS
使用 Rust 模拟冷原子。
新功能:现在在 arxiv 上有论文发布
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
的当前开发者包括
atomecs
的长期目标是拥有一个完整的冷原子实验仿真套件。如果您想参与开发,请这样做!
依赖关系
~12MB
~234K SLoC