VASP学习记录02

POTCAR中参数解释以及Linux常用小命令

Posted by David on April 11, 2020

前言

今天打算跟着大师兄在VASP上泡一下上面的示例,以便加深印象。

正文

了解VRHFIN, LEXCH,TITEL,ZVAL,ENMAX 几个参数的意义:

  • VRHFIN 用来看元素的价电子排布,如果你元素周期表倒背如流,可以忽略这个参数;
  • LEXCH 表示这个POTCAR对应的是GGA-PBE泛函;如果INCAR中不设定泛函,则默认通过这个参数来设定。
  • TITEL 就不用说了,指的是哪个元素,以及POTCAR发布的时间; ZVAL 指的是实际上POTCAR中价电子的数目,尤其是做Bader电荷分析的时候,极其重要。
  • ENMAX 代表默认的截断能。与INCAR中的ENCUT这个参数相关。

学会利用 grep 命令:

$ ls Fe*
Fe:
POTCAR  PSCTR

Fe_GW:
POTCAR  PSCTR

Fe_pv:
POTCAR  PSCTR

Fe_sv:
POTCAR  PSCTR

Fe_sv_GW:
POTCAR  PSCTR

$ grep ZVAL Fe*/POTCAR
Fe/POTCAR:   POMASS =   55.847; ZVAL   =    8.000    mass and valenz
Fe_GW/POTCAR:   POMASS =   55.847; ZVAL   =    8.000    mass and valenz
Fe_pv/POTCAR:   POMASS =   55.847; ZVAL   =   14.000    mass and valenz
Fe_sv/POTCAR:   POMASS =   55.847; ZVAL   =   16.000    mass and valenz
Fe_sv_GW/POTCAR:   POMASS =   55.847; ZVAL   =   16.000    mass and valenz
$ grep ENMAX Ge*/POTCAR
Ge/POTCAR:   ENMAX  =  173.807; ENMIN  =  130.355 eV
Ge_d/POTCAR:   ENMAX  =  310.294; ENMIN  =  232.720 eV
Ge_d_GW/POTCAR:   ENMAX  =  375.434; ENMIN  =  281.576 eV
Ge_GW/POTCAR:   ENMAX  =  173.807; ENMIN  =  130.355 eV
Ge_h/POTCAR:   ENMAX  =  410.425; ENMIN  =  307.818 eV
Ge_sv_GW/POTCAR:   ENMAX  =  410.425; ENMIN  =  307.818 eV

根据官网 确定需要元素的ENMAX .

将多个元素弄到一起称一个POTCAR的方法

 cat ~/Potentials/PBE/potpaw_PBE.52/Al/POTCAR ~/Potentials/PBE/potpaw_PBE.52/C/POTCAR ~/Potentials/PBE/potpaw_PBE.52/H/POTCAR >POTCAR

初步了解:Fe_sv,Fe_pv, Ge_d, Ge_gw,C_s, C_h 这些标记的含义:

  • 根据价电子的处理方式,分成了诸如:Fe,Fe_pv,Fe_sv的这样的情况。v是valence的缩写。pv代表把内层的p电子作为价电子来处理。sv代表则是把更内层的s电子也作为价电子来处理。具体到自己体系中的元素,可以结合元素周期表,以及ZVAL关键词所对应的价电子数目,来进行推断。

相关的参考资料:

Vim使用练习:自己搜资料学习,百度里面很多,学会怎么输入,保存。

VASP文件

INCAR

KPOINTS1

KPOINTS2

POSCAR1 POSCAR2 POTCAR1 POTCAR2 ISMEAR1 ISMEAR2

Linux基础语法:

  • 循环和输出

      $for i in {2..9}; do cp 0.01 0.0$i -r ; done
    
      $for i in ${seq 8 2 16};
    
      $echo{1..100}
    
  • sed命令修改INCAR

      $ sed '3,5s/0.01/0.02/g' INCAR > INCAR_new
    
      $ mv INCAR_new  INCAR 
    
      $ cp INCAR INCAR_back
    
      $ sed -i '3s/0.01/0.02/g' INCAR 
    
      $ for i in {2..9}; do sed -i "3s/0.05/$i/g" $i/INCAR ; done 
    
      $ abc=bigbro
    
      $  echo '$abc' 
    
      $ $abc
    
      $ echo "$abc"
    
      $ bigbro > sed –i 是sed 的命令和其附加选项, -i 表示直接对源文件进行编辑,也就是说编辑之后源文件被新文件替换掉。因此,使用这个参数的时候要小心,小心,再小心。要格外小心!!!保险一点的办法是先备份
    

这里我们用的是双引号 “ “ ,sed 命令中你会见到大部分都用单引号 ‘ ‘ 。但如果这里使用单引号,则所有的 0.01 都会被替换成 $i (单引号中的$i 是纯字符),因为单引号中的所有内容都会被当做字符来处理,也就是里面是什么就输出什么。使用双引号,则可以读取变量 $i 的值,