10个不稳定版本 (3个破坏性版本)

0.4.2 2021年2月12日
0.4.1 2021年2月12日
0.3.3 2020年12月19日
0.2.1 2020年12月15日
0.1.0 2020年12月6日

#371 in 仿真

Download history 11/week @ 2024-03-28 5/week @ 2024-04-04 1/week @ 2024-04-25 1/week @ 2024-05-30

53 每月下载次数
4 crates 中使用

MIT 许可证

52KB
1K SLoC

Velvet

Crates.io Crates.io Crates.io

Velvet是一个注重用户友好性和可扩展性的经典原子仿真引擎。这个项目很大程度上是一个学习练习,但随着开发工作的继续,我希望实现以下目标

  • 通过用户定义的插件模块实现可扩展性
  • 通过多线程和SIMD支持优化单CPU性能
  • 实现各种原子间势
  • 分子动力学、蒙特卡洛和能量最小化例程
  • 可视化工具以分析仿真结果
  • 支持导入和导出流行外部格式数据

入门

先决条件

要构建Velvet,您需要在您的计算机上安装Rust编译器和包管理器。大多数平台的说明可以在此处找到:这里

  • rustc - Rust编程语言的编译器
  • Cargo - Rust编程语言的包管理器

Velvet支持写入HDF5格式的结果。如果您更喜欢这种格式,您需要在本地安装libhdf5。可以使用您选择的包管理器安装库,或者直接从源代码此处下载。

安装

如果您有兴趣贡献或修改代码以供个人使用,可以使用以下说明安装本地副本。不需要修改代码的用户可以跳到使用部分。

  1. 克隆仓库。
$ git clone https://github.com/seatonullberg/velvet && cd velvet
  1. 以发布模式构建。
$ cargo build --release --workspace
  1. 确保所有测试通过。发布模式是运行集成测试的高效要求。
$ cargo test --release --workspace

可选功能

Velvet支持许多编译时选项,可以在使用Cargo构建时通过使用--features标志进行选择。

  • f64 - 将底层存储类型设置为64位浮点数。默认为32位。
  • hdf5-output - 启用HDF5格式输出。需要本地安装libhdf5。
  • quiet - 隐藏模拟进度条。在运行基准测试时推荐使用。
  • rayon - 启用多线程使用 rayon 并行迭代器。

使用方法

Velvet 被设计得易于开发者进行修改和扩展。考虑到这个目标,Velvet 放弃了对静态配置文件或输入脚本的支持,这些可能会限制灵活性并复杂化后端逻辑,而是直接使用高级的 velvet 包在代码中定义模拟。虽然这对更熟悉主流原子动力学模拟软件的研究者来说可能听起来令人畏惧,但 examples 目录中的示例显示,这可以是一个相当优雅的解决方案。

路线图

请参阅 公开问题FEATURES.mdCHANGELOG.md,以查看计划或提议的功能(以及错误修复)。

常见问题解答

  • 为什么叫“Velvet”?

    • "Velvet" 是将 速度 Verlet 结合起来,速度 Verlet 是分子动力学领域的基石算法。

许可证

在 MIT 许可证下分发。有关更多信息,请参阅 LICENSE

致谢

  • LAMMPS - 大规模原子/分子大规模并行模拟器
  • Lumol - 通用可扩展分子模拟引擎

lib.rs:

Velvet 模拟引擎的核心功能库。

内部单位系统

  • Distance - 安斯特朗 (A)
  • Time - 飞秒 (fs)
  • Mass - 原子质量单位 (amu)
  • Temperature - 开尔文 (K)
  • Quantity - 粒子数量
  • Angle - 弧度 (rad)

依赖关系

~8–19MB
~257K SLoC