基于LAMMPS计算材料的介电常数
根据现代高科技战争的需求,军用飞行器的涂层材料应能够吸收和衰减入射的电磁波,并通过材料的介电振荡、涡流以及磁致伸缩,将电磁能转化为热能而耗散掉或者使电磁波因干扰而消失。因此,出于国防科技与国防工业的需要,材料的介电性能逐渐成为人们的研究热点。在本文中,我们将介绍如何通过LAMMPS来计算材料的介电常数。
LAMMPS不能直接给出材料的介电常数,需要我们对模拟给出的数据进行后处理。最近中科院过程所的陈卫老师发表了一篇文章:
Wei Chen and Liang-Sheng Li, “The study of the optical phonon frequency of 3C-SiC by molecular dynamics simulations with deep neural network potential”, Journal of Applied Physics 129, 244104 (2021) https://doi.org/10.1063/5.00494
该文章介绍了利用LAMMPS计算介电常数的具体方法和推导思路。由理论部分的内容可知,只需要在分子动力学模拟的过程中得到材料偶极矩的关联函数,即可得到材料的介电常数,而偶极矩是可以由LAMMPS直接计算得到的,这就需要用到“compute dipole/chunk”命令。
计算代码
整个代码块如下:
variable chunkID atom 1
compute mychunk all chunk/atom v_chunkID nchunk once ids once
compute dipole all dipole/chunk mychunk
variable dipole_x equal c_dipole[1][1]
variable dipole_y equal c_dipole[1][2]
variable dipole_z equal c_dipole[1][3]
fix 1 all ave/correlate 5 1000 10000 v_dipole_x v_dipole_y v_dipole_z type auto/upper ave running
代码解释
variable chunkID atom 1
给材料中每一个原子设定一个变量值为1的变量, 变量的名称为chunkID.
compute mychunk all chunk/atom v_chunkID nchunk once ids once
把所有带着名称为chunkID这一变量的原子,归为一个chunk。因为LAMMPS只能计算chunk的偶极矩,我们需要把整个材料都划归到一个chunk里面,前两个命令就是做的这样的事情。
compute dipole all dipole/chunk mychunk
关键的一条命令,计算名称为mychunk的那部分材料的偶极矩,如前所述,mychunk包括了整个体系。当然,也可以通过合理的划分chunk,来计算体系中部分原子的偶极矩。该条命令有三个输出的数值分别为偶极矩在X,Y,Z三个方向的分量。利用如下三条命令,可以将偶极矩提取出来:
variable dipole_x equal c_dipole[1][1]
variable dipole_y equal c_dipole[1][2]
variable dipole_z equal c_dipole[1][3]
最后一条命令
fix 1 all ave/correlate 5 1000 10000 v_dipole_x v_dipole_y v_dipole_z type auto/upper ave running
就是在计算偶极矩的时间关联函数了。有了偶极矩时间关联函数,结合线性响应理论就可以计算介电常数了。
具体的推导过程可以参考计算模拟公众号的原文,在公众号后台输入任何字符即可获得历史文章列表,本文收录在LAMMPS实操部分。