3 个版本

0.1.2 2021年2月10日
0.1.1 2020年12月18日
0.1.0 2020年12月17日

#222 in 模拟

MIT 许可证

66KB
1.5K 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" 是 Velocity Verlet 的缩写,这是分子动力学领域的基石算法。

许可证

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

致谢

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

依赖项

~9–18MB
~243K SLoC