鉴于优化时间较长,本文采用杨士qi同学的仿真结果做展示。
水在纳米管下的流动模型将区域均分为网格,并在网格中心放置水的氧原子。$NaCl$溶液建模可以在水的模型基础上,随机选取部分网格放置等量的$Na^+,Cl^-$离子。这样选取网格位置替换的方法规避了粒子重叠的情况。
Python程序确定划分网格应考虑水分子、$Na^+$和$Cl^-$的空间大小,以最大的水分子为参考。程序缩小仿真区域大小时要谨慎选择区域边界位置,避免粒子位于边界处。
in.*.lammps
选择力势时应注意在水的模型的力势的基础上增加两种离子间和离子与其他粒子的力势;in.*.lammps
程序中分组group时应注意将离子加入待计算的组别。
pair_coeff * 1 0.0000 0.0000
pair_coeff 2 2 0.15535 3.166
pair_coeff 3 3 0.5000 2.4710
pair_coeff 2 3 0.1000 2.8185
pair_coeff * 1 0.0000 0.0000
pair_coeff 2 2 0.15535 3.166
pair_coeff 3 3 0.5000 2.4710
pair_coeff 2 3 0.1000 2.8185
pair_coeff 2 4 0.13381 2.720
pair_coeff 2 5 0.35971 3.550
pair_coeff 1 4 0.13381 1.310
pair_coeff 1 5 0.35971 2.140
pair_coeff 4 4 0.02846 2.443
pair_coeff 4 5 0.08423 2.796
pair_coeff 5 5 0.23389 3.487
group hydrogen type 1
group oxygen type 2
group wall type 3
group Na type 4
group Cl type 5
group water union hydrogen oxygen Na Cl
lammps支持将计算结果保存,读取保存的结果并继续计算。我们将lammps程序拆成流动(加外力)和不流动两个过程(两个in
文件),便于控制错误范围,缩小纠错时间(单次仿真时间比较长)。注意两次仿真结果输出应打印到不同文件名的文件。
按照网格布置各粒子。可以看到离子被正确放置。
弛豫一段时间按后,系统状态趋近于平衡态。可以看到离子位移,说明离子正收到力势作用。
按照网格布置各粒子。可以看到离子被正确放置。
弛豫一段时间按后,系统状态趋近于平衡态。可以看到离子位移,说明离子正收到力势作用。
流动效果。
扩散系数正比于msd
根据仿真结果all.lammpstrj
和all.lammpstrj
计算msd。每个离子的计算结果打印到msd.data
文件。
程序正确读入all.lammpstrj
文件格式,可以复用计算其他物理量。程序使用字典查询指定原子,适用只追踪仿真结果中少量粒子的情况;若需追踪所有粒子,应当对所有粒子编号分配空间。
data.lmp
文件指定粒子信息