以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相关推荐

  1. VASP+phonopy计算声子群速与数据导出

    经验分享 在材料计算中声子谱是一种常用手段来评估材料的动力学稳定性,声子谱的计算大多采用vasp+phonopy的计算方式.通常在声子计算中声子群速等也具有一定的分析意义,笔者在翻阅一些相关内容的经验 ...

  2. vasp phonopy 计算声子(有限位移法)

    1.扩胞并分别做静态计算 先对原始数据进行静态计算 得到较为准确的结构CONTCAR 在完成静态计算的文件夹下创建phono文件夹 mkdir phono 将CONTCAR文件复制到phono文件夹下 ...

  3. 基于VASP+phonopy+shengbte计算声子相干的热学性质

    声子相干的热学性质在计算材料领域有着非常重要的地位,我们可以通过第一性原理计算得到任一种晶体的热力学性质,但是很多小伙伴尤其是初学者还比较陌生,本文介绍基于DFT计算与声子相关的性质,是用VASP+p ...

  4. VASP+FDM+Phonopy 计算声子过程

    以Ammonia为例,基本翻译自:https://atztogo.github.io/phonopy/procedure.html#tutorial. 1. 结构优化. 输入文件如下: INCAR ! ...

  5. 用VASP+VTST计算Raman光谱 (抛砖引玉)

    鉴于目前没有找到很好的,很完整的教程由A到Z介绍如何用VASP计算Raman光谱.可能有干货的大神都留着自己用 摸索了一会儿找到了以下其中一个☝️方法,如果大神有补充或者纠正,欢迎留言 pre-req ...

  6. vasp+phonopy计算声子谱及后处理

    记录一下最近在计算的三维Na2Te的声子谱以及后处理得到部分声子态密度等信息.计算声子谱主要有两种方法:有限位移法和密度泛函微扰理论(DFPT).vasp version = 5.4.4; phono ...

  7. vasp+boltzTrap2计算材料的热电性能

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.准备工作 二.boltzTrap2使用步骤 官方文档: 1.导入BoltzTrap2包 2.计算能带(不是很准) ...

  8. VASP COHP计算

    首先修改参数进行静态计算,注意修改的是NBANDS而不是NDOS 静态计算结束后,把文件夹整个复制,然后写lobsterin文件 然后调用lobster程序执行,记住不要mpirun lobster不 ...

  9. Quantum Espresso + Phonopy 计算声子过程

    以Ammonia (N4H12) 为例. 第一步: 松弛结构/ Geometry Optimization Input: &controlcalculation = 'relax',nstep ...

  10. vasp服务器中断,求助VASP能带计算的中断原因

    我也遇到类似情况,发现服务器内存没有用到多少?是不是并行环境有问题?谢谢! DA part: xc-table for Pade appr. of Perdew POSCAR, INCAR and K ...

最新文章

  1. http 缓存分为客户端缓存和服务端缓存
  2. Django 的JsonResponse 与json
  3. Android中BaseAdapter使用总结(imooc笔记)
  4. OpenCV线特征Line Features
  5. 008_使用pyenv进行py开发环境管理
  6. 10.性能测试软技能
  7. 2个div并排自适应宽度
  8. Lingo 的基本使用入门
  9. (精品)java宠物医院管理系统+论文+答辩ppt+部署视频+效果图效果视频
  10. c语言——高精度除法
  11. CFD:用软件完成流体仿真分析(step1)
  12. 如何学习UG编程?零基础入门学UG难吗
  13. php计算运费价格,PHP: UPS API, UPS 运费计算, UPS接口
  14. namecheap如何解析域名
  15. 数字转换成英文 金额转成英文大写
  16. FindMeChat(盲盒社交)-匿名聊天-好玩有趣的社交平台
  17. 电脑常用快捷键【按使用场景分类】-Windows
  18. 计算机网络——第二章(应用层)
  19. 2021营销案例盘点,这些品牌的中秋营销创意,绝了!
  20. python pos函数_如何用Python画一只肥肥的柯基狗狗—turtle库绘制椭圆与弧线实践

热门文章

  1. 《直面苦难》--周国平
  2. 台式计算机虚拟内存怎么设置,电脑虚拟内存怎么设置最好 电脑虚拟内存不足怎么解决...
  3. 解决cydia bigboss源空白
  4. 69、消防电源及其配电的设置要求
  5. nodejs+vue+elementui+python酒店客房预订网站系统java
  6. 数据中心服务器机柜电气参数,数据中心服务器机柜选择指南
  7. 高德地图驾车导航内存优化原理与实战
  8. 计算机视觉论文-2021-04-01
  9. C语言DCT图像,任意长度DCT变换C语言实现方法
  10. ios开发调用系统相机(照片/视频)