Vasplib InputFile (1) POSCAR

vasplib:POSCAR 之前在程序使用的过程中,主要的报错都来自于输入文件,可见这部分代码需要重构,增添错误信息,并且最好有个清晰的说明

POSCAR input

POSCAR 的格式,官网介绍的非常清楚。

Graphene

在POSCAR的基础格式上,为了引入轨道的信息,我们需要加入额外的轨道的信息,以石墨烯为例,主要有 $p_z$ 轨道构成,则POSCAR应该在每条轨道后面添上补充的轨道信息

graphene
1.0
2.4560000896 0.0000000000 0.0000000000
-1.2280000448 2.1269584693 0.0000000000
0.0000000000 0.0000000000 20.0000000000
C
2
Direct

Autofill

再遇到一些大体系的POSCAR,这样一个一个添加 有些麻烦,之前可以用vi块输入的方式解决,现在我们提供更加方便的办法,以21.78TBG为例

‘POSCAR_21.78’
POSCAR
1.0
6.5307998657 0.0000000000 0.0000000000
-3.2653999329 5.6558385907 0.0000000000
0.0000000000 0.0000000000 23.0000000000
C
28
Direct
0.8095700130000003 0.0476298940000001 0.4271699660000000 C p z
0.9523701059999999 0.7619401190000001 0.4271699660000000 C p z
0.2380598809999998 0.1904299869999997 0.4271699660000000 C p z
0.1904299869999997 0.9523701059999999 0.4271699660000000 C p z
0.0476298940000001 0.2380598809999998 0.4271699660000000 C p z
0.7619401190000002 0.8095700130000003 0.4271699660000000 C p z
0.0476298940000000 0.8095700130000003 0.5728300340000000 C p z
0.7619401190000002 0.9523701059999999 0.5728300340000000 C p z
0.1904299869999997 0.2380598809999998 0.5728300340000000 C p z
0.9523701059999999 0.1904299869999997 0.5728300340000000 C p z
0.2380598809999998 0.0476298940000001 0.5728300340000000 C p z
0.8095700130000003 0.7619401190000001 0.5728300340000000 C p z
0.6190698610000003 0.0952398940000000 0.4271699660000000 C p z
0.9047601059999999 0.5238299670000002 0.4271699660000000 C p z
0.4761700329999998 0.3809301389999998 0.4271699660000000 C p z
0.3809301389999997 0.9047601060000000 0.4271699660000000 C p z
0.0952398940000000 0.4761700329999998 0.4271699660000000 C p z
0.5238299670000002 0.6190698610000002 0.4271699660000000 C p z
0.0952398939999999 0.6190698610000002 0.5728300340000000 C p z
0.5238299670000003 0.9047601060000000 0.5728300340000000 C p z
0.3809301389999998 0.4761700329999998 0.5728300340000000 C p z
0.9047601060000000 0.3809301389999998 0.5728300340000000 C p z
0.4761700329999997 0.0952398940000000 0.5728300340000000 C p z
0.6190698610000003 0.5238299670000002 0.5728300340000000 C p z
0.6666666666666667 0.3333333333333334 0.4271699660000000 C p z
0.3333333333333333 0.6666666666666665 0.4271699660000000 C p z
0.3333333333333333 0.6666666666666667 0.5728300340000000 C p z
0.6666666666666667 0.3333333333333334 0.5728300340000000 C p z
现在我们只需在首行 加入信息即可
POSCAR
1.0
6.5307998657 0.0000000000 0.0000000000
-3.2653999329 5.6558385907 0.0000000000
0.0000000000 0.0000000000 23.0000000000
C
28
Direct
0.8095700130000003 0.0476298940000001 0.4271699660000000 C p z
……

format

每一行需要补充的信息是

elementL{s,p,d,f}basis Function {I,x,y,z,x2-y2,z2,xy,xz,yz,…}spin {1,-1,nan}

shortcodes for input

事实上我们可以略去 basis Function这里不写,在 L{s,p,d,f}这里填入一些短码,来加快我们轨道输入文件POSCAR的修改

  • p: $p_z~p_x~p_y$
  • pxy: $p_x~p_y$
  • sp: $s~p_z~p_x~p_y$
  • spz: $s~p_z$
  • d: $d$
  • sd: $sd$
  • pd: $pd$
  • f: $not be implemented$

spglib_matlab

小编写过一个matlab调用spglib的程序,可以让我们在读取POSCAR的同时,也获得了体系所拥有的对称性,对称操作等信息。 使用这系列的功能,需要用matlab支持的C编译器在主机上编译spglib.

element

在读取POSCAR的同时,我们也同时读取了元素周期表的基本信息作为参考,数据放在vasplib主目录 bin下面的element.txt.

symbolic

在处理六角格子的时候,我们的基矢量往往是无理数,这在理论分析与解析分析的时候会带来数值误差。 我们允许符号化的RmorbL, 只要POSCAR的精度达到1e-13,便可以把数值化的POSCAR读取成符号化的晶格基本信息


300 Words|This article has been read times