大家好,我是小马老师。

本文介绍lammps模拟薄膜过滤相关的模拟方法,如建模、加压、薄膜空隙率影响等等相关技术。

大约用三篇文章介绍整个模拟过程,本文为第一期建模部分。

案例参考自Simon Gravelle,本文稍作修改,并对代码部分进行详细解释,供初学者参考。

模型如下图所示:

lammps教程:薄膜渗透过滤模拟(1)_lammps培训

整个模拟体系一共包含5种原子,对应的类型分别为:

type 1:红色,左侧活塞墙

type 2:蓝色,中间薄膜

type 3:黄色,右侧活塞墙

type 4:紫色,溶液原子

type 5:绿色,溶质原子

(1)模型基本设置

模拟过程中,x方向需要设置活塞墙移动加压,因此,x方向为收缩边界,y和z方向为周期性边界。

单位为lj约化单位,原子类型为atomic。

boundary  s p p
units lj
atom_style atomic

(2)创建模拟盒子

活塞和薄膜的晶格类型为fcc,晶格常数为1,以这个晶格参数创建box区域,设定box内含有5种原子。

lattice fcc 1
region simulation_box block -50 50 -15 15 -15 15
create_box 5 simulation_box

(3)创建5个区域

使用region block命令创建5个长方体区域,INF表示无穷大,在此可以理解为盒子边界。

region piston_left block -49 -48 INF INF INF INF
region fluid_left block -45 -2 INF INF INF INF
region membrane block -0.25 0.25 INF INF INF INF
region fluid_right block 2 45 INF INF INF INF
region piston_right block 48 49 INF INF INF INF

(4)填充原子

分别在第3步创建的区域内填充不同类型的原子,前3种按fcc晶格填充

create_atoms  1 region piston_left
create_atoms 2 region membrane
create_atoms 3 region piston_right

第4和5种原子随机填充,random后面2个数字分别表示原子个数和随机数种子seed,最后一个参数为填充区域。

随机数种子可以随便选一个正整数,不同的随机种子可产生不同的随机状态。

create_atoms  4 random 5000 654514 fluid_left
create_atoms 4 random 4500 654514 fluid_right
create_atoms 5 random 500 424514 fluid_right

(5)力场设置

力场为lj/cut,截断半径2.5。

#势函数设置
mass * 1
pair_style lj/cut 2.5
pair_coeff 1*3 1*3 1.0 1.0 # solid-solid
pair_coeff 4 4 1.0 1.0 # solvent-solvent

增大type 5的第一个参数可增加原子间作用力,增大第二个参数可等效认为增大type 5原子半径。

pair_coeff  5 5 2.0 3.0 # solute-solute
pair_coeff 1*3 4 0.8 1 # fluid-solvent
pair_coeff 1*3 5 0.1 3.0 # fluid-solute

(6)能量最小化

#模拟输出
dump mydmp all atom 1 dump.lammpstrj
thermo 10
#能量最小化
minimize 1.0e-4 1.0e-6 1000 10000
write_data data.lammps pair ij

随机产生的原子容易造成原子重叠,因此,在弛豫前应该进行能量最小化,防止原子因间距过小造成模拟计算出错。

能量最小化完成后保持data文件,此data文件作为弛豫过程的输入文件。


公众号:lammps加油站