LAMMPS 专题

LAMMPS 热输运的尺寸与采样长度比较

用实际Si三种长度、两个种子和追加采样,演示温度梯度拟合、单位换算与有限尺寸结果的判断。

更新于 2026-11-12约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载完整输入、原生温度剖面、热浴功与绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd lammps-direct-thermal-examples
bash results.sh
bash plot.sh

环境为LAMMPS 30Sep2026、Kokkos 5.2.1双精度、C++20 / CUDA 12.8构建,MPI与模块说明见版本环境。本批纯Si在P100、Si/Ge在V100 16G实际运行,每例一张GPU、一个MPI进程。下面的下载脚本可按自己的资源选择一种GPU入口。

reference-results是实际结果,inputs是可继续使用的输入,reference-data是提取后的CSV。查看与作图不启动新的MD。

1. 先完成同一套直接NEMD#

输入和提交流程见硅直接NEMD。本篇继续读取同一批数据,不另启一套模拟。可以先看两个采样阶段:

head -n 9 reference-data/short-Thermal-summary.csv
head -n 9 reference-data/extended-Thermal-summary.csv

最初50 ps用后25 ps平均;追加200 ps用后100 ps平均。因此比较的是两个明确的统计窗口,不是把同一条曲线重复画两遍。

2. 温度梯度怎样取#

从40层(最短盒20层)温度剖面中避开热浴,分别拟合两条周期路径。在本例中,一段取z/L=0.325—0.675,另一段把周期边界展开后取约0.825—1.175。

κ_apparent = J / average(|gradient_1|, |gradient_2|)
gradient[K/Å] × 10¹⁰ = gradient[K/m]

这里使用完整坐标z=L×fraction;不能直接用fraction上的斜率代替K/Å。单个原子层的涨落很大,提取时对明确时间窗口平均,并保留两条路径的斜率与拟合质量。

完整实现可直接查看:

head -n 70 collect.py
head -n 12 reference-data/extended-Thermal-profiles.csv

3. 追加采样后的实际表观结果#

下表单位为W/(m·K),来自追加段后100 ps的实际温度与热流:

盒长/nm 原子数 种子74011 种子74029
4.344 1024 2.903 4.099
6.516 1536 12.191 10.768
8.688 2048 14.685 11.959

实际长度、种子和采样窗口对表观热导的影响

原50 ps中,6.516 nm两个种子约27.96与9.23;追加采样后约12.19与10.77,差异减小。最长盒两种子约14.69与11.96,仍有可见离散。

这些是极小横截面、短长度下的表观热导。长度增长时结果仍明显改变,部分温度段也没有形成漂亮的直线,所以本例不报告无限长外推值,不把它标成体相Si的收敛热导。

4. 下一步如何检查自己的结果#

固定模型与横截面,增加长度档位与独立种子,逐步延长稳态统计窗口;同时比较热流强度、时间步、截面和拟合区域。只有几种长度并不自动说明已完成尺寸收敛。

如果局部梯度接近零、区段明显弯曲,κ会对拟合区间很敏感。先查看原始剖面、热浴输入/输出以及每段拟合质量,再决定是否能使用扩散型Fourier描述。

下载包的CSV保留两条路径的斜率与R²,便于你自己改变区间。误差展示采用两个种子的实际离散,不把两个结果包装成严格的收敛误差界。

5. 用自己的结果重新提取#

module load ase/3.29.0
python3 collect.py --root work --output results
bash plot.sh --data-dir results

相应分段MD应先按直接NEMD教程完成。要比较不同方法,可再看Green–Kubo与反向NEMD统计,它们各自的单位、热流定义与统计窗口都要保留。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