1.简介
1.1. LAMMPS 概述
LAMMPS 是一种经典的分子动力学 (MD) 代码,用于模拟液态、固态或气态粒子的集合。它可以使用各种原子间势(力场)和边界条件对原子、聚合物、生物、固态(金属、陶瓷、氧化物)、粒状、粗粒或宏观系统进行建模。它可以对尺寸从几个粒子到数十亿个粒子的 2d 或 3d 系统进行建模。
LAMMPS 是一种经典的分子动力学 (MD) 代码,用于模拟液态、固态或气态粒子的集合。它可以使用各种原子间势(力场)和边界条件对原子、聚合物、生物、固态(金属、陶瓷、氧化物)、粒状、粗粒或宏观系统进行建模。它可以对尺寸从几个粒子到数十亿个粒子的 2d 或 3d 系统进行建模。
LAMMPS是用C++编写的,需要一个至少与C++-11标准兼容的编译器。早期版本是用 F77、F90 和 C++-98 编写的。详情请参阅网站的历史记录页面。所有版本都可以从 LAMMPS 网站下载源代码。
LAMMPS 的设计易于修改或扩展新功能,例如新力场、原子类型、边界条件或诊断。有关更多详细信息,请参阅 的修改和扩展 LAMMPS 部分。
从最一般的意义上来说,LAMMPS 集成了相互作用粒子集合的牛顿运动方程。单个粒子可以是原子、分子或电子、粗粒度的原子簇、或者介观或宏观的材料团块。 LAMMPS 包含的交互模型本质上大多是短程的;还包括一些远程型号。
LAMMPS 使用邻居列表来跟踪附近的粒子。这些列表针对具有短距离排斥粒子的系统进行了优化,因此粒子的局部密度永远不会变得太大。这与用于模拟等离子体或引力体(如星系形成)的方法形成对比。
在并行机上,LAMMPS 使用空间分解技术和 MPI 并行化将模拟域划分为计算成本相等的子域,其中一个子域分配给每个处理器。处理器通信并存储与其子域边界的原子的“幽灵”原子信息。另外还可以使用多线程并行化和带有粒子分解的 GPU 加速。
1.2. LAMMPS 版本是什么意思
LAMMPS“版本”是发布日期,例如 2014 年 5 月 1 日。LAMMPS 不断更新,我们的目标是始终保持其正确可靠的工作。此外,定期运行静态代码分析的多种变体,以维护或提高整体代码质量、一致性以及对编程标准、最佳实践和风格约定的合规性。您可以在 GitHub 上的公共 git 存储库中关注其开发。
LAMMPS“版本”是发布日期,例如 2014 年 5 月 1 日。LAMMPS 不断更新,我们的目标是始终保持其正确可靠的工作。此外,定期运行静态代码分析的多种变体,以维护或提高整体代码质量、一致性以及对编程标准、最佳实践和风格约定的合规性。您可以在 GitHub 上的公共 git 存储库中关注其开发。
1.2.1.识别版本
每次运行 LAMMPS 时,版本日期都会打印到屏幕和日志文件中。还有一个指示,如果 LAMMPS 二进制文件是从发布后经过修改的版本编译的。它也可以在文件 src/version.h 以及解压下载的 tarball 时创建的 LAMMPS 目录名称中看到。它位于手册的第一页。
如果您浏览 LAMMPS 手册在线版本的 HTML 页面,它们将默认描述 LAMMPS 的最新功能发布版本。在左下角的导航栏中,可以选择查看最新稳定版本的文档或与开发分支状态相对应的文档。
如果您浏览下载的 tarball 中包含的 HTML 页面,它们会描述您拥有的版本,该版本可能比在线版本旧。
1.2.2. LAMMPS 版本、分支和标签
![](https://i-blog.csdnimg.cn/blog_migrate/54ebc1ba20b9c29c98160ea0f09cd743.png)
发展
LAMMPS 源代码的修改(例如错误修复、代码重构、现有功能更新或添加新功能)被组织到拉取请求中。 Pull 请求在通过 LAMMPS 开发人员的自动化测试和代码审查后,将合并到 git 存储库的开发分支中。
功能发布
当积累了足够数量的新功能和更新并且开发分支上的 LAMMPS 版本通过了一组扩展的自动化测试时,我们将其作为功能版本发布,目前每 4 到 8 周发布一次。 git 存储库的发布分支会随着每个此类功能版本的更新而更新,并添加格式为 patch_1May2014
的标签。本年度这些版本最重要变化的摘要已发布在此网站页面上。 GitHub 上提供了更详细的发行说明。
稳定版本
我们大约每年发布一次 LAMMPS 的稳定版本。这是在“稳定期”之后完成的,在“稳定期”中,我们仅应用错误修复和对开发分支进行小的非侵入性更改,但没有新功能。同时,代码经过了比默认的自动化测试更详细、更彻底的手动测试。在这样的稳定版本发布之后,发布版本和稳定版本分支都会更新,并应用两个标签,一个 patch_1May2014
格式和一个 stable_1May2014
格式标签。
稳定版本更新
在稳定版本之间,我们收集从开发分支向后移植的错误修复和更新,称为维护分支。从维护分支,我们偶尔发布稳定更新版本并相应地更新稳定分支。 stable_1May2014
版本的第一次更新将标记为 stable_1May2014_update1
。这些更新不包含新功能。
1.3. LAMMPS特点
1.3.1.一般特点
- 在单个处理器上运行或并行运行
- 分布式内存消息传递并行性
- 共享内存多线程并行性
- MPI并行性仿真域的空间分解
- 粒子分解内部空间分解为OpenMP和GPU并行
- GPLv2许可的开源发行版
- 高度可移植的c++ -11
- 模块化代码,大部分功能在可选包中
- 仅依赖于MPI库的基本并行功能,MPI存根串行编译
- 其他库是可选的,只有特定的包才需要
- GPU (CUDA, OpenCL, HIP, SYCL), Intel Xeon Phi和OpenMP支持许多代码功能
- 易于扩展新的特性和功能
- 从输入脚本运行
- 定义和使用变量和公式的语法
- 循环遍历运行和跳出循环的语法
- 从一个脚本同时(并行)运行一个或多个模拟
- 作为库构建,通过库接口(从C, c++, Fortran)或提供的Python包装器或基于SWIG的包装器调用LAMMPS
- 与其他代码耦合:LAMMPS调用其他代码,其他代码调用LAMMPS,伞形代码同时调用,MDI耦合接口
- 调用Python来执行计算力、时间积分或其他任务
- 插件接口,用于在运行时加载外部特性
- 大量集成的测试集合
1.3.2.粒子和模型类型
参(见atom样式命令)
- 原子
- 粗粒颗粒(如珠簧聚合物)
- 联合原子聚合物或有机分子
- 全原子聚合物,有机分子,蛋白质,DNA
- 金属
- 金属氧化物
- 颗粒材料
- 粗粒度的中尺度模式
- 有限大小的球形和椭球状颗粒
- 有限大小的线段(2d)和三角形(3d)粒子
- 有限大小的圆角多边形(2d)和多面体(3d)粒子
- 点偶极粒子
- 具有磁自旋的粒子
- n个粒子的刚性集合
- 这些的混合组合
1.3.3.原子间势(力场)
参见对样式、键样式、角度样式、二面角样式、不正确样式、kspace 样式命令)
- 成对势:Lennard-Jones、Buckingham、Morse、Born-Mayer-Huggins、Yukawa、软、II 类 (COMPASS)、氢键、谐波、高斯、表格、脚本
- 带电成对势:库仑、点偶极
- 多体势:EAM、Finnis/Sinclair、MEAM、MEAM+SW、EIM、EDIP、ADP、Stillinger-Weber、Tersoff、REBO、AIREBO、ReaxFF、COMB、Streitz-Mintmire、3 体多态、BOP、Vashishta
- 机器学习潜力:ACE、AGNI、GAP、Behler-Parrinello (N2P2)、POD、RANN
- 与外部组分布的ML势的接口:ANI, ChIMES, DeepPot, HIPNN, MTP
- 电荷、点偶极子和 LJ 色散的长程相互作用:Ewald、Wolf、PPPM(类似于粒子网格 Ewald)、MSM、ScaFaCoS
- 极化模型:QEq、核/壳模型、Drude 偶极子模型
- 极化模型:QEq、核/壳模型、Drude 偶极子模型
- 粗粒势:DPD、GayBerne、REsquared、胶体、DLVO、oxDNA / oxRNA、SPICA
- 介观势:颗粒、近场动力学、SPH、介观管状电位 (MESONT)
- 半经验势:多离子广义赝势理论(MGPT)、二阶矩紧束缚+QEq(SMTB-Q)
- 电子力场(eFF、AWPMD)
- 键势:谐波、FENE、莫尔斯、非线性、II 类 (COMPASS)、四次(易碎)、表格、脚本
- 角势:谐波、CHARMM、余弦、余弦/平方、余弦/周期、II 类 (COMPASS)、表格、脚本
- 二面势:谐波、CHARMM、多谐波、螺旋、II 类 (COMPASS)、OPLS、表格、脚本
- 不当势:谐波、cvff、伞形、II 类 (COMPASS)、表格
- 聚合物势:全原子、联合原子、珠弹簧、易碎
- 水势:TIP3P、TIP4P、SPC、SPC/E 及其变体
- 石墨烯及其类似物、异质结的层间电势
- 金属有机骨架势(QuickFF、MO-FF)
- 隐式溶剂势:流体动力润滑,德拜
- 与 CHARMM、AMBER、DREIDING、OPLS、GROMACS、Class II (COMPASS)、UFF、ClayFF、DREIDING、AMOEBA、INTERFACE 的力场兼容性
- 通过 kim 命令访问 OpenKIM 势存储库
- 混合势:在一次模拟中可以使用多对、键、角度、二面角、不当势
- 重叠势:具有可选比例因子的多对势(包括多体)的叠加
1.3.4.创建原子
(参见 read_data、lattice、create_atoms、delete_atoms、displace_atoms、replicate 命令)
- 从文件中读取原子坐标
- 在一个或多个晶格上创建原子(例如晶界)
- 删除原子的几何或逻辑组(例如空洞)
- 多次复制现有原子
- 取代(位移)原子
1.3.5.系综、约束和边界条件
(参见fix命令)
- 2d或3d系统
- 正交或非正交(三斜对称)模拟域
- 恒定NVE, NVT, NPT, NPH, Parrinello/Rahman集成商
- 组和原子的几何区域的恒温选项
- 压力控制通过鼻子/胡佛或贝伦德森气压调节在1至3个维度
- 模拟箱体变形(拉伸和剪切)
- 谐波(伞形)约束力
- 刚体约束SHAKE / RATTLE键和角度约束
- 流形表面的运动约束
- 蒙特卡罗键断裂,形成,交换,基于模板的反应建模
- 原子/分子的插入和删除
- 各种各样的墙壁,静态和移动
- 非平衡分子动力学
- 各种附加边界条件和约束
1.3.6.积分器
(参见run, run_style, minimize命令)
- velocity-Verlet积分器
- 布朗动力学
- 刚体积分
- 通过共轭梯度、最陡下降松弛或阻尼动力学实现能量最小化(FIRE、Quickmin)
- 分层时间步进
- 固定或自适应时间步长
- 重新运行转储文件后处理命令
1.3.7.诊断
- 查看各种类型的fix和compute命令
- 自省命令用于系统、模拟和编译时的设置和配置
1.3.8. 输出
- 热力学信息的日志文件
- 原子坐标、速度和其他原子数量的文本转储文件
- 转储输出在固定和可变的间隔,基于时间步长或模拟时间
- 二进制重启文件
- 转储和重启文件的并行I/O
- 单原子量(能量、应力、中心对称参数、CNA等)
- 用户定义的系统范围(日志文件)或每个原子(转储文件)计算
- 用于分组的自定义分区(块),以及用于分析的原子的静态或动态分组
- 空间、时间和每个原子数量的每块平均
- 系统范围数量的时间平均和直方图
- 原子快照在本地,XYZ, XTC, DCD, CFG, NetCDF, HDF5, ADIOS2, YAML格式
- 实时压缩输出和读取文件的解压缩
1.3.9.Multi-replica模型
-
path-integral MD: first variant, second variant
1.3.10.预处理和后处理
- 一些预处理和后处理工具被打包在LAMMPS中,其中一些可以将输入和输出文件转换为其他代码使用的格式;请参阅工具页面。
- 我们的团队还编写并发布了一个名为Pizza.py的独立工具包,该工具包提供了用于进行LAMMPS模拟的设置、分析、绘图和可视化的工具。Pizza.py是用Python编写的,可以从Pizza.py WWW站点下载。
1.3.11.特色功能
LAMMPS可以用实现各种附加功能的可选包来构建。有关详细信息,请参见可选包页面。
这些是LAMMPS的功能,你可能不认为是典型的经典MD选项:
- 静态和动态负载平衡,可选与递归平分分解
- 广义非球面粒子
- 随机旋转动力学
- 实时可视化和交互式MD,内置图像和电影渲染器
- 计算虚衍射图样
- 计算有限温度声子色散和最小结构的动力学矩阵
- 原子-连续体耦合与有限元
- 通过POEMS库进行耦合刚体积分
- QM / MM耦合
- 蒙特卡罗通过GCMC和tfMC和原子交换
- 路径积分分子动力学(PIMD)和 this as well
- 低密度流体的直接模拟蒙特卡罗
- Peridynamics建模
- 晶格玻尔兹曼流体
- 定向和操纵分子动力学
- 双温度电子模型
1.4. LAMMPS 非功能 特性
LAMMPS 旨在成为分子动力学 (MD) 模拟的快速并行引擎。它仅提供少量的功能来设置模拟和分析其输出。
最初,LAMMPS 的构思和设计目的不包括:
- 通过GUI运行
- 构建分子系统,或者构建分子拓扑结构
- 自动分配力场系数
- 对你的MD模拟进行复杂的分析
- 交互式地可视化MD模拟
- 绘制输出数据
以下是如何完成这些任务的建议:
- GUI:LAMMPS 可以构建为库,并提供包装库接口的 Python 模块。因此,GUI 界面可以用 Python 或 C/C++ 编写,运行 LAMMPS 并可视化或绘制其输出。 python 目录中提供了此类示例,并在 Python 文档页面上进行了描述。自 2023 年 8 月 2 日版本起,LAMMPS 中包含 GUI 工具。此外,还有一些外部包装器或 GUI 前端。
- Builder:LAMMPS 中封装了一些预处理工具。其中一些将其他 MD 代码(例如 CHARMM、AMBER 或 Insight)生成的格式的输入文件转换为 LAMMPS 输入格式。其中一些是简单的程序,可以构建简单的分子系统,例如线性珠弹簧聚合物链。 moltemplate 程序是一个真正的分子生成器,可以生成复杂的分子模型。有关 LAMMPS 附带的工具的详细信息,请参阅工具页面。 LAMMPS 主页的预处理/后处理页面描述了用于此任务的各种第三方工具。此外,一些内部 LAMMPS 命令允许重建或有选择地添加拓扑信息,并提供插入分子模板而不是原子来构建本体分子系统的选项。
- 力场分配:假设您提供 CHARMM、AMBER 或 BIOVIA(以前称为 Accelrys)力场文件,前面的 CHARMM、AMBER 和 Insight 项目符号中描述的转换工具还将分配 LAMMPS 格式的力场系数。 ParmEd 和 InterMol 工具在各种 MD 模拟程序之间转换力场和拓扑数据方面特别强大且灵活。
- 仿真分析:如果您想在仿真运行时即时执行分析,请参阅计算和修复文档页面,其中列出了可在 LAMMPS 输入脚本中使用的命令。另请参阅修改页面,了解有关如何将您自己的分析代码或算法添加到 LAMMPS 的信息。对于后处理,LAMMPS 输出(例如转储文件快照)可以转换为其他 MD 或后处理代码使用的格式。在某种程度上,这种转换可以通过连接 VMD molfile 插件直接在 LAMMPS 内部完成。重新运行命令还允许对现有轨迹进行后处理,并且通过读取各种文件格式,这也可用于分析其他 MD 代码的轨迹。一些与 LAMMPS 一起打包的后处理工具将执行这些转换。 tools/python 目录中提供的脚本可以提取和处理转储文件中的数据,以便更轻松地导入到其他程序中。有关这些不同选项的详细信息,请参阅“工具”页面。
- 可视化:LAMMPS 可以通过其转储图像命令即时生成 NETPBM、JPG 或 PNG 格式的快照图像,并将它们传递给外部程序 FFmpeg,以从中生成电影。对于高质量的交互式可视化,有许多优秀且免费的工具可用。有关可以处理 LAMMPS 输出数据的可视化包,请参阅 LAMMPS 网站的可视化工具页面。
- 绘图:请参阅下一个关于 Pizza.py 的项目符号以及 Python 页面,了解绘制 LAMMPS 输出的示例。
tools
目录中的 python 工具提供的脚本将提取和处理日志和转储文件中的数据,以便更轻松地分析和绘制。有关各种工具的更多讨论,请参阅工具文档页面。 - Pizza.py:我们小组还编写了一个名为 Pizza.py 的单独工具包,它可以为 LAMMPS 模拟执行某些类型的设置、分析、绘图和可视化(通过 OpenGL)。因此,它为上述几个项目符号提供了一些功能。 Pizza.py 是用 Python 编写的,可以从此页面下载。
1.5. LAMMPS 的可移植性和兼容性
分发 LAMMPS 的主要形式是通过高度可移植的源代码。但也存在多种以预编译包或通过自动构建机制获取 LAMMPS 的方法。大多数 LAMMPS 是用 C++ 编写的,一些支持工具是用 Fortran 或 Python 或 MATLAB 编写的。
1.5.1.编程语言标准
大多数C++代码当前需要与C++11标准兼容的编译器,KOKKOS包当前需要C++17。大多数 Python 代码都是为了与 Python 3.5 或更高版本或 Python 2.7 兼容而编写的。一些 Python 脚本需要 Python 3,而其他一些脚本仍需要从 Python 2 移植到 Python 3。
1.5.2.构建系统
LAMMPS 可以使用基于 shell 脚本、一些 shell 实用程序(grep、sed、cat、tr)和 GNU make 程序的(传统)构建系统从源代码进行编译。这需要在 Bourne shell ( /bin/sh
) 中运行。或者,可以使用 CMake 创建具有不同后端的构建系统。 CMake 版本必须至少为 3.16。
1.5.3.操作系统
LAMMPS 的主要开发平台是 Linux。因此,LAMMPS 在 Linux 机器上编译没有问题的机会是最好的。此外,还会自动检查 macOS 和 Windows(使用 Microsoft Visual C++)上的编译和正确执行,以查找源代码的最大部分。某些(可选)功能并不与所有操作系统兼容,要么是由于相应的 LAMMPS 源代码的限制,要么是因为所需库的源代码或构建系统不兼容。
Windows 的可执行文件可以使用 Cygwin 或 Visual Studio 或使用 Linux 到 Windows MinGW 交叉编译器本地创建。
此外,FreeBSD 和 Solaris 已通过测试成功。
1.5.4.编译器
最常用的编译器是 GNU 编译器,但 Clang 和 Intel 编译器也已在 Linux、macOS 和 Windows 上成功使用。此外,Nvidia HPC SDK(以前的 PGI 编译器)将编译 LAMMPS(在 Linux 上测试)。
1.5.5. CPU 架构
运行 LAMMPS 的主要 CPU 架构是 64 位 x86,但也有 32 位 x86,并且定期测试 64 位 ARM 和 PowerPC(64 位、Little Endian)。
1.5.6.可移植的依从性
只有 LAMMPS 源代码的一个子集完全符合上述所有标准。对于像 LAMMPS 这样很大程度上依赖于用户社区贡献的项目来说,这是相当典型的。并非所有贡献者都接受过程序员培训,也并非所有贡献者都可以访问多个平台进行测试。然而,作为持续集成过程的一部分,所有贡献都会自动测试,以在精选的 Linux 版本、macOS 和 Windows 以及具有不同编译器的 Linux 上进行编译、链接和通过一些运行时测试。因此,在合并拉取请求之前通常会发现可移植性问题。其他平台可能会偶尔或在报告可移植性错误时进行检查。
1.6. LAMMPS 开源许可证
1.6.1. LAMMPS 的 GPL 版本
LAMMPS 是开源代码,免费提供,并根据 GNU 公共许可证版本 2 (GPLv2) 的条款分发,这意味着您可以出于自己的目的随意使用或修改代码,但必须在重新分发它(特别是以二进制形式)或分发从它派生的软件或包含它的一部分的软件时遵守某些规则。
LAMMPS 不提供任何形式的保修。
正如每个源文件在其标头中所述,它是受版权保护的代码,因此不属于公共领域。有关开源软件和开源分发的更多信息,请访问 www.gnu.org 或 www.opensource.org。适用于 LAMMPS 的 GPL 法律文本位于 LAMMPS 发行版中包含的 LICENSE 文件中。
以下是 GPL 对 LAMMPS 用户意味着什么的更具体的总结:
(1) 任何人都可以以自己选择的任何方式自由使用、复制、修改或扩展 LAMMPS,包括用于商业目的。
(2) 如果您分发 LAMMPS 的修改版本,它必须保持开源,这意味着您需要根据 GPL 条款分发所有内容。您应该清楚地将此类修改后的代码注释为 LAMMPS 的衍生版本。
(3) 如果您发布任何包含或使用 LAMMPS 源代码的代码,那么它也必须是开源的,这意味着您根据 GPL 条款分发它。您可以编写将 LAMMPS 连接到不同许可的库的代码。在这种情况下,提供接口的代码必须获得 GPL 许可,但不一定是该库,除非您分发需要该库才能运行的二进制文件。
(4) 如果您将 LAMMPS 文件提供给其他人,GPL LICENSE 文件和源文件头(包括版权和 GPL 声明)应保留为代码的一部分。
1.6.2. LAMMPS 的 LGPL 版本
我们有时会根据 GNU Lesser Public License v2.1 提供稳定的 LAMMPS 版本。这仅应要求提供,并且已删除不符合 LGPL 的文件。这允许使用将非 GPL 兼容软件与(否则未经修改的)LAMMPS 库链接或在运行时动态加载它。然而,对 LAMMPS 代码的任何修改,即使使用 LGPL 许可版本,仍然必须在与 LAMMPS 本身相同的开源条款下提供。
1.7. LAMMPS 的作者
LAMMPS 的主要开发人员位于桑迪亚国家实验室和天普大学:
-
Steve Plimpton, sjplimp at gmail.com
-
Aidan Thompson, athomps at sandia.gov
-
Stan Moore, stamoor at sandia.gov
-
Axel Kohlmeyer, akohlmey at gmail.com
-
Richard Berger, richard.berger at outlook.com
过去的开发者包括桑迪亚的Paul Crozier和Mark Stevens,以及现在在Materials Design的Ray Shan。
LAMMPS网站的作者页面有一个完整的列表,列出了所有为LAMMPS贡献新特性、命令或工具代码的个人。
下面这些人值得特别表扬。他们编写的许多包对于MD代码来说都是独一无二的,如果没有他们的专业知识和努力,LAMMPS就不会像现在这样通用。
- Metin Aktulga (MSU),ReaxFF C/C++ 版本的 REAXFF 软件包
- Mike Brown(英特尔),GPU 和 INTEL 软件包
- Colin Denniston(西安大略大学),LATBOLTZ 软件包
- Georg Ganzenmuller (EMI)、MACHDYN 和 SPH 软件包
- Andres Jaramillo-Botero(加州理工学院),电子力场 EFF 包
- Reese Jones (Sandia) 及其同事,用于原子/连续介质耦合的 ATC 包
- Christoph Kloss(DCS 计算),颗粒材料的 LIGGGHTS 代码,构建于 LAMMPS 之上
- Rudra Mukherjee (JPL),用于铰接刚体运动的 POEMS 包
- Trung Ngyuen(芝加哥大学),GPU、RIGID、BODY 和 DIELECTRIC 包
- Mike Parks(桑迪亚),PERI 近场动力学软件包
- Roy Pollock (LLNL)、Ewald 和 PPPM 求解器
- Julien Tranchida (CEA Cadarache),SPIN 包
- Christian Trott (Sandia)、CUDA 和 KOKKOS 包
- Ilya Valuev (JIHT),波包 MD 的 AWPMD 包
- Greg Wagner(西北大学),发挥 MEAM 潜力的 MEAM 软件包
正如网站历史页面上所讨论的,LAMMPS 最初是美国能源部实验室和工业合作伙伴之间的一个合作项目。参与 LAMMPS 原始版本的设计和测试的人员如下:
- 约翰·卡彭特(梅奥诊所,前克雷研究中心)
- Terry Stouch(Lexicon Pharmaceuticals,前百时美施贵宝公司)
- 史蒂夫·勒斯蒂格(杜邦)
- 吉姆·贝拉克和罗伊·波洛克 (LLNL)
1.8.引用 LAMMPS
1.8.1.核心算法
下面提到的论文是对 LAMMPS 的最好概述,但也有一些出版物描述了在 LAMMPS 或具有接口的补充软件中实现的特定模型或算法。请参阅下文了解如何引用对 LAMMPS 的贡献。
描述基本功能、源代码设计、程序结构、空间分解方法、邻居查找、基本通信算法以及用户和开发人员如何为 LAMMPS 做出贡献的最新规范出版物是:
因此,使用 LAMMPS 的项目或使用 LAMMPS 作为仿真引擎的衍生应用程序应该引用本文。该论文预计将于 2022 年上半年在同一 DOI 下以最终形式发表。另请在论文中给出 LAMMPS 网站的 URL,即 https://www.lammps.org。
描述 LAMMPS 初始版本中使用的并行算法的原始出版物是:
1.8.2. LAMMPS 源代码的 DOI
LAMMPS 开发人员使用 CERN 的 Zenodo 服务创建数字对象标识符 (DOI),以稳定发布 LAMMPS 源代码。 LAMMPS 源代码有两种类型的 DOI。
所有版本的 LAMMPS 的规范 DOI(始终指向最新的稳定发行版本)是:
此外,还为各个稳定版本生成了 DOI:
-
3 March 2020 version: DOI:10.5281/zenodo.3726417
-
29 October 2020 version: DOI:10.5281/zenodo.4157471
-
29 September 2021 version: DOI:10.5281/zenodo.6386596
1.8.3. 主页
LAMMPS网站https://www.lammps.org/是关于LAMMPS及其功能的信息的规范位置。
1.8.4.引用贡献
LAMMPS 具有许多使用先前发布的方法和算法或新颖功能的功能。它还包括特定模型的潜在参数文件。如果可用,有关特定运行中使用的可选功能的参考的提醒将打印到屏幕和日志文件中。可以使用 -cite 命令行开关选择样式和输出位置。相应命令的文档或 Howto 教程中提供了其他参考。请确保您在使用 LAMMPS 发表的任何作品中提供适当的致谢和引用。
1.9.其他网站链接
除了手册中的内容之外,LAMMPS 网站还提供有关 LAMMPS 的各种附加信息。下面列出了一些其他有用的在线资源。