文档库 最新最全的文档下载
当前位置:文档库 › VASP处理split_dos

VASP处理split_dos

VASP处理split_dos
VASP处理split_dos

实例1

split-dos的工作原理

我算了一个BaTiO3单胞,5个原子,加上总的态密度应该一共6组数据。但是计算结果的DOSCAR中却有1+5*7,36组数据,不知道每组数据对应什么?用split-dos脚本处理之后,确实生成了DOS0……DOS5,这是怎么生成的?脚本看不懂,望指教其原理。我对比过DOS4和DOSCAR,里面的数据没相同的。

PS:是不是一定要运行vp后才能运行split-dos?

split_dos是把费米能级算进去了的,所以能量会有不同但是其他的应该只是从DOSCAR里面提取出来的。

可以给我发第一列是能量后面的分别是s-up s-down p-up p-down d-up d-down

从脚本上看vp 不是必须的

实例2

电子态密度图是怎么做的?

我看好多文献在做电子结构计算时,都有态密度图,请问这是怎么作的?装个p4vasp,里面可以导入计算所得到的vasp.xml文件,选择electronic -> DOS+BAND就可以画出态密度图,然后Graph -> export 就可以到处数据到Origin中画图。p4vasp还可以处理各种PDOS,并自动把自旋向下的电子态密度数据设为负值,非常方便。

我不用P4VASP 行吗?直接从DOSCAR里找出数据画图或者用split-dos给分割一下之后画图这样做也是正确的吧?

实例3

split_dos运行

我将split_dos 和vp放在vasp第一次运行后的同一个目录下,然后运行,出现结果./split_dos[94]: /vp: not found [No such file or directory]

请问是什么原因,在split_dos应该修改路径吗

赋予执行属性

是chmod 755 split_dos吧我赋予了呀。split_dos中不用改路径吗,我的目录下都没bin 文件

那就是你缺少一个vp

修正版的splitdos有三个文件:vp、sumdos和split_dos.ksh

实例4

散尽金币求split_dos 运行

1 我将split_dos 与vp 放在需要计算的文件夹下然后在当前目录运行sh split_dos

出现以下错误

zhangkun@zhangkun-desktop:~/band750$ sh split_dos

: not found2:

: not found3:

: not found8:

: not found11:

: not found12:

: not found18:

: No such file or directory

set: 20: Illegal option -A

zhangkun@zhangkun-desktop:~/band750$

请问是怎么回事?

怎样才能计算出呢

2 还有为什么我自己编译的vasp p4vasp 不能读入vasprun.xml文件呢

有没有别的方法求的局域态密度的呢

我用了split-dos 通过读入procar文件这几个需要输入的参数是什么含义啊

为什么会显示数组越界呢

我有自己些的分开DOS文件的shell,不知道和你用的split_dos功能一样不,如果需要站内PM我

运行shell时不用sh split_dos直接 . /split_dos就行了

我有自己些的分开DOS文件的shell,不知道和你用的split_dos功能一样不,如果需要站内PM我

实例5

VASP计算出来的PDOS怎么画图啊?求指教

用origin 画图软件画,你把VASP计算出来的PDOS弄成txt格式(当然得从DOSCAR 中split dos 得到,这个需要小程序,你自己搜一下),有两列,一列能量,一列态密度,直接用origin 打开就行。这个软件很有用的,像画能带结构什么的都是用的到的。做分子模拟和材料计算material studio 和origin 是必不可少的,论坛上有这两个软件的教程,自己学习一下。还有就是计算

然后: ./split_dos这样他就会帮你执行啦

实例6

VASP 分波态密度

求助:我算一个有Zn,O,H的体系,在用VASP计算态密度的时候,用的是PAW势,在INCAR 里设置LORBIT=11计算,用split-dos程序分割每个原子的分波态密度,竟然在O原子里看到了有d电子的成分,觉得很奇怪,后来以为是INCAR的设置有问题,于是舍弃LORBIT=11, 换成RWIGS ,将Zn,O,H三个元素的Weige-Size 半径写到INCAR里,可是最后得到的DOSCAR里连每个原子的dos 都没有,只有一个总的dos.请教大家一下,这

到底是为什么,要如何设置才能得到每个原子正确的分波态密度。

应该还是要设LORBIT=11这个参数的,至于O出现d的成份,很正常,因为PAW里面O 默认的RWIGS偏大有可能把金属原子的d成份包括进去了,不过你可以把O原子所谓的p 和d画在一起看看,你会发现d相对于p来说很小,几乎可以忽略不计,而且其所在的能量范围也比p高(可能就是金属原子的d所在能量范围)。

我查了一下O的dos,发现d电子的量还是非常大,在有的能级上能和O的p电子同量级,甚至有的比p电子的量还大。

这是一个O原子的PDOS,第二个是第一个在费米能级附近的放大图

曾经尝试过手动输入RWIGS,调节O的RWIGS,当然我的体系中只含一个氧原子,调节总的DOS影响不大,且尽可能保证OUTCAR中的volume of typ 接近100%。可以消除O的D态。

至于楼主说的没有分波态密度,猜测莫非不是静态计算,因为优化过程不产生DOS。

实例7

怎样移动态密度图DOS的费米能级Ef才是正确的呢?

问题:为了同其他模型对比,计算出了晶体硅Si在gama点的态密度图,如下图所示,但老师说费米能级是错的。

计算按标准计算DOS步骤进行,经过了自洽计算->非自洽计算->DOSCAR分割,使用vdos 脚本分割DOSCAR时已经自动移动了费米能级。

可是经过这样做得到的费米能级似乎是错的,其位置应该是在红色点线附近才对。不知应该怎样移动费米能级才是正确的呢?从图中看应该移动大约2 eV左右,但这个值从哪里得到。

盼高手解答。

附:

1、晶体硅Si的计算模型图

2、V ASP计算的INCAR文件、KPOINTS文件。

INCAR文件(非自洽计算)

general:

System = Crystal Si cell

ISTART = 0 ; ICHARG=11 #自洽计算ICHARG=2; 非自洽计算ICHARG=11 PREC=Accurate

ENCUT=320

ISMEAR = 0; SIGMA = 0.1

IALGO = 48

GGA=91

ISPIN=2

VOSKOWN = 1

AMIX=0.2

BMIX=0.0001

AMIX_MAG=0.8

BMIX_MAG=0.0001

MAGMOM= 8*0

LREAL = .FALSE. #option for system contain less than 20 atoms

NPAR = 1

LWA VE = .F.

LORBIT = 1 #非自洽计算选项,计算spd分波态密度

RWIGS = 1.312

非自洽计算gama点态密度DOS时的KPOINTS文件:

K-Points

Gama

1 1 1

0 0 0

费米能级的移动是什么意思呢?

费米能级不是确定的吗?在自洽计算得到的OUTCAR文件中有的。在非自洽计算得到的OUTCAR文件中也有的。这两处得到的费米能级有些差别,有的似乎较大。

做split dos的时候,会从与DOSCAR放在一起的的OUTCAR文件中读费米能级E-fermi。然后就自动以这个费米能级为零点。

我个人觉得,费米能级算不准,不同软件,以及vasp中静态自洽和非自洽计算结果也有差别。所以有文献干脆不提费米能级,而只以价带顶为参考零点。

你的体系并不大,静态自洽的K点只取一个似乎不好,可以取7*7*7.

费米能级是否能算的准,比如费米能级是否能出现在浅受主能级与价带顶之间,或者本征绝然体带隙正中间?我没有算出来过。

1、费米能级是能够确定的。

费米能级由vdos脚本(或split_dos脚本)自动从DOSCAR中抽取出来的,然后得到上面的DOS图。

2、k点是故意选成单个gama点的。

由于我想看gama点的态密度,所以只设定了一个k点,因而k点个数是不必增加的。3、费米能级的确会算不准。

