计算化学公社

 找回密码 Forget password
 注册 Register
Views: 15029|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 通过处理vasp输出结果XDATCAR得到diffusivity和conductivity

[复制链接 Copy URL]

2

帖子

0

威望

81

eV
积分
83

Level 2 能力者

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 masc 于 2020-12-22 10:22 编辑

应用python工具pymatgen,可以直接得到MSD,diffusion,donductivity,里面有几个点不是太清楚,请大家一起帮忙看看。

得到XDATCAR后,需要首先配置pymatgen。
需要用到conda命令,windows和linux我都尝试了。
windows:可以安装anaconda3,通过spyder启动。
进入anaconda prompt中启动中断,配置conda environment:

conda create –name my_pymatgen python
activate my_pymatgen

linux环境下一个比较好的选择是安装miniconda3
wget https://repo.anaconda.com/minico ... -Windows-x86_64.exe

bash Miniconda3-latest-linux-x86_64.sh
如果原来在bashrc中配置了anaconda,则注释掉,重启terminal。
与windows下相同,需要设置一个pymatgen环境。
conda create –name my_pymatgen
source activate my_pymatgen

在my_pymatgen环境下安装 pymatgen:
conda install --channel conda-forge pymatgen

安装好之后运行建立如下test.py脚本, 可以得到结果:
import os
from pymatgen.core.trajectory import Trajectory
from pymatgen.io.vasp.outputs import Xdatcar
from pymatgen import Structure
from pymatgen.analysis.diffusion_analyzer import DiffusionAnalyzer
import numpy as np
import pickle

# 这一步是读取 XDATCAR,得到一系列结构信息
traj = Trajectory.from_file('XDATCAR')

# 这一步是实例化 DiffusionAnalyzer 的类
# 并用 from_structures 方法初始化这个类; 300 是温度,1是POTIM 的time step,1000是间隔步数
# 间隔步数(step_skip)不太容易理解,但是根据官方教程(这里具体怎么回事我不太清楚,好像potim*step_skip需要小于1000,1000为NSW值,这是我没彻底弄清楚的地方):
# dt = timesteps * self.time_step * self.step_skip

diff = DiffusionAnalyzer.from_structures(traj,'Li',300,1,1000)

# 可以用内置的 plot_msd 方法画出 MSD 图像
# 有些终端不能显示图像,这时候可以调用 export_msdt() 方法,得到数据后再自己作图
diff.plot_msd()
diff.export_msdt("write_msd")
# 接下来直接得到 离子迁移率, 单位是 mS/cm,diffusity单位是 cm^2/S
C = diff.conductivity
D = diff.diffusivity
with open('result.dat','w') as f:
    f.write('# AIMD result for Li-ion\n')
    f.write('temp\conductivity\diffusivity\n')
    f.write('%d\t%.2f  %.10f' %(300,C,D))


在1.dat中是msd,conductivity和diffusivity会直接输出在result.dat中,模拟石墨烯表面Li的MD(excessive state)结果diffusivity为2*10-7 cm^2/S,我觉得算出diffusivity后自己求conductivity比较好,请问应该怎么求?与文件对比,基本吻合(J. Phys. Chem. Lett. 2010, 1, 1176–1180;https://pubs.acs.org/doi/10.1021/jp910134u)。
其它不对的地方,欢迎批评指正。
参考:
https://pymatgen.org/installation.html
https://www.bigbrosci.com/2020/09/08/A18/

17

帖子

0

威望

136

eV
积分
153

Level 3 能力者

5#
发表于 Post on 2024-4-15 16:00:18 | 只看该作者 Only view this author
同问间隔步数如何得到,谢谢!

4

帖子

0

威望

55

eV
积分
59

Level 2 能力者

4#
发表于 Post on 2023-10-24 15:28:43 | 只看该作者 Only view this author
hzliew 发表于 2023-1-24 19:45
同问,间隔步数怎么得到的?

老哥现在有答案了吗

14

帖子

0

威望

31

eV
积分
45

Level 2 能力者

3#
发表于 Post on 2023-1-24 19:45:11 | 只看该作者 Only view this author
同问,间隔步数怎么得到的?

3

帖子

0

威望

57

eV
积分
60

Level 2 能力者

2#
发表于 Post on 2021-5-9 17:24:58 | 只看该作者 Only view this author
你好我有一个问题请教就是间隔步数怎么算的

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-27 07:11 , Processed in 0.182762 second(s), 27 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list