LAMMPS 拉伸的横向控压设置
在相同Ni初态、速率和温度下比较固定横向尺寸与横向零压目标,查看横向收缩及应力。
阅读本篇目录
沿 y 拉伸时,x、z 是保持长度,还是允许横向收缩,会直接改变测到的应力。本篇与镍拉伸实操共用同一下载包和计算结果。
1. 两种边界条件怎样选#
| 做法 | x、z 的处理 | y 的处理 | 适合先观察什么 |
|---|---|---|---|
| fixed | 长度固定,NVT 温控 | 指定工程应变率 | 受横向约束时的响应 |
| transverse | 分别以 0 bar 为目标控压,NPT 温控/压控 | 指定工程应变率 | 允许横向收缩时的响应 |
两种做法都使用周期胞,没有自由侧表面。它们在每个 GPU、速率和种子下从相同预热末态出发;改变的是加载阶段的横向处理,不是另外换一个势或初始结构。
2. 输入怎么改#
固定横向尺寸版本在预热后使用:
fix bath all nvt temp 100 100 0.1
fix load all deform 0 y erate 0.005 remap x units box
横向控压版本则是:
fix bath all npt temp 100 100 0.1 x 0 0 0.5 z 0 0 0.5 couple none
fix load all deform 0 y erate 0.005 remap x units box
x 0 0 0.5 与 z 0 0 0.5 分别给出起止压力目标 0 bar、压控阻尼 0.5 ps;couple none 允许 x、z 独立调节。不要再在同一方向叠加另一份 NPT、deform 或其他晶胞控制。本例 NPT 只控制 x、z,y 仍由应变率控制。
NPT 中的 0 是目标压力,不是要求每一帧的横向压力都恰好为零。500 原子、100 K、4 ps 的瞬时应力会有波动,也尚不足以证明压控或材料性质收敛。
3. 实际运行与检查#
在前篇完成 bash run.sh 后,横向控压结果已经位于 work/transverse/,无需再次提交:
head -n 4 tables/p100-npt-rate0.015-seed56001.csv
head -n 18 work/transverse/p100-npt-rate0.015-seed56001/final.data
cat work/transverse/p100-npt-rate0.015-seed56001/in.lmp

上排是 σxx、σzz;下排是 x、z 相对 17.6 Å 的长度变化。左侧固定横向尺寸,所以长度变化为零;右侧允许收缩,横向应力围绕目标波动。图中是 P100、seed56001 的两种速率。
在速率 0.015 ps⁻¹、末帧 6% 应变时,相同初态的结果为:
| 量 | 固定横向尺寸 | 横向控压 |
|---|---|---|
| Lx /Å | 17.600000 | 17.306822 |
| Lz /Å | 17.600000 | 17.249274 |
| 总 Cauchy σyy /GPa | 11.345214 | 7.394665 |
| 总 σxx /GPa | 6.702386 | −0.005811 |
| 总 σzz /GPa | 6.682005 | −0.121885 |
这是同一小模型在不同横向约束下的响应,不能把两列差异解释为 GPU 性能差异。也不要在未说明边界条件时,把任意一列直接称为镍的实验拉伸强度。
4. 温度和能量一起看#

虚线为 100 K 目标,温度会围绕它波动。势能在外部加载时变化是正常的:温控器还会与体系交换能量,所以不能把这类控温拉伸当作 NVE 能量守恒测试。
本例是操作起点。用于研究时,先使初始晶格和压力适合目标条件,再系统检查尺寸、时间步、预热长度、应变率、种子和势函数适用范围;从 CSV 中比较相同应变下的数据,并对稳态区间做统计。