之前查看过自洽计算和非自洽计算的OUTCAR,它们的费米能级有差别,因而在作图时应该考虑自洽计算和非自洽计算费米能级的差值。

我的困惑在于,现在图中标示的费米能级是错的,应该是在大约红线的位置,可是不知怎之前的自洽计算,k点取了多少?

自洽计算时的KPOINTS文件:

K-Points

m

11 11 11

0 0 0

实例8

怎么使用DOSCAR画出DOS图形

我安装好VASP好长时间了,但是一直没有用过。这几天用别人的一个实例运行了一下,得到一些输出文件,但不知如何画DOS图。

不知道如何由输出文件DOSCAR,提取有用数据从而得到DOS图形。

请教大家:大致步骤和所用的工具。

另:我机器上安装过了Origin8.0。

好像直接可以输出DOS图!!

搜索下P4VASP 或者split-dos 软件都可以画dos

附件中的程序可以帮你处理,你用下看看

总DOS一般没多大用,一般投影到原子或轨道上更有用些。找到你要的那个原子,直接把数据拷出来,用ORIGIN画就是了

直接拷贝出来画图即可如果你既做了自旋极化,又做了轨道投影,一般DOSCAR的结构为前301行的5列是:能量值自旋向上的总态密度自旋向下的总态密度自旋向上的电子数自旋向下的电子数后面的是:能量值s-up s-down py-up py-down pz-up pz-down px-up px-down dxy-up dxy-down dyz-up dyz-down dz2 -up dz2-down dxz-up dxz-down dx2-up dx2-down 类推吧

在linux下你可以用xmgrace 或者用p4vasp先处理一下,再用xmgrace

推荐是gnuplot,可以写一个批处理文件,以后画同一类型的都可以统一画

实例9

DOSCAR分割问题

请教大家,vasp 计算的结果输出有个DOSCAR文件,用于分析态密度的我用split_dos 工具分割此文件,会出现DOS0,DOS1.........; DOS1是第一个原子的分波态密度值,其中的第一列数据是能量值,第二、三、四列数据分别对应于s、p、d态的分波态密度值.

问题出现了,我这个原子没来d轨道,竟然出现第四列,这是上面原因呢?

第4列上的数字是0么?建议你用p4vasp做DOS图,快些

我没有设LORBIT 这个参数按理应出现energy s-DOS p-DOS d-DOS 我这个原子没来d轨道,竟然出现第四列而且第四列不是0

不管算什么都会有d电子出现的。。。正常情况下d的值应该很小才对,画的时候可以忽略掉。

实例11同样情况下,不同的导出数据方法态密度怎么不一样

RT

我是将DOSCAR中的数据转换成图中黑色的线,然后用小程序spilt_dos分出DOS0后,得到图中的红线,很明显,两者像是平移了一样,我有点怀疑是菲米能级的问题,用split_dos时其费米能级用的是静态计算的OUTCAR里的,但又不是很明白,麻烦大家帮帮忙。

另外,我用split_dos分出每一个原子的态密度之后,我想知道某些个原子的态密度的共同贡献,怎么处理呢,总不能一个一个DOSi 相加吧,这工作量很大啊,不知道高手们是怎么处理的?

你的菲米能级不一样造成的,自己看DOSCAR,确定那个的菲米能级是对的吧

恩查了一下应该是DOSCAR是以真正的费米能级,而split_dos 则是以零为费米能级的。请问您试着叠加过很多原子的DOS么?不能手动相加吧

没有但是你可以徐程序相加或者通过origin,excel也行

origin怎么相加啊我的大约要相加100多个原子,而且每个原子的态密度文件中又是分S.P.D的

实例12读懂split_dos,学会linux shell编脚本处理数据

下面是处理VASP输出数据得到态密度的脚本文件split_dos,与它配合的vp没有贴出来。学习vasp如果会一些shell编程,对vasp的运用会更灵活方便。这个程序听说比较老,有些

问题,不能直接用来处理vasp4.6及以上版本的数据,也不能处理f电子。有兴趣的可以关注一下,看看语法本身,或者提出修改意见,都有BB鼓励。

:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D

#!/bin/ksh

# Script to break the VASP DOSCAR file into segments for

# each atomic site.

# JMS NRL 5/0/02

# Modified to also align the Fermi level from the ground state

# to E=0.0

# JMS NRL 6/19/02

# Executables reside here

BIN=~/bin #把这里修改为vp保存的路径。然后把split_dos的路径添加到PATH中。

