1. Lennard-Jones流体平衡态模拟

Lennard-Jones流体平衡态模拟 学习卡片

案例目标与物理模型

本案例使用 LAMMPS 对三维 Lennard-Jones 流体进行 NVT 系综模拟。LJ 势能形式为:

U(r) = 4ε [ (σ/r)^12 - (σ/r)^6 ]

模拟采用约化单位(ε=1, σ=1, m=1),截断半径取 r_c = 2.5σ,并在截断处施加长程能量与压力修正。体系为 500 个粒子,密度 ρ* = 0.80,目标温度 T* = 1.20,时间步长 Δt* = 0.002。初始构型为简单立方晶格,速度按目标温度随机赋值并去除质心动量。

LAMMPS 输入脚本

# ---------- 初始化 ----------
units           lj
atom_style      atomic
boundary        p p p

# ---------- 创建体系 ----------
lattice         sc 1.0772          # ρ* = 0.80 对应晶格常数
region          box block 0 5 0 5 0 5
create_box      1 box
create_atoms    1 box
mass            1 1.0

# ---------- 势函数 ----------
pair_style      lj/cut 2.5
pair_coeff      1 1 1.0 1.0 2.5
neighbor        0.3 bin
neigh_modify    every 1 delay 0 check yes

# ---------- 初始速度 ----------
velocity        all create 1.20 4928459 mom yes rot yes dist gaussian

# ---------- 平衡阶段:NVT ----------
fix             1 all nvt temp 1.20 1.20 1.0
timestep        0.002
thermo          100
thermo_style    custom step temp press pe ke etotal

# 先跑 5000 步让体系初步松弛
run             5000

# ---------- 采样阶段:继续 NVT,记录涨落 ----------
reset_timestep  0
fix             2 all ave/time 10 100 1000 temp press file thermo_avg.dat
run             20000

# ---------- 输出最终构型 ----------
write_data      lj_nvt_final.data

温度与压力涨落观察

NVT 系综下,温度由 Nosé-Hoover 热浴维持在 1.20 附近,但瞬时温度仍会围绕目标值涨落。压力在 LJ 流体中涨落幅度更大,因为压力包含位力项,对粒子局部构型非常敏感。判断平衡的核心依据是:

  • 温度时间序列不再有单调漂移,围绕 1.20 做有界涨落;
  • 压力时间序列的滑动平均趋于稳定,不再持续上升或下降;
  • 势能与总能量在采样阶段无系统性趋势;
  • 径向分布函数在后续分析中不再随时间明显变化(本案例不展开)。
若温度长时间偏离目标值超过 ±0.05,可检查热浴阻尼参数是否过小或时间步长是否过大。若压力持续漂移,通常说明体系尚未充分平衡,应延长平衡阶段。

平衡判据与结果判读

将 thermo_avg.dat 中的温度、压力对时间步作图,观察最后 10000 步的滑动平均。以下为典型平衡判读逻辑:

观测量平衡特征未平衡特征
温度 T*围绕 1.20 有界涨落,均值≈1.20单调上升/下降或远离目标值
压力 P*滑动平均稳定,涨落幅度约 ±0.5持续漂移或阶跃变化
势能 PE无长期趋势,仅小幅涨落持续下降(体系仍在致密化)
总能量 ENVT 下不守恒,但应无系统漂移与热浴交换异常
LJ 流体 NVT 模拟:温度与压力涨落判读 模拟阶段 初始构型 sc晶格 ρ*=0.80, T*=1.20 平衡阶段 NVT 5000步 Δt*=0.002 采样阶段 NVT 20000步 记录涨落 输出与判读 thermo_avg.dat 分析 最终构型 write_data 输出 温度 T* 时间序列 步数 T* 1.20 有界涨落区间 压力 P* 时间序列 步数 P* 均值 平衡判据速查 观测量 平衡特征 未平衡特征 温度 T* 围绕1.20有界涨落 单调漂移或远离目标 压力 P* 滑动平均稳定 持续漂移或阶跃 势能 PE 无长期趋势 持续下降(致密化) 总能量 E 无系统漂移 与热浴交换异常

结果验证与常见问题

运行完成后,检查 thermo_avg.dat 中最后 10000 步的统计量。若温度均值在 1.20±0.02 范围内、压力滑动平均变化小于 0.1,可认为体系达到热力学平衡。常见问题包括:

  • 温度失控:检查 fix nvt 的阻尼参数是否合理,LJ 单位下通常取 1.0 左右。
  • 压力异常大:确认截断半径与长程修正是否一致,pair_style lj/cut 2.5 已包含能量修正,但压力修正需在 thermo_style 中确认。
  • 体系未平衡:延长平衡阶段至 10000 步以上,或检查初始构型是否过于规则导致局部应力过大。
本案例的完整输入脚本可直接保存为 in.lj_nvt,在 LAMMPS 中执行 lmp -in in.lj_nvt 即可运行。输出文件 thermo_avg.dat 包含时间步、温度、压力三列,可用 Python 或 gnuplot 绘制涨落曲线进行判读。