24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1991  |  回复: 18

shala123456

铁杆木虫 (知名作家)

[求助] 如何在vasp中TDOS费米能不归零已有3人参与

用split 分DOSCAR后,分出的Tdos费米能级就在0ev处,比如费米能是7.1ev时,那么其他的能量是7.1的相对值。
现在我的问题是:如何在DOS图中Oev处不代表费米能,改为它的实际能量?
谢谢大家啦!

如何在vasp中TDOS费米能不归零
5555555555.png
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangpeng5226

新虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
shala123456: 金币+6, ★★★很有帮助 2016-01-21 15:29:36
把数据导入origin中,能量整体加上费米能,然后以新的能量作图

发自小木虫IOS客户端
2楼2016-01-21 14:05:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shala123456

铁杆木虫 (知名作家)

引用回帖:
2楼: Originally posted by wangpeng5226 at 2016-01-21 14:05:42
把数据导入origin中,能量整体加上费米能,然后以新的能量作图

谢谢你的回复,你说的是set column value.
我还想问的是:在VASP中有没有设置哪个参数,使split_dos后的dos的值已经加上了费米能(我的结果有点多,想偷懒不想一个个的加).拜托了。
3楼2016-01-21 15:29:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shala123456

铁杆木虫 (知名作家)

沉没了
4楼2016-03-22 13:59:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小学英语本

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
shala123456: 金币+12, ★★★很有帮助, 感谢你的回复 2016-05-21 17:19:01
shala123456: 金币+6, ★★★★★最佳答案, 只能在这里加点金币了,谢谢你 2016-05-22 15:30:26
费米能级处在0eV,是由于split_dos脚本导致的,VASP本身没有参数使费米能未0eV。
不知道你用的是哪个split_dos脚本,一般在脚本开始的注释处有以下注释:
# Modified to also align the Fermi level from
# the ground state to E=0.0
具体代码也做了使费米能出于0eV.
你可以把代码改了。
5楼2016-05-18 17:04:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shala123456

铁杆木虫 (知名作家)

引用回帖:
5楼: Originally posted by 小学英语本 at 2016-05-18 17:04:43
费米能级处在0eV,是由于split_dos脚本导致的,VASP本身没有参数使费米能未0eV。
不知道你用的是哪个split_dos脚本,一般在脚本开始的注释处有以下注释:
# Modified to also align the Fermi level from
# the ...

我有个问题想请教下:如何更改你所说的代码,新手求指教。
6楼2016-05-21 18:12:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小学英语本

金虫 (小有名气)

引用回帖:
6楼: Originally posted by shala123456 at 2016-05-21 18:12:11
我有个问题想请教下:如何更改你所说的代码,新手求指教。
...

用写字板打开split_dos脚本,查找 $efermi 你应该能找到类似这样的几行代码
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
该行代码是由sed和awk两个处理文件的命令组合而成,其中
$1+(-1)*'$efermi'
$1:表示指定行第一个变量,即DOSCAR中的第一列能量;
$efermi:表示从OUTCAR中读取的费米能;
你把代码中所有$1+(-1)*'$efermi'改为$1即可。
7楼2016-05-22 15:15:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小学英语本

金虫 (小有名气)

你可以学简单学习一下Shell编程,看懂了就可以自己随意更改了。我也是因为要处理 f 电子,才去看的代码。不同的计算所得的DOSCAR文件列数不同,所以需要根据实际情况更改代码。不知道你是出于什么目的,但是我建议还是将费米能级设在0eV,这样其它位置都是以费米能级作为参照。比如:你题目中提到的费米能级7.1ev是参照那个位置得出来的呢?
8楼2016-05-22 15:30:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shala123456

铁杆木虫 (知名作家)

引用回帖:
8楼: Originally posted by 小学英语本 at 2016-05-22 15:30:26
你可以学简单学习一下Shell编程,看懂了就可以自己随意更改了。我也是因为要处理 f 电子,才去看的代码。不同的计算所得的DOSCAR文件列数不同,所以需要根据实际情况更改代码。不知道你是出于什么目的,但是我建议还 ...

好的是得好好看看代码,DOSCAR的列数可以通过赋INCARE 中的LORBIT的值来控制,0/10时,分为10列,2/12时18列。
当时老师提了个想法:就是不同比例成分tdos的费米能不同,如果将0处改为费米能,那么我所有的比例成分就可以在同一范围内分析其低能级的变化趋势。
题目中的7.1是OUTCARE中读出来的,7.1就是费米能,0ev处
9楼2016-05-22 15:46:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shala123456

铁杆木虫 (知名作家)

引用回帖:
7楼: Originally posted by 小学英语本 at 2016-05-22 15:15:18
用写字板打开split_dos脚本,查找 $efermi 你应该能找到类似这样的几行代码
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)*'$ ...

你所说的脚本我没找到,能麻烦你发我一份吗
这是我常用的split dos 软件
https://yunpan.cn/cSYEDe8jMKwZE (提取码:014c)
我一般用这个劈裂dos

还有就是VASP中有一个自带的split_dos命令
这两个好像都没有脚本
10楼2016-05-22 16:03:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shala123456 的主题更新
信息提示
请填处理意见