VASP+Phono3py计算声子linewidth
以ZrH2为例.
1.
post-processing:
计算linewidth at different q-points:
phono3py --fc3 --fc2 --dim="2 2 2" --loglevel=2 --mesh="64 64 64" -c POSCAR-unitcell --ga="0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 30 30 30 31 31 31 32 32 32" --lw --bi="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18"
这样会对BZ取64*64*64个点,然后算ga中每三个数值决定的一个q点.
画出phonon linewidth 分布图:
1 #!/usr/bin/env python 2 3 import os 4 import sys 5 import numpy as np 6 import matplotlib.pyplot as plt 7 8 lw_dir = "linewidth" 9 freq_file = "m646464.out" 10 temp = 10 # temperature 11 lw_factor = 10.0 # magnified factor 12 13 def readOutput(file_name): 14 with open(file_name, 'rb') as f: 15 all_lines = f.readlines() 16 17 all_found = 0 18 for i in range(len(all_lines)): 19 if all_found == 3: 20 break 21 elif "Mesh sampling" in all_lines[i]: 22 mesh = map(int, all_lines[i].split()[3:6]) 23 all_found += 1 24 elif "Band indices" in all_lines[i]: 25 band_index = map(int, all_lines[i].replace('[','').replace(']','').split()[2:]) 26 all_found += 1 27 elif "Grid point to" in all_lines[i]: 28 gp_index = map(int, all_lines[i+1].split()[:]) 29 all_found += 1 30 31 return mesh, band_index, gp_index 32 33 def getLW(grid_index, temp, mesh, n_band): 34 lw_grid = [] 35 mesh_file_name = ''.join(map(str, mesh)) 36 for i in range(n_band): 37 file_name = os.path.join(lw_dir, 'linewidth-m'+mesh_file_name+'-g'+str(grid_index)+'-b'+str(i+1)+'.dat') 38 with open(file_name, 'rb') as f: 39 all_lines = f.readlines() 40 41 for line in all_lines: 42 # add space and 0000 to avoid alias 43 if (" "+str(float(temp))+"0000") in line: 44 lw_grid.append(float(line.split()[-1])) 45 46 if len(lw_grid) != n_band: 47 print("Error!\n") 48 sys.exit(1) 49 50 return lw_grid 51 52 def getFreq(grid_index, n_band): 53 freq_grid = [] 54 with open(freq_file, 'rb') as f: 55 all_lines = f.readlines() 56 57 for i in range(len(all_lines)): 58 if " Grid point" in all_lines[i] and int(all_lines[i].split()[3]) == grid_index: 59 # may have different lines for this data block 60 for j in range(i+5, i+9): 61 freq_grid.extend(map(float, all_lines[j].strip().lstrip('[').rstrip(']').split()[:])) 62 if ']' not in all_lines[i+8]: 63 freq_grid.extend(map(float, all_lines[i+9].strip().lstrip('[').rstrip(']').split()[:])) 64 65 if len(freq_grid) != n_band: 66 print("Error!\n") 67 sys.exit(1) 68 69 return freq_grid 70 71 72 # Main routine 73 mesh, band_index, gp_index = readOutput(freq_file) 74 75 freq = [] 76 lw = [] 77 n_band = len(band_index) 78 x = range(len(gp_index)) 79 80 for grid_index in gp_index: 81 lw_tmp = getLW(grid_index, temp, mesh, n_band) 82 lw.append(lw_tmp) 83 84 freq_tmp = getFreq(grid_index, n_band) 85 freq.append(freq_tmp) 86 87 lw_upper = np.add(freq, 0.5*lw_factor*np.array(lw)) 88 lw_lower = np.add(freq, -0.5*lw_factor*np.array(lw)) 89 90 freq_plot = zip(*freq) 91 lw_plot = zip(*lw) 92 lw_upper_plot = zip(*lw_upper) 93 lw_lower_plot = zip(*lw_lower) 94 95 fig,ax = plt.subplots() 96 for i in range(n_band): 97 ax.plot(x, freq_plot[i], color='black') 98 ax.plot(x, lw_upper_plot[i], x, lw_lower_plot[i], linestyle='--', linewidth=1, color='red') 99 ax.fill_between(x, lw_upper_plot[i], lw_lower_plot[i], where=np.array(lw_upper_plot[i]) >= np.array(lw_lower_plot[i]), facecolor=None, interpolate=True) 100 #ax.fill_between(x, lw_upper_plot[i], lw_lower_plot[i], where=np.array(lw_upper_plot[i]) >= np.array(lw_lower_plot[i]), markerfacecolor="None", interpolate=True) 101 ax.set_title('ZrH2 phonon band structure with linewidth') 102 ax.set_xlabel('Kpoints') 103 ax.set_ylabel('Frequency(THz)') 104 plt.show()
转载于:https://www.cnblogs.com/zjyx/p/8092208.html
VASP+Phono3py计算声子linewidth相关推荐
- VASP+phonopy计算声子群速与数据导出
经验分享 在材料计算中声子谱是一种常用手段来评估材料的动力学稳定性,声子谱的计算大多采用vasp+phonopy的计算方式.通常在声子计算中声子群速等也具有一定的分析意义,笔者在翻阅一些相关内容的经验 ...
- vasp phonopy 计算声子(有限位移法)
1.扩胞并分别做静态计算 先对原始数据进行静态计算 得到较为准确的结构CONTCAR 在完成静态计算的文件夹下创建phono文件夹 mkdir phono 将CONTCAR文件复制到phono文件夹下 ...
- 基于VASP+phonopy+shengbte计算声子相干的热学性质
声子相干的热学性质在计算材料领域有着非常重要的地位,我们可以通过第一性原理计算得到任一种晶体的热力学性质,但是很多小伙伴尤其是初学者还比较陌生,本文介绍基于DFT计算与声子相关的性质,是用VASP+p ...
- VASP+FDM+Phonopy 计算声子过程
以Ammonia为例,基本翻译自:https://atztogo.github.io/phonopy/procedure.html#tutorial. 1. 结构优化. 输入文件如下: INCAR ! ...
- 用VASP+VTST计算Raman光谱 (抛砖引玉)
鉴于目前没有找到很好的,很完整的教程由A到Z介绍如何用VASP计算Raman光谱.可能有干货的大神都留着自己用 摸索了一会儿找到了以下其中一个☝️方法,如果大神有补充或者纠正,欢迎留言 pre-req ...
- vasp+phonopy计算声子谱及后处理
记录一下最近在计算的三维Na2Te的声子谱以及后处理得到部分声子态密度等信息.计算声子谱主要有两种方法:有限位移法和密度泛函微扰理论(DFPT).vasp version = 5.4.4; phono ...
- vasp+boltzTrap2计算材料的热电性能
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.准备工作 二.boltzTrap2使用步骤 官方文档: 1.导入BoltzTrap2包 2.计算能带(不是很准) ...
- VASP COHP计算
首先修改参数进行静态计算,注意修改的是NBANDS而不是NDOS 静态计算结束后,把文件夹整个复制,然后写lobsterin文件 然后调用lobster程序执行,记住不要mpirun lobster不 ...
- Quantum Espresso + Phonopy 计算声子过程
以Ammonia (N4H12) 为例. 第一步: 松弛结构/ Geometry Optimization Input: &controlcalculation = 'relax',nstep ...
- vasp服务器中断,求助VASP能带计算的中断原因
我也遇到类似情况,发现服务器内存没有用到多少?是不是并行环境有问题?谢谢! DA part: xc-table for Pade appr. of Perdew POSCAR, INCAR and K ...
最新文章
- http 缓存分为客户端缓存和服务端缓存
- Django 的JsonResponse 与json
- Android中BaseAdapter使用总结(imooc笔记)
- OpenCV线特征Line Features
- 008_使用pyenv进行py开发环境管理
- 10.性能测试软技能
- 2个div并排自适应宽度
- Lingo 的基本使用入门
- (精品)java宠物医院管理系统+论文+答辩ppt+部署视频+效果图效果视频
- c语言——高精度除法
- CFD:用软件完成流体仿真分析(step1)
- 如何学习UG编程?零基础入门学UG难吗
- php计算运费价格,PHP: UPS API, UPS 运费计算, UPS接口
- namecheap如何解析域名
- 数字转换成英文 金额转成英文大写
- FindMeChat(盲盒社交)-匿名聊天-好玩有趣的社交平台
- 电脑常用快捷键【按使用场景分类】-Windows
- 计算机网络——第二章(应用层)
- 2021营销案例盘点,这些品牌的中秋营销创意,绝了!
- python pos函数_如何用Python画一只肥肥的柯基狗狗—turtle库绘制椭圆与弧线实践