下图为三种常用的模型构建策略路线图I
、II
、III
。
通常情况下路线I
能完成许多基本的模型构建和导出,当遇到一些较复杂的模型需要组装时就会显得力不从心了。如下图这种,多组分固液模型组装。
此时,我们需要利用到组装工具软件Packmol
,按照路线II
完成组装和转化。
在
MS
中构建好所需要的所有组分结构,导出为.pdb
文件。
需要注意的是,导出前需要手动设置每个原子的Name
,相同原子类型的设置为相同Name
,不同原子类型需要设置为不同Name
,此处设置为该路线中的关键步骤。
编写用于
Packmol
组装的in
文件,利用packmol.exe
可执行程序完成组装,得到组装完成结构文件structure_Gra_Al2SO4_3-0.6M.pdb
。
# 距离容差, 不同分子中原子间的最小距离2A tolerance 2.0 # 输入输出文件的格式 filetype pdb # 输出文件的名字 output structure_Gra_Al2SO4_3-0.6M.pdb # structure Gra.pdb number 1 center fixed 19.0179 18.45 30.01 0. 0. 0. end structure # structure H2O.pdb number 2840 inside box 1.0 1.0 1.0 37.5 37.0 59.0 end structure # structure Al.pdb number 60 inside box 1.0 1.0 1.0 37.5 37.0 59.0 end structure # structure SO4.pdb number 90 inside box 1.0 1.0 1.0 37.5 37.0 59.0 end structure
将组装完成结构文件
structure_Gra_Al2SO4_3-0.6M.pdb
重新拖回到MS
中。任意选中一个原子,可以发现原子属性中Name
栏为预设原子Name
,而ForcefiledType
力场类型栏为空。
此时我们借助name2ffield.pl
脚本将结构中所有原子Name
属性复制到ForcefiledType
属性。
name2ffield.pl
文件内容如下
#!perl use strict; use Getopt::Long; use MaterialsScript qw(:all); my $doc = $Documents{"structure_Gra_Al2SO4_3-0.6M.xsd"}; my $atoms = $doc->Atoms; foreach my $atom (@$atoms) { $atom->ForcefieldType = $atom->Name; }
name2ffield.pl
脚本执行完,可以随意选择其中几个原子检查ForcefiledType
力场类型设置是否正确完成。
ForcefiledType
力场类型设置完成后,在MS中添加晶格。
晶格添加完成后模型
导出为为
.car
文件格式,然后利用msi2lmp.exe
小程序来完成格式的转换,即可生成需要的data
文件structure_Gra_Al2SO4_3-0.6M.data
。重复路线I
中对应检查。使用Ovito
软件查看data
文件,可得如下所示结构。
附件:本案例中对应结构文件
20180125-Graphene-Al2SO43-K2SO4.7z