if [ $# -ne 0 ]; then #直接在shell提示符下输入split_dos运行,否则提醒Usage: split_dos,返回信息2.

echo "Usage: split_dos"

exit 2

fi

# Script to split the DOSCAR file into the atomic

# projections labeled by atom number

dosfile=DOSCAR

outfile=OUTCAR

infile=INCAR

# Token for splitting the files

token=$(sed -n '6 p' $dosfile | awk '{print $1}') #这个token后面好像没有用到,有什么用呢?

# Number of points

nl=$(sed -n '6 p' $dosfile | awk '{print $3}')

# Number of atoms

natom=$(sed -n '1 p' $dosfile | awk '{print $1}')

# Get the Fermi level if the OUTCAR file is present,

# else we set it to zero.

if [ -a $outfile ]; then

echo "The" $outfile "exists, we use it to get the Fermi level,"

echo "the RWIGS tag and the number of spins."

efermi=$(grep "E-fermi" $outfile | tail -1 | awk '{print $3}')

echo "Fermi level:" $efermi

nspin=$(grep "ISPIN" $outfile | tail -1 | awk '{print $3}')

if [ $nspin -eq 2 ]; then

echo "Spin polarized calculation"

else

echo "Unpolarized calculation"

fi

# 2.a

# JMS 2/3/03 Modified to accept specification by LORBIT token.

#

lorbit=$(grep "LORBIT" $outfile | tail -1 | awk '{print $3}')

if [ $lorbit -ge 10 ]; then

echo "LORBIT > 10"

echo "WARNING: not completely test for vasp.4.*"

echo "Use at your own risk. Please check results for consistency."

form=1

else

# 2.a

rwigs=$(grep "RWIGS" $outfile | tail -1 | awk '{print $3}' | sed 's/\.//g')

if [ $rwigs -eq -100 ]; then

echo "RWIGS token not set"

form=0

else

echo "RWIGS token set"

form=1

fi

# 2.a

fi

# 2.a

else

echo "The" $outfile "does not exist, we set the Fermi level to 0"

echo "assume an unpolarized calculation, and RWIGS not set"

form=0

nspin=1

efermi=0.0

fi

# If the outcar file is not present and you wish to set something by hand

# you should do it here. Uncomment the tokens below and set them by hand.

#efermi=2.255

#form=

#nspin=

# Get the atomic coordinates

$BIN/vp >| tmp.dat

tail -$natom tmp.dat | awk '{printf "%s %12.8f %12.8f %12.8f \n", "#", $2, $3, $4}' >| tmp.dat2

# Total is first DOS

if [ $form -eq 0 ]; then #这个很怪,为什么不直接i=0呢?

i=0

else

i=0

fi

start=7

end=$((start+nl-1))

#echo $start $end

#exit 0

rm -f DOS0

if [ $form -eq 1 ]; then

while [ $i -le $natom ]; do

#echo $i $start $end

if [ $i -gt 0 ]; then

sed -n ''$i' p' tmp.dat2 >| DOS$i #读入对应原子位置坐标到DOSi 第一行

if [ $i -gt 0 ]; then

# Atomic projected DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i

fi

else

# Total DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i

fi

fi

start=$((end+2))

end=$((start+nl-1))

i=$((i+1))

done

else

while [ $i -le 0 ]; do #这个奇怪,为什么要讨论i<0呢?不是只需考虑i>=0吗?前面已经全部包含了的呀?

#echo $i $start $end

if [ $i -gt 0 ]; then

sed -n ''$i' p' tmp.dat2 >| DOS$i

if [ $i -gt 0 ]; then

# Atomic projected DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i

fi

else

# Total DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i

fi

fi

start=$((end+2))

end=$((start+nl-1))

i=$((i+1))

done

fi

exit 0

你自己用fortran写个都比这个简单多了.

呵呵,想学学linux的shell编程,觉得shell编程比fortran好用呢。不过我不是反对fortran 编程。

而是想通过这个来看看它处理数据的思路,这样用改用fortran也容易些。

这个split_dos不包括f电子。而且看起来比较古老,跟真实的DOSCAR的格式有出入。

比如我的DOSCAR,

(1)ISPIN=2, LORBIT=11,对于不含f电子的体系,

DOSCAR site projected DOS有19列数字,分别是

energy, s(+/-),Px(+/-),Py(+/-),Pz(+/-),D1(+/-),D2(+/-).D3(+/-).D4(+/-),D5(+/-);

(2)ISPIN=2,LORBIT=11,含有f电子的体系有33列数字。在以上19列数字后再添加7个f 的上下选(14个)。

(3)ISPIN=1,LORBIT=11,则上下旋合并,不含f电子的体系有10列数字,分别是:energy,s,Px,Py,Pz,D1,D2,D3,D4,D5.

(4)ISPIN=1,LORBIT=11,含有f电子的体系,增加7f电子,共17列数组。

这四种情况,没有一种是现在列出的split_dos可以处理的。

比如,对于情况(1),要得到sLDOS的O2p上旋态密度,是不是要把Px+Py+pz;而下旋态密度为Px(-)+Py(-)+Pz(-)?

是的,需要都加起来.但是vasp提供了一个参数可以直接给出s,p,d而不是px,py...值.

我也是改的这个脚本,把其中处理数据列的部分增加后用于提取包含20列数据,即到d电子所有轨道的DOSCAR,要处理f电子的话,增加提取并输出的列数就可以了。

shell编程的优势我认为在于格式化读入和输出,语句很简洁而且功能强大,但是不适合用来做运算。我原来试过用shell写态密度相加的程序,但是运行起来非常非常的慢,所以后来我用C语言写了处理态密度的程序。

我的输入法不是很好所以经常有错别字,抱歉,发现请告知

下面开始了:

#!/bin/ksh

#ksh是linux下面的一种shell,指定shell类型。另一个常用的shell是bash。有些系统默认是bash而没有安装ksh,运行这个脚本就会出错。

# Script to break the VASP DOSCAR file into segments for

# each atomic site.

# JMS NRL 5/0/02

# Modified to also align the Fermi level from the ground state

# to E=0.0

# JMS NRL 6/19/02

#注释信息。split_dos是JMS NRL发布的处理VASP输入输出文件的脚本包中的一个。

# Executables reside here

#BIN=~/bin

#这里可以通过设置执行文件的位置,也可以设置PATH环境变量,例如:

#export PATH=$PATH: (vp和split_dos所在的文件夹)

# GH: replace this so that it looks for vp in the same directory as this script

EXE=$0

#$0即这个脚本split_dos,是完整路径

BIN=${EXE%/*}

#变量替换,获得split_dos所在的文件夹。%表示从后往前处理字符串EXE,删除匹配"/*"正则表达式的部分,在bash下面试试你就知道了。

if [ $# -ne 0 ]; then

echo "Usage: split_dos"

exit 2

fi

#$#表示跟在split_dos的参数个数。split_dos是不带参数的,所以如果$#!=0说明输入错误,停止程序。

# Script to split the DOSCAR file into the atomic

# projections labeled by atom number

dosfile=DOSCAR

outfile=OUTCAR

infile=INCAR

#定义输入文件

# Token for splitting the files

token=$(sed -n '6 p' $dosfile | awk '{print $1}')

#这样得到的是DOSCAR中的最高能量值

#|是管道,把左边的命令的输出输出给右边的命令作为输入。

#sed的作用是输入第六行,p表示答应,-n选项是不输出其他行(默认会打印整个文件)。#awk就是把文件分割成很多列,$1表示第一列,print就是输出第一列。可以通过数学表达式对输出的列进行计算,例如:print $1^2,表示输出平方。

#sed 和awk是很强大的文本和字符串处理工具,功能没有perl强大但是方便快捷,适合在shellscript中用。强烈建议学习一下基本用法。

# Number of points

nl=$(sed -n '6 p' $dosfile | awk '{print $3}')

#得到DOSCAR中的分立能量值,即最高到最低中多少个能量,也就是有多少行要处理。

# Number of atoms

natom=$(sed -n '1 p' $dosfile | awk '{print $1}')

#原子个数,最后会得到多少DOS文件取决于这个数。

# Get the Fermi level if the OUTCAR file is present,

# else we set it to zero.

if [ -a $outfile ]; then

#如果存在OUTCAR,如下处理

echo "The" $outfile "exists, we use it to get the Fermi level,"

echo "the RWIGS tag and the number of spins."

efermi=$(grep "E-fermi" $outfile | tail -1 | awk '{print $3}')

#获取Fermi能

#grep是一个基本而强大的搜索文本的工具(不是shell自带),可以输出文本中匹配正则表达式的行。

#tail表示输出文件的末尾。-1表示最后一行,-10就表示最后10行(默认)。

echo "Fermi level:" $efermi

nspin=$(grep "ISPIN" $outfile | tail -1 | awk '{print $3}')

#判断是否有自旋

if [ $nspin -eq 2 ]; then

echo "Spin polarized calculation"

else

echo "Unpolarized calculation"

fi

# 2.a

# JMS 2/3/03 Modified to accept specification by LORBIT token.

#

lorbit=$(grep "LORBIT" $outfile | tail -1 | awk '{print $3}')

#获取LORBIT的值

if [ $lorbit -eq 10 ]; then

echo "LORBIT = 10"

echo "WARNING: not completely test for vasp.4.*"

echo "Use at your own risk. Please check results for consistency."

form=1

elif [ $lorbit -eq 11 ];then

echo "LORBIT = 11"

echo "WARNING: not completely test for vasp.4.*"

echo "Use at your own risk. Please check results for consistency."

form=2

else

#不同的LORBIT采用不同的处理,有form这个变量标志。

# 2.a

rwigs=$(grep "RWIGS" $outfile | tail -1 | awk '{print $3}' | sed 's/\.//g')

#获取所谓的wig半径

if [ $rwigs -eq -100 ]; then

echo "RWIGS token not set"

form=0

else

echo "RWIGS token set"

form=1

fi

fi

# 2.a

else

#如果没有OUTCAR,那就自己设置一些参数:非自旋极化计算,费米能为0.

echo "The" $outfile "does not exist, we set the Fermi level to 0"

echo "assume an unpolarized calculation, and RWIGS not set"

form=0

nspin=1

efermi=0.0

fi

# If the outcar file is not present and you wish to set something by hand

# you should do it here. Uncomment the tokens below and set them by hand.

#这里是如果你要多次处理一些文件,同时又没有OUTCAR文件那么可以在这里设置费米能。

#efermi=2.255

#form=

#nspin=

# Get the atomic coordinates

$BIN/vp >| tmp.dat

tail -$natom tmp.dat | awk '{printf "%s %12.8f %12.8f %12.8f \n", "#", $2, $3, $4}' >| tmp.dat2

#调用vp从POSCAR中获得原子的位置,然后用tail和awk获得具体的原子坐标,并且前面加上#,方便后面gnuplot画图。

#>表示重新定向,把本来vp输出到终端的结果输出到文件tmp.dat中

#使用>要注意,如果只是附加而不是新建那么必须用>>而非>

#除此之外,>是这样的工作的,它会左右两边的命令同时运行(只是一个直接运行而一个等待输入)而不是等一个运行完之后才运行第二个。所以不要执行这种命令:cat a.txt > a.txt,这样你只会得到一个空白文件,因为>在cat的时候同时创建了a.txt空白文件等待输入同时就把原来的a.txt覆盖掉了,所以cat a.txt就只是空白,重新定向输入到a.txt也就是空白。

# Total is first DOS

i=0

#之前的if语句没有用,是因为之前的修改而留下的冗余语句。

#这个i是标记第几个原子的变量。

start=7

end=$((start+nl-1))

#从第7行到第end行开始输出DOS

echo $start $end

#exit 0

rm -f DOS0

if [ $form -eq 1 ]; then

#LORBIT=10

while [ $i -le $natom ]; do

#输入所有的原子,用while语句实现:i小于原子数,那么输出

echo $i $start $end

if [ $i -gt 0 ]; then

#并非totalDOS,那么在第一行中加入原子位置,输出到DOS$i文件

sed -n ''$i' p' tmp.dat2 >| DOS$i

fi

if [ $i -gt 0 ]; then

# Atomic projected DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i

#如果是自旋计算,那么就按格式输出,并且把自旋朝下的乘以-1,方便后面画图。

#sed指定输出从start到end的行,awk指定输出格式并且做能量的处理(平移费米能到零点)

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i

#没有自旋就简单多了,只需要平移就可以了。

fi

else

# Total DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i

fi

#对totaldos的处理

fi

start=$((end+2))

end=$((start+nl-1))

i=$((i+1))

移动到下一个原子的输出,只需要控制start和end就可以了,并且修改i的大小。

done

elif [ $form -eq 0 ];then

# the form=0 is an unkown code!

while [ $i -le 0 ]; do

#这里-le应该换成-eq也可以,也即是说等于0就是totaldos就不输出原子坐标了。

echo $i $start $end

if [ $i -gt 0 ]; then

sed -n ''$i' p' tmp.dat2 >| DOS$i

fi

if [ $i -gt 0 ]; then

# Atomic projected DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i

fi

else

# Total DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i

fi

start=$((end+2))

end=$((start+nl-1))

i=$((i+1))

done

#以上都是和form=1是一样的

elif [ $form -eq 2 ];then

#这里是我处理的LORBIT=11的时候加入的。主要是修改awk的输出格式while [ $i -le $natom ]; do

echo $i $start $end

if [ $i -gt 0 ]; then

sed -n ''$i' p' tmp.dat2 >| DOS$i

fi

if [ $i -gt 0 ]; then

# Atomic projected DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7,$8,-1*$9,$10,-1*$11,$12,-1*$13,$14,-1*$15,$16,-1*$17,$18,-1*$19}' >> DOS$i #这里是要命的awk输出,其实就长一点,格式没有什么困难。

#这里的问题是不论是原子,都会输出这么长的一串,即使没有d,f轨道,但都是0.这是VASP的问题,不是这个脚本的问题。

else

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4,$5,$6,$7,$8,$9,$10 }' >> DOS$i

fi

else

# Total DOS

if [ $nspin -eq 2 ]; then

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i

sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i

fi

fi

start=$((end+2))

end=$((start+nl-1))

i=$((i+1))

done

#其他的都没有什么需要改的了

fi

exit 0

#这里停止程序并给出一个0的状态符,是个好的习惯,方便别人调用的脚本的时候判断这个脚本是否正常运行结束了。

#最后是shellscript和python,perl的对比

#不得不说perl,python的功能更加强大,但是shellscript更容易学和容易编写

#因为shellscipt就是把我们在命令行下面的输入的命令直接合在一起就可以了,而不需要调用库文件和编译之类;同时我们很多时候都用shell命令,对这些命令更加熟悉,在编写的时候也容易把握。

#有很多命令都可以在shell下面直接尝试,调好之后就直接放在shellscript就可以了。(我经常是这么干的……)

#shellscript就像把我们日常的话整理一下放在一起就发表的文章,而python,perl有专门的语法而要求,就像规范的文章.所以前者要容易写的多,后者如果不是经常写容易出错。

#由于shellscipt是没有编译的和优化的,所以效率会低;同时由于没有编译,所以没有整体的检查,所以bug会隐蔽(当然语法错误在运行的时候还是会提醒的)。而且由于很多管道和正则,所以shellscript的可读性并不是很好。而且shellscript的依赖性很强,不好移植。所以不要用shellscript写大程序,特别是计算量很大的程序。很多时候,shellscript是方便快捷的"dirty"处理。

#计算量大的程序,用fortran;处理大量文档和文本,用python或perl。

我的输入法不是很好所以经常有错别字,抱歉,发现请告知

PROCAR给出的信息非常多,但是和DOSCAR不一样,没有可比性。DOSCAR是给出态密度,而PROCAR是给出每个K点上面的每个能级的组合成分

实例13

关于VASP计算PDOS的疑问

小弟刚学VASP在计算完TDOS和PDOS之后,不知道怎么将DOS图画出来。后来找了个dos-procar.f的小脚本,不知道对不对。在处理之后得到的结果看不懂,以O原子为例:本

vasp 安装心得

VASP5.2安装心得 2014-05-07 来源:小木虫作者: yysskk 花了五天时间终于学会怎么装VASP了,在此写下心得体会,供后人参考。个人觉得最难的一步就是makefile文件,网上流传着各种各样的版本,每个人都说自己编译成功了,却又各不相同,也说不清为什么,给新手极大的困扰。在此会详细介绍makefile的文件结构。其余大部分内容都是参考前人的,就不一一注明出处了。 一、系统、编译程序及准备工作 我用的是centos6.5+icc2011+ifort2011+openmpi1.6.5 1.1编译器安装 系统安装不说了,网上教程多得是。Icc和ifort可以申请免费非商业版本,icc和ifort都各自带了一个MKL,使用的时候别搞混了。装2011的时候会缺组件,用yum都可以免费下载。装编译器的时候会要求关闭selinux,按照给出的步骤关闭即可。之后会说系统不兼容,但是可以继续装,默认安装路径是在/opt下面。装完之后会有提示,把安装目录 /bin/ifortvars.sh 写到环境变量中,注意32/64位系统的参数不一样。C语言编译器建议用icc,毕竟是intel出品,针对自家cpu肯定有大量优化,效率上高于gcc是肯定的。这是装完之后的提示: For csh/tcsh: $ source install-dir/bin/compilervars.csh intel64 For bash: $ source install-dir/bin/compilervars.sh intel64 To invoke the installed compilers:

vasp并行总结 安装

一、安装vasp前的软件要求: ①C++编译器用intel的(l_cprof_p_11.1.07) ②Fortran编译器用intel的ifort11(l_cprof_p_11.1.072) ③l_mpi_p_3.2.011 ④MKL 有非商业版本可以免费下载,本来要用l_mkl_p_10.2.5.035的,但发现ifort11里/home/bjwang/intel/Compiler/11.1/072/mkl就有,这里免装,在.bashrc里把ifort11下mkl的路径包括进去。 附完整安装后的.bashrc source /home/bjwang/intel/Compiler/11.1/072/bin/intel64/ifortvars_intel64.sh---ifort source /home/bjwang/intel/Compiler/11.1/073/bin/intel64/iccvars_intel64.sh ---c++ export LD_LIBRARY_PATH=/home/bjwang/intel/Compiler/11.1/072/ifort/mkl/lib/em64t/:$LD_LIBRA RY_PATH ------ifort中包含的mkl source /home/bjwang/intel/impi/3.2.0.011/bin64/mpivars.sh --------l_mpi 请确认mpi、C++、Fortran编译器都已正确安装,并设定好相关的PATH路径和 LD_LIBRARY_PATH路径,具体参见新浪博客的其它相关内容。 示意如下:

VASP使用总结

VASP计算的理论及实践总结 一、赝势的选取 二、收敛测试 1、VASP测试截断能和K 点 2、MS测试 三、结构弛豫 四、VASP的使用流程(计算性质) 1、VASP的四个输入文件的设置 2、输出文件的查看及指令 3、计算单电能 (1) 测试截断能 (2) 测试K点 4、进行结构优化 5、计算弹性常数 6、一些常用指令

一、赝势的选取 VASP赝势库中分为:PP和PAW两种势,PP又分为SP(标准)和USPP(超软)。 交换关联函数分为:LDA(局域密度近似)和GGA(广义梯度近似)。GGA 又分为PW91和PBE。 在VASP中,其中pot ,pot-gga是属于超软势(使用较少)。Paw, paw-pbe ,和paw-gga是属于PAW。采用较多的是PAW-pbe 和PAW-gga。 此外vasp 中的赝势分为几种,包扩标准赝势(没有下标的)、还有硬(harder)赝势(_h)、软(softer)赝势(_s), 所谓的硬(难以赝化),就是指该元素原子的截断动能比较大,假想的势能与实际比较接近,计算得到的结果准确,但比较耗时,难以收敛。软(容易赝化),表示该元素原子的截断动能比较小,赝势模型比较粗糙,但相对简单,可以使计算很快收敛(比如VASP开发的超软赝势)。即硬的赝势精度高,但计算耗时。软的精度低,容易收敛,但节省计算时间。 另一种情况:如Gd_3,这是把f电子放入核内处理,对于Gd来说,f电子恰好半满。所以把f电子作为价电子处理的赝势还是蛮好的(类似还有Lu,全满)。(相对其他的4f元素来说,至于把f电子作为芯内处理,是以前对4f元素的通用做法。计算结果挺好) 常用的做法是:用两种赝势测试一下对自己所关心的问题的影响情况。在影响不大的情况下,选用不含4f电子的赝势(即后缀是3),一来减少计算量,二来避免DFT对4f电子的处理。 【1.赝势的选择: vasp的赝势文件放在目录~/vasp/potentials 下,可以看到该目录又包含五个子目录pot pot_GGA potpaw potpaw_GGA potpaw_PBE ,其中每一个子目录对应一种赝势形式。

最新VASP磁性计算总结篇

以下是从VASP在线说明书整理出来的非线性磁矩和自旋轨道耦合的计算说明。非线性磁矩计算: 1)计算非磁性基态产生WAVECAR和CHGCAR文件。 2)然后INCAR中加上 ISPIN=2 ICHARG=1 或11 !读取WAVECAR和CHGCAR文件 LNONCOLLINEAR=.TRUE. MAGMOM= 注意:①对于非线性磁矩计算,要在x, y 和z方向分别加上磁矩,如MAGMOM = 1 0 0 0 1 0 !表示第一个原子在x方向,第二个原子的y 方向有磁矩 ②在任何时候,指定MAGMOM值的前提是ICHARG=2(没有WAVECAR和CHGCAR 文件)或者ICHARG=1 或11(有WAVECAR和CHGCAR文件),但是前一步的计算是非磁性的(ISPIN=1)。 磁各向异性能(自旋轨道耦合)计算: 注意:LSORBIT=.TRUE. 会自动打开LNONCOLLINEAR= .TRUE.选项,且自旋轨道计算只适用于PAW赝势,不适于超软赝势。 自旋轨道耦合效应就意味着能量对磁矩的方向存在依赖,即存在磁各向异性能(MAE),所以要定义初始磁矩的方向。如下: LSORBIT = .TRUE. SAXIS = s_x s_y s_z(quantisation axis for spin) 默认值:SAXIS=(0+,0,1),即x方向有正的无限小的磁矩,Z方向有磁矩。 要使初始的磁矩方向平行于选定方向,有以下两种方法: MAGMOM = x y z ! local magnetic moment in x,y,z SAXIS = 0 0 1 ! quantisation axis parallel to z or MAGMOM = 0 0 total_magnetic_moment ! local magnetic moment parallel to SAXIS (注意每个原子分别指定) SAXIS = x y z !quantisation axis parallel to vector (x,y,z),如 0 0 1 两种方法原则上应该是等价的,但是实际上第二种方法更精确。第二种方法允许读取已存在的WAVECAR(来自线性或者非磁性计算)文件,并且继续另一个自旋方向的计算(改变SAXIS 值而MAGMOM保持不变)。当读取一个非线性磁矩计算的WAVECAR时,自旋方向会指定平行于SAXIS。

vaspkit.014安装使用说明

vaspkit-0.14 修正版发布 安装下载指南 1、下载网址: https://www.wendangku.net/doc/e75136722.html,/downloads221/sourcecode/unix_linux/detail1038949.html (免费的) 2、利用xshell将软件包拷到系统中,建立文件夹vaspkit。 3、在gunzip vaspkit-0.14.tar.gz等到vaspkit-0.14.tar,再tar –xvf vaspkit-0.14.tar得到文件 夹vaspkit-0.14。 4、进入vaspkit-0.14文件夹,cat INSTALL,发现 Just do one thing: make Then you will get vaspkit program.然后退出,在vaspkit-0.14目录下输入make命令,得到vaspkit 可执行文件。 5、再将vaspkit文件分别拷到需要进行计算的文件下进行计算即可,输入./vasokit出现如下的运行页面。按照需要输入不同的数字即可。 相信很多人都为vasp计算结果的处理感到很头痛,网上虽然有很多处理vasp计算结果的软件或者脚本,不过要么只针对于某一个问题,要么使用不太友好。为此,我弄了一个软件包,把结构可视化,提取态密度,能带,电荷,自旋密度等数据等功能整合到一个软件包里,方便大家的使用。由于时间有限,我只花了两天时间做得,所以vaspkit工具包比较粗糙,而且有很多bug, 目前只实现最基本的功能。由于vaspkit 目前处于测试阶段,要不断的更新,所以不上传到论坛了。感兴趣的朋友可以到下载。希望大家能提出宝贵的意见以及需要增加的功能。同时,我们希望对vaspkit感兴趣的朋友一起加入并不断地增加功能,让vaspkit能成为一个很强大的数据处理工具。在此,特别感谢论坛版主csfn, foxhunter, 语过添情以及蓝等朋友的支持。 当前版本:0.14 . 1,修正若干bug; 2,增加输出xsf格式结构文件; 3,增加输出DOS积分; 4,增加提取指定原子指定轨道的能带数据. 主要功能有: 1,把POSCAR 或者CONTCAR转化为cif或xsf格式。 2,提取电荷,自旋密度,使用vesta软件可视化。 3,提取总,投影态密度数据; 4,提取总,投影能带数据。 期待增加功能: 1,增加计算差分电荷数据; 2,xsf格式电荷密度。 文件输出格式: 1,结构可视化文件输出文件为poscar.cif 或contcar.cif, 用MS, VESTA或其它可视化软件软件打开;2,总态密度输出文件为tdos.dat, 偏态密度文件为pdos.dat, 使用origin或gnuplot绘制。 3,能带数据输出文件名为band-x.dat . 同样使用origin或gnuplot绘制。 4,电荷和自旋密度输出文件名分别为chgden.dat 和spnden.dat, 用VESTA打开。注意同时把OUTCAR

VASP安装说明(简单易懂)

VASP安装说明(简单易懂) 1.安装linux 由于不熟悉linux的操作,所以很多问题无法解决,所以直接在windows下面安装了虚拟机然后安装linux操作系统。 (1) 虚拟机的安装 我所使用的是VMware,安装过程同普通的windows下软件的安装。下载地址:www.https://www.wendangku.net/doc/e75136722.html,或者www.https://www.wendangku.net/doc/e75136722.html, (2) VMware配置linux,过程如下: a)选择File菜单下的“New Virtual Machine”出现新虚拟机向导后单击“下一步” 选择“Typical”典型安装。 b)再单击“下一步”,在选择操作系统界面的“Guest Operation System”中选择 “Linux”,然后单击Version对应的下拉菜单选择具体的Linux版本,此处我选择的是“Red Hat Linux”。 c)单击“下一步”进入安装目录选择界面。该界面上面的文本框是系统的名字,保持默认值即 可,下面的文本框需要选择虚拟机操作系统的安装位置。 d)根据需要选择好后,单击“下一步”按钮,出现设置虚拟机内存大小的界面。Linux9.O对 内存的要求是:文本模式至少需要64MB;图形化模式至少需要

128MB,推荐使用192MB。我选 择的是192MB。 e)单击“下一步”按钮进入网络连接方式选择界面。VMware有四种网络设置方式,一般来说, Bridged方式使虚拟机就像网络内一台独立的计算机一样,最为方便好用(四种连网方式的区 别可参考VMware的有关资料)。此处我选择Brided方式。 f)单击“下一步”按钮进入虚拟磁盘的设置界面。这里有三种方式(Create a new virtual disk、Use an existing virtual disk、Use a physical disk)可供选 择、建议初学者选择“Create a new Virtual disk”,其含义是新建一个虚拟磁盘,该 虚拟磁盘只是主机下的一个独立文件。 g)在“下一步”中设置磁盘大小。在此、我们采用默认的4GB。 h)单击“下一步”进入文件存放路径选择界面。 在此界面可单击Browse按钮进行设置。此处我们使用默认值,单击“完成”按钮。 至此,完成一个虚拟机的配置。 (2) VMware下linux的安装 安装前需做好准备工作:购买一套Red Hat Linux 9.0的安装盘,共三张。或下载Red Hat Linux 9.0安装所需要的三个

CTI平台软件安装说明

CTI平台软件安装说明

目录 1 安装SFU (5) 1.1安装文件释放 (5) 1.2 安装过程 (6) 1.2.1 安装执行 (6) 1.2.2 填写用户信息 (6) 1.2.3 软件协议签订 (7) 1.2.4 安装方式选择 (7) 1.2.5 组件选择 (8) 1.2.6 安全设置 (8) 1.2.7 映射方式选择 (9) 1.2.8 映射文件选择 (9) 1.2.9 安装目录选择 (10) 1.2.10 安装过程 (10) 1.2.11 安装完成 (11) 1.3 配置过程 (11) 1.3.1 检查启动服务 (11) 1.3.2 Configuration配置 (11) 1.3.3 Maps配置 (12) 1.3.4 保存配置 (14) 1.4 安装完成 (15) 2配置SFU (15) 2.1设置SFU服务器共享目录 (15) 2.2设置windows访问权限 (16) 2.3创建座席录音子目录 (18) 2.3.1 检查子目录的windows权限 (19) 2.4设置rt-sc的nfs共享路径 (19) 2.5检查sfu服务器nfs共享是否生效 (20) 2.5.1 通过交换机来检查 (20) 2.5.2 通过vasp来检查 (21) 3 SFU服务器上安装JDK、TOMCAT (21) 3.1 安装JDK (21) 3.2 安装TOMCA T (21) 4安装ccmp (23) 4.1 SFU服务器上安装ccmp (23) 4.2 CCMP配置 (23) 4.3 配置数据库IP地址 (23) 4.4 配置录音路径 (23) 5 安装vasptools (24) 5.1 SFU服务器上安装vasptools (24) 5.2 V ASPTOOLS配置 (24) 5.3 系统管理配置 (25) 6安装PCMPlayer (25)

VASP遇到小总结问题

VASP 计算的过程遇到的问题 01、第一原理计算的一些心得 (1)第一性原理其实是包括基于密度泛函的从头算和基于Hartree-Fock自洽计算的从头算,前者以电子密度作为基本变量(霍亨伯格-科洪定理),通过求解Kohn-Sham方程,迭代自洽得到体系的基态电子密度,然后求体系的基态性质;后者则通过自洽求解Hartree-Fock方程,获得体系的波函数,求基态性质; 评述:K-S方程的计算水平达到了H-F水平,同时还考虑了电子间的交换关联作用。 (2)关于DFT中密度泛函的Functional,其实是交换关联泛函 包括LDA,GGA,杂化泛函等等 一般LDA为局域密度近似,在空间某点用均匀电子气密度作为交换关联泛函的唯一变量,多数为参数化的CA-PZ方案; GGA为广义梯度近似,不仅将电子密度作为交换关联泛函的变量,也考虑了密度的梯度为变量,包括PBE,PW,RPBE等方案,BL YP泛函也属于GGA; 此外还有一些杂化泛函,B3L YP等。 (3)关于赝势 在处理计算体系中原子的电子态时,有两种方法,一种是考虑所有电子,叫做全电子法,比如WIEN2K中的FLAPW方法(线性缀加平面波);此外还有一种方法是只考虑价电子,而把芯电子和原子核构成离子实放在一起考虑,即赝势法,一般赝势法是选取一个截断半径,截断半径以内,波函数变化较平滑,和真实的不同,截断半径以外则和真实情况相同,而且赝势法得到的能量本征值和全电子法应该相同。 赝势包括模守恒和超软,模守恒较硬,一般需要较大的截断能,超软势则可以用较小的截断能即可。另外,模守恒势的散射特性和全电子相同,因此一般红外,拉曼等光谱的计算需要用模守恒势。 赝势的测试标准应是赝势与全电子法计算结果的匹配度,而不是赝势与实验结果的匹配度,因为和实验结果的匹配可能是偶然的。 (4)关于收敛测试 (a)Ecut,也就是截断能,一般情况下,总能相对于不同Ecut做计算,当Ecut增大时总能变化不明显了即可;然而,在需要考虑体系应力时,还需对应力进行收敛测试,而且应力相对于Ecut的收敛要比总能更为苛刻,也就是某个截断能下总能已经收敛了,但应力未必收敛。 (b)K-point,即K网格,一般金属需要较大的K网格,采用超晶胞时可以选用相对较小的K网格,但实际上还是要经过测试。 (5)关于磁性 一般何时考虑自旋呢?举例子,例如BaTiO3中,Ba、Ti和O分别为+2,+4和-2价,离子全部为各个轨道满壳层的结构,就不必考虑自旋了;对于BaMnO3中,由于Mn+3价时d 轨道还有电子,但未满,因此需考虑Mn的自旋,至于Ba和O则不必考虑。其实设定自旋就是给定一个原子磁矩的初始值,只在刚开始计算时作为初始值使用,具体的可参照磁性物理。 (6)关于几何优化 包括很多种了,比如晶格常数和原子位置同时优化,只优化原子位置,只优化晶格常数,还有晶格常数和原子位置分开优化等等。

vasp编译

(1)准备 1. sudo apt-get install g++ sudo apt-get install build-essential sudo apt-get install gcc-multilib sudo apt-get install libstdc++5 sudo apt-get install openjdk-6-jre-headless sudo apt-get install ia32-libs sudo apt-get install lib32stdc++6 sudo apt-get install libc6-dev-i386 sudo apt-get install g++-multilib sudo apt-get install gfrotran 1 2 3 tar -2. xzvf xxx #xxx 指压缩包的名称 cd 解压后目录 ./install.sh ##########安装过程很简单,安装提示就行######## 安装完成后,修改环境变量 1 vi ~/.bashrc 在末尾添加 source /opt/intel/bin/compilervars.sh intel64 (64位版本) source /opt/intel/bin/compilervars.sh ia32 (32位版本) 1 source ~/.bashrc 4. 编译mpi 首先下载mpich2的安装文件 1 2 3 4 5 6 tar mpich2压缩包 cd 文件夹 ./configure --prefix=安装目录 f77=ifort f90=ifort fc=ifort make make install vi ~/.bashrc 笔者安装目录在/opt/mpich2,也可以放在其他文件夹中,注意执行make install 用户需要有写入权限 在文件最后写入如下代码 1 2 3 4 #mpi2 start PATH=/usr/local/mpich2-1.2.1p1/bin:$PATH export PATH #mpi2 end 再source 一下 1 source ~/.bashrc 5.编译fftw

vasp常见问题

最近在学vasp,这篇文章是百度文库找到的,看了不错,转载一把。另外附上vasp程序,linux中下载后无须安装即可使用。单机中可能会出现内存溢出问题,可以放机群上使用。 01、第一原理计算的一些心得 (1)第一性原理其实是包括基于密度泛函的从头算和基于Hartree-Fock自洽计算的从头算,前者以电子密度作为基本变量(霍亨伯格-科洪定理),通过求解Kohn-Sham方程,迭代自洽得到体系的基态电子密度,然后求体系的基态性质;后者则通过自洽求解Hartree-Fock方程,获得体系的波函数,求基态性质;评述:K-S方程的计算水平达到了H-F 水平,同时还考虑了电子间的交换关联作用。 (2)关于DFT中密度泛函的Functional,其实是交换关联泛函,包括LDA,GGA,杂化泛函等等一般LDA为局域密度近似,在空间某点用均匀电子气密度作为交换关联泛函的唯一变量,多数为参数化的CA-PZ方案;GGA为广义梯度近似,不仅将电子密度作为交换关联泛函的变量,也考虑了密度的梯度为变量,包括PBE,PW,RPBE等方案,BL YP泛函也属于GGA;此外还有一些杂化泛函,B3L YP等。(3)关于赝势在处理计算体系中原子的电子态时,有两种方法,一种是考虑所有电子,叫做全电子法,比如WIEN2K中的FLAPW方法(线性缀加平面波);此外还有一种方法是只考虑价电子,而把芯电子和原子核构成离子实放在一起考虑,即赝势法。 一般赝势法是选取一个截断半径,截断半径以内,波函数变化较平滑,和真实的不同,截断半径以外则和真实情况相同,而且赝势法得到的能量本征值和全电子法应该相同。赝势包括模守恒和超软,模守恒较硬,一般需要较大的截断能,超软势则可以用较小的截断能即可。另外,模守恒势的散射特性和全电子相同,因此一般红外,拉曼等光谱的计算需要用模守恒势。 赝势的测试标准应是赝势与全电子法计算结果的匹配度,而不是赝势与实验结果的匹配度,因为和实验结果的匹配可能是偶然的。(4)关于收敛测试(a)Ecut,也就是截断能,一般情况下,总能相对于不同Ecut做计算,当Ecut增大时总能变化不明显了即可;然而,在需要考虑体系应力时,还需对应力进行收敛测试,而且应力相对于Ecut的收敛要比总能更为苛刻,也就是某个截断能下总能已经收敛了,但应力未必收敛。(b)K-point,即K网格,一般金属需要较大的K网格,采用超晶胞时可以选用相对较小的K网格,但实际上还是要经过测试。(5)关于磁性一般何时考虑自旋呢?举例子,例如BaTiO3中,Ba、Ti和O分别为+2,+4和-2价,离子全部为各个轨道满壳层的结构,就不必考虑自旋了;对于BaMnO3中,由于Mn+3价时d轨道还有电子,但未满,因此需考虑Mn的自旋,至于Ba和O则不必考虑。其实设定自旋就是给定一个原子磁矩的初始值,只在刚开始计算时作为初始值使用,具体的可参照磁性物理。(6)关于几何优化包括很多种了,比如晶格常数和原子位置同时优化,只优化原子位置,只优化晶格常数,还有晶格常数和原子位置分开优化等等。在PRL一篇文章中见到过只优化原子位置,晶格常数用实验值的例子(PRL 100, 186402 (2008));也见到过晶格常数先优化,之后固定晶格常数优化原子位置的情况;更多的情况则是Full geometry optimization。 一般情况下,也有不优化几何结构直接计算电子结构的,但是对于缺陷形成能的计算则往往要优化。(7)关于软件软件大致分为基于平面波的软件,如CASTEP、PWSCF 和ABINIT等等,计算量大概和体系原子数目的三次方相关;还有基于原子轨道线性组合的软件(LCAO),比如openmx,siesta,dmol等,计算量和体系原子数目相关,一般可模拟较多原子数目的体系。 V ASP是使用赝势和平面波基组,进行从头量子力学分子动力学计算的软件包,它基于CASTEP1989版开发。V AMP/V ASP中的方法基于有限温度下的局域密度近似(用自由能作

VASP5.3.5并行版详细安装教程

vasp5.3.5安装教程 制作者:甄江苏(湘潭大学材料科学与工程学院)1.安装Intel编译器: 。。。。。。。。 然后添加环境变量,在/etc/profile文件中最下面插入: source /opt/intel/composer_xe_2015.2.164/bin/ifortvars.sh intel64 source /opt/intel/composer_xe_2015.2.164/mkl/bin/mklvars.sh intel64 然后在终端执行: [root]# source /etc/profile 这里提供的安装包会把其他的Intel的组件包括并行编译器也安装上,但是后面不用它的mpirun这个命令,而是用mpich的mpirun命令,所以进入/opt/intel/composer_xe_2015.2.164/文件夹,把文件夹mpirt改名,让它的路径失效,比如改成mpirt11111。 此外,安装完后后,最好把licence文件放到安装目录里,Intel编译器指定的license 存放目录之一是/opt/intel/composer_xe_2015.2.164/license/这个文件夹,这个文件夹要自己新建,然后把license文件拷贝进去即可,不然的话,对于共享此软件的其他节点来说,会找不到license。 然后进入/opt/intel/composer_xe_2015.2.164/mkl/interfaces/fftw3xf/文件夹,执行:[root]# make libintel64 将会生成一个名为libfftw3xf_intel.a的静态库文件,用于后面vasp的链接。 2.安装openmpi:(openmpi总是出问题,无法多节点并行,原因不明,所以建 议用后面的mpich) 进入openmpi解压目录,执行: [root]# ./configure --prefix=/opt/openmpi CC=icc CXX=icpc F77=ifort FC=ifort [root]# make all install 然后添加环境变量,在/etc/profile中添加: export PATH=$PATH:/opt/openmpi/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi/lib export MANPATH=$MANPATH:/opt/openmpi/share/man

VASP5.4编译过程说明

V ASP5.4编译 1.编译器安装:parallel_studio_xe_2011_sp1_update2_intel64.tgz 解压安装即可,./install.sh:安装中使用的激活码为L3FN-2VRGKX7K 安装完设置环境变量: For csh/tcsh: $ source install-dir/bin/compilervars.csh intel64 For bash: $ source install-dir/bin/compilervars.sh intel64 测试是否成功:which icc /opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/icc which ifort /opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/ifort 2.安装openmpi:openmpi-1.4.5.tar.gz 解压,然后输入./configure CC=icc CXX=icpc F77=ifort FC=ifort 指定编译器之后依次执行make,make install 安装完成后,加入如下三个环境变量: export PATH=/usr/local/bin:$PATH export LD_LIBRARY_PATH=/usr/local/lib/openmpi:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 具体路径找自己的,其中少了第三个路径的话可以编译文件,但是运行编译后的文件会说找不到库函数。建议安装完成之后进入解压文件夹(不是安装目录)下的example文件夹中测试程序,输入make之后会自动编译,完成之后输入mpirun –np 8 hello_f90,如果安装正确,会出现: Hello, world, I am 0 of 8 Hello, world, I am 1 of 8 Hello, world, I am 2 of 8 Hello, world, I am 3 of 8 Hello, world, I am 4 of 8 Hello, world, I am 5 of 8 Hello, world, I am 6 of 8

VASP+FROPHO 计算晶体材料声子谱及热性能

V ASP+FROPHO 计算晶体材料声子谱及热性能梁超平(liangchaoping@https://www.wendangku.net/doc/e75136722.html,), May. 2010 作者简介:梁超平,中南大学粉末冶金研究院07级硕士研究生,师从龚浩然教授,主要研究方向为计算材料学算法编程及材料跨尺度计算模拟。 目录 一、编译fropho (1) 二、一个简单的算例:BCC Zr的声子谱以及声子态密度 (2) 简介 Fropho是一个使用Fortran语言编写用于实现晶体声子分析程序。它目前提供了V ASP 、 Wien2K 的接口用来计算原子受力,通过分析原子受力得到力常数矩阵。从而根据力常数矩阵进行材料的声子谱及热性能分析。其主要功能有: 计算声子色散谱; 计算声子态密度,包括分立态密度; 声子热力学性质,包括自由能,热容量,焓。 接下来简要介绍程序的编译,通过一个简单的算例来介绍它的使用方法。 一、编译fropho 1. 编译Fropho需要lapack数学库文件。因此首先从https://www.wendangku.net/doc/e75136722.html, 下载lapack-3. 2.gz; 2. 使用sftp上传至远程服务器; 3. 解压缩lapack-3.2.gz; @node64:~> tar -zxvf lapack-3.2.gz 4. 进入lapack-3.2,将make.inc.example 拷贝成make.inc

@node64:~/lapack-3.2> cp make.inc.example make.inc 5. 修改make.inc和Makefile 将make.inc第22和26行改为ifort或者pgf90编译器,这样运算速度更快,这里的编 译器要跟后面编译fropho一致。然后将Makefile第11行注释掉,打开第12行 6. 使用make lib 安装数学库,转好后在当前目录产生lapack_LINUX.a、blas_LINUX.a 和tmglib_LINUX.a。 @node64:~/lapack-3.2> make lib 7. 安装fropho 从https://www.wendangku.net/doc/e75136722.html,/ 下载fropho-1.3.3.tar.gz 8. 解压缩; @node64:~/fropho> tar -zxvf fropho-1.3.3.tar.gz 9. 进入fropho-1.3.3并configure设置好相应的编译器和链接数学库,链接这两个数学库 的顺序不能错,不然不能使用; @node64:~/fropho/fropho-1.3.3> ./configure --prefix=where do you want to install fropho FC=ifort LIBS= "/your lapack-3.2 direction/lapack-3.2/liblapack.a your lapack-3.2 direction/lapack-3.2/libblas.a" 10. 然后make; @node64:~/fropho/fropho-1.3.3>make @node64:~/fropho/fropho-1.3.3>make install 11. 编译rubytools,进入rubyTools目录; @node64:~/fropho/fropho-1.3.3/rubyTools> ./makeTools.sh 12. 大功告成,安装圆满完成了。 二、一个简单的算例:BCC Zr的声子谱以及声子态密度 1.首先准备好优化的Zr POSCAR文件,以及INPHON。 INPHON的内容为(注:由于程序编写原因INPHON的格式必须严格固定,=号两端必 须有空格) NDIM = 3 3 3 #超晶胞尺寸 LSUPER = .TRUE. #控制是否产生超晶胞

VASP并行版本安装

VASP install (1) yum install gcc-c++ [aaa@localhost]yum install gcc-c++ ●gcc, g++ and gfortran is required by some packages. (2) intel C&fortran ipcc&ifort [aaa@localhost]tar zxvf parallel_studio_xe_2013_update2.tgz [aaa@localhost]cd parallel_studio_xe_2013_update2 [aaa@localhost]./install.sh Figure 1. (a) screen-shot during installing of intel fortran. Setting .bashrc enviroment Figure 1. (b) .bashrc environment setting for intel fortran. ●.bashrc setting: must add in .bashrc in either root or common users (3) Installing openmpi (3.1) [aaa@localhost] ./configure CC=icc CXX=g++ F77=ifort FC=ifort --prefix=/home/aaa/programs/openmpi (3.2) [aaa@localhost] make all (3.3) [aaa@localhost] make install Figure 2. bashrc environment setting for openmpi.

vasp.5.2编译过程

Vasp.5.2编译 ⒈正常安装ifort编辑器(如vasp.4.6安装过程) 修改环境变量 # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc #IFORT=/home/usr1/intel/ PATH="/home/usr1/intel/fce/9.0/bin":${PATH} PATH="/home/usr1/intel/idbe/9.0/bin":${PATH} export PATH MANPATH="/home/usr1/intel/fce/9.0/man":${MANPATH} MANPATH="/home/usr1/intel/idbe/9.0/man":${MANPATH} export MANPATH LD_LIBRARY_PATH="/home/usr1/intel/fce/9.0/lib":${LD_LIBRARY_PATH} export LD_LIBRARY_PATH # INTEL_LICENSE_FILE="/home/usr1/intel/licenses":$INTEL_LICENSE_FILE export INTEL_LICENSE_FILE # fi ⒉安装mkl ⑴过程如vasp.4.6的过程 ⑵编译mkl的FFTW函数库:进入到opt/intel/mkl/xxxx/interfaces/fftw3xf(默认安装)的路径,在root权限下在终端键入make libem64t compiler=intel。 加入环境变量

CHGCAR--vasp手册

CHGCAR £le This £le contains the lattice vectors, atomic coordinates, the total charge density multiplied by the volume (r) ¤V cell on the £ne FFT-grid (NG(X,Y,Z)F), and the PAW one-center occupancies. CHGCAR can be used to restart VASP from an existing charge density, for visualisation the CHG £le should be used, since the PAW-one centre occupancies are dif£cult to parse. It is possible to avoid that the CHGCAR is written by setting LCHARG = .FALSE. in the INCAR £le (see section 7.45). In VASP, the density is written using the following commands in Fortran: WRITE(IU,FORM) (((C(NX,NY,NZ),NX=1,NGXC),NY=1,NGYZ),NZ=1,NGZC) The x index is the fastest index, and the z index the slowest index. The £le can be read format-free, because at least in new versions, it is guaranteed that spaces separate each number. Please do not forget to divide by the volume before visualizing the £le! For spinpolarized calculations, two sets of data can be found in the CHGCAR £le. The £rst set contains the total charge density (spin up plus spin down), the second one the magnetization density (spin up minus spin down). For non collinear calculations the CHGCAR £le contains the total charge density and the magnetisation density in the x, y and z direction in this order. For dynamic simulation (IBRION=0), the charge density on the £le is the predicted charge density for the next step: i.e. it is compatible with CONTCAR, but incompatible with the last positions in the OUTCAR £le. This allows the CHGCAR and the CONTCAR £le to be used consistently for a molecular dynamics continuation job. For static calculations and relaxations (IBRION=-1,1,2) the written charge density is the selfconsistent charge density for the last step and might be used e.g. for accurate band-structure calculations (see section 10.3). Mind: Since the charge density written to the £le CHGCAR is not the selfconsistent chargedensity for the positions on the CONTCAR £le, do not perform a bandstructure calculation (ICHARG=11) directly after a dynamic simulation (IBRION=0) (see section 10.3). Band decomposed charge density (parameters) 分波电荷密度计算 VASP can calculate the partial (band decomposed) charge density部分(分波)电荷密度 according to parameters specified in the file INCAR. It must be noted, that the densities calculated by VASP (including the band decomposed charge density) are always symmetrized对称的 using the space group空间群 and point group symmetry determined by VASP. 根据设置INCAR中的参数,VASP可以计算分波电荷密度,算分波电荷密度通常考虑空间群和点群对称性。 In some cases (calculation of charge from selected k-points) this can lead to undesired results for the band decomposed charge density. In this case, the symmetry needs to be switched off for the groundstate and successive band decomposed charge density calculations.

相关文档