org做后缀的网站/电商平台推广怎么做

本文首发于<计算模拟之道>公众号(ID:jsmnzd),更多的学习资料请关注公众号!
本文内容由中国科学院过程工程研究所的陈卫老师撰写,他的个人网址如下:http://emms.mpcs.cn/members/2932.php。
本文中,我们以NaCl晶体为例,介绍如何通过LAMMPS分子动力学模拟软件来计算晶体材料。我们首先要构建LAMMPS的原子构型文件,这里我们用到了LAMMPS的辅助软件之一Moltemplate,关于Moltemplate的使用方法,大家可以参考公众号中《LAMMPS之Moltemplate建模教程》一文的内容。因为晶体可以看作是原胞在三个维度上的周期性排列,我们只需要获得原胞的信息,即可以构建晶体的构型文件。晶体原胞的结构数据可以从网站https://materialsproject.org/ 上查得。需要注册一个帐号才能使用网站的数据。注册登陆之后,在网站的首页会看到一个元素周期表,用鼠标点击组成晶体的元素之后,点击“search”键,会出现由选中的元素可能组成的几种材料的化学式。

用鼠标点击组成晶体的元素之后,点击“search”键,会出现由选中的元素组成的几种可能材料的化学式。

在这里,鼠标点击NaCl,可以看到该晶体的详细信息。需要说明的是,导出的结构文件为分数坐标,还需要进一步转换为笛卡尔坐标。

我们可以从该网页中看到晶格矢量及其夹角,以及Na原子和Cl原子在以晶格矢量为基失的坐标系中的位置。

注意!!这里的Na原子的(0,0,0)和Cl原子的(0.5,0.5,0.5)不是它们在迪卡尔坐标系中的位置,LAMMPS的构型文件使用的是迪卡尔坐标系,所以先要做坐标变换。
LAMMPS要求了两个坐标系的原点重合,晶格矢量的a矢量必须和迪卡尔坐标系平行且同方向,b矢量必须落在XY平面,且必须在XY平面的第一或者第二相限,c失量则必须XY平面的正向,即Z为正的方向。因此,需要经过系列操作来实现晶格坐标系和迪卡尔坐标系之间的变换。由于此处涉及太多公式,请参考公众号原文的推导过程。
下一步需要用到Moltemplate软件,首先创建一个NaCl.lt文件,里面包含了原子的坐标和力场的信息,如下:
NaCl {write("Data Atoms") {$atom:Cl1 @atom:Cl 0.00 0.000 0.000 0.000$atom:Cl2 @atom:Cl 0.00 2.814 2.814 0.000$atom:Cl3 @atom:Cl 0.00 2.814 0.000 2.814$atom:Cl4 @atom:Cl 0.00 0.000 2.814 2.814$atom:Na1 @atom:Na 0.00 2.814 2.814 2.814$atom:Na2 @atom:Na 0.00 0.000 0.000 2.814$atom:Na3 @atom:Na 0.00 0.000 2.814 0.000$atom:Na4 @atom:Na 0.00 2.814 0.000 0.000}write_once("Data Masses") {@atom:Cl 35.453@atom:Na 22.99}write_once("In Init") {units realboundary p p patom_style chargepair_style born/coul/long 12.0kspace_style pppm 0.0001}write_once("In Settings") {pair_coeff @atom:Cl @atom:Cl 80366.98 0.317 0.000 1669.676 -3353.693pair_coeff @atom:Cl @atom:Na 28937.31 0.317 0.000 161.0881 -200.0457pair_coeff @atom:Na @atom:Na 9768.062 0.317 0.000 24.13932 -11.47215 }write_once("In Charges") {set type @atom:Cl charge -1.0set type @atom:Na charge 1.0}
}
这只是包涵了原胞的信息,产生LAMMPS的构型文件还需要一个system.lt文件。
import "NaCl.lt"# Periodic boundary conditions:
write_once("Data Boundary") {0.0 5*(2*La) xlo xhi0.0 5*(2*Lb) ylo yhi0.0 5*(2*Lc) zlo zhi
}Mol = new NaCl[5].move(2*La, 0.000, 0.000) [5].move(0.000, 2*Lb, 0.000) [5].move(0.000, 0.000, 2*Lc)
每一个方向平移的长度是对应原胞长度的2倍,每个方向有5个原胞,那么体系的尺寸即为5*(2*原胞长度)。最后执行下面的命令即可获得LAMMPS运行所需的data格式输入文件。
moltemplate.sh-atomstyle "full" system.lt
最后感谢陈老师的分享!欢迎大家为公众号投稿!