LAMMPS 入门教程:npt 控温估计 FCC Cu 熔点
LAMMPS 全称为 Large-scale Atomic/Molecular Massively Parallel Simulator,是一种经典的分子动力学仿真代码,专注于材料建模。它旨在在并行计算机上高效运行,并且易于扩展和修改。 LAMMPS 最初由美国能源部机构桑迪亚国家实验室开发,现在包括来自许多机构的许多研究小组和个人的贡献。
本教程使用 LAMMPS CPU 即可运行。
通过本教程的学习,您将能够:
* 理解 npt 控温操作流程
* 使用 dump 和 fix 指令将数据预处理
效果示例

一、运行前准备
在这里我们首先介绍一些需要使用的输入文件、势函数类型和 npt 控温流程。
1. 输入文件
进入 ./melt_u3,melt.in 文件如下:
units real
dimension 3
boundary p p p
atom_style atomic
# 读取铜结构
read_data cu
#选用 eam potential
pair_style eam
pair_coeff * * Cu_u3.eam
#每隔 100 时间步长于屏幕输出
thermo 100
thermo_style custom step temp pe press vol lx density
#将原子轨迹输出到文件 md.lammpstrj
dump 2 all custom 100 md.lammpstrj id type x y z
#结构优化
minimize 1.0e-10 1.0e-10 10000 10000
#nvt 压强弛豫
fix 1 all nvt temp 1000 1000 100
run 10000
unfix 1
#npt 体积弛豫
fix 1 all npt temp 1000 1000 100 iso 1 1 1000
run 10000
unfix 1
#将温度和体积量分别存储到 t 和 v 中
variable t equal "temp"
variable v equal "vol"
#npt 控温由 1000K 升温至 2000K 。
#升温速率为 (2000-1000)/100000=0.001 K/fs=1K/ps
fix 1 all npt temp 1000 2000 100 iso 1 1 1000
fix 2 all ave/time 100 10 10000 v_t v_v file t_v.txt
run 1000000
2. 势函数类型
该项目提供了 eam 势函数的演示模型
eam
./melt_u3
对应的势函数模块
pair_style eam
pair_coeff * * Cu_u3.eam
3.npt 控温流程
主要流程为:
nvt 压强弛豫,npt 体积弛豫
#结构优化
minimize 1.0e-10 1.0e-10 10000 10000
#nvt 压强弛豫
fix 1 all nvt temp 1000 1000 100
run 10000
unfix 1
#npt 体积弛豫
fix 1 all npt temp 1000 1000 100 iso 1 1 1000
run 10000
unfix 1
npt 升温
#npt 控温由 1000K 升温至 2000K 。
#升温速率为 (2000-1000)/100000=0.001 K/fs=1K/ps
fix 1 all npt temp 1000 2000 100 iso 1 1 1000
fix 2 all ave/time 100 10 10000 v_t v_v file t_v.txt
run 1000000
二、实操运行步骤(以 CPU 为例)
1. 创建并启动容器分子动力学模拟
1.1 打开 OpenBayes 个人用户界面,点击左侧「高性能计算」> 右上角「创建新容器」

1.2 算力选择「CPU」>「lammps-2024-cpu」取一个容器名称,例如 lammps> 选择「工作空间」,然后点击「下一步:选择算力」

1.3 取一个容器名称,例如 lammps> 选择「工作空间」,然后点击「执行」

2. 进行分子动力学模拟
2.1 待容器成功运行后,点击左侧打开工作空间

2.2 将压缩包拖到左侧文件区上传

2.3 然后打开终端

2.4 解压(本容器已将压缩包解压完毕,可以跳过此步骤):输入 unzip melt_u3.zip 解压压缩包
unzip melt_u3.zip
Archive: melt_u3.zip
creating: melt_u3/
inflating: melt_u3/cu
inflating: melt_u3/Cu_u3.eam
inflating: melt_u3/melt.in
inflating: melt_u3/melting.gif
inflating: melt_u3/p.plt
inflating: melt_u3/readme.md

2.5 输入 cd melt_u3 进入解压目录,使用 ls 查看文件
ls
Cu_u3.eam cu melt.in melting.gif p.plt readme.md

2.6 运行 lammps
mpirun -np 2 lmp < melt.in | tee out
2.7 屏幕输出会同步在 out 文件中,总运行时间大约需要 5 分钟

2.8 运行完毕后可在文件夹中得到 t_v.txt 等输出文件

2.9 t_v.txt 文件由输入文件中 fix 命令控制输出
#将温度于体积量分别存储到 t 和 v 中
variable t equal "temp"
variable v equal "vol"
fix 2 all ave/time 100 10 10000 v_t v_v file t_v.txt
生成
3. 数据处理
3.1 更新 apt 源
apt-get update --fix-missing

3.2 输入 apt install gnuplot 安装 gnuplot 工具,并输入 y 回车确认
apt install gnuplot

3.3 运行命令 gnuplot p.plt 可得到 t-v 图
gnuplot p.plt

3.4 双击左侧 t-v 图可得到估计的 Cu 熔点

可以看到熔点大约在 1600K 附近,与实际 1357.77K 有差距,这是由于升温过快,铜还来不及融化导致的。
升温过程原子轨迹由
#将原子轨迹输出到文件 md.lammpstrj
dump 2 all custom 1 md.lammpstrj id type x y z
存储至 md.lammpstrj 中,我们将其下载下来

3.5 可用 ovito 进行可视化
