HuangAnqi
理论相关
cp2k
cp2k参数
CP2K输入文件模板
Matlab批量计算CP2K的差分电荷的代码
全波电磁仿真
VESTA:制作差分电荷&导出图片
Oringin制作气泡能带图+DOS图
VASP
vasp+机器学习计算AlN的势函数
vsap机器学习
vasp算微波介电常数
VASP计算参数
vaspkit功能
VASP算bader电荷
计算带格林内森参数投影的高温声子谱
脚本合集
PWmat
用pwmat计算缺陷形成能
Hefei-NAMD
Quantum ESPRESSO
qe算声子谱
CALYPSO结构搜索
Oringin
Yambo
QE+yambo算光吸收虚部
Yambo 光吸收计算后处理
Yambo报错和解决办法
知识点
代码
佛祖保佑
心跳(html)
洛伦兹吸引子
用pandas读取excel 画dos图
用Matplotlib画折线图
蒙特卡洛方法求Π
TensorFlow 代码
罗盘时钟
MATLAB代码
批量重命名图片代码
用Pr将序列帧图片转成视频
蒙特卡洛方法模拟二维平面上的原子沉积和扩散
PyTorch
OVITO
Latex安装与使用
wannier+VASP拟合能带
VASP算有效质量
liuyaoze.com-文档系统
-
+
首页
计算带格林内森参数投影的高温声子谱
## 1.算高温声子谱 算xxxK的MD之后,就在这个目录下 参考脚本一步步做,带#的也要做(浪潮服务器,老师账号) ```bash #!/bin/sh cp ../POSCAR infile.ucposcar cp POSCAR infile.ssposcar #module load anaconda/2 python ~/intel/tdep-devel-master/bin/process_outcar_5.3.py OUTCAR #source ~/intel/oneapi/setvars.sh #(intel oneapi) #export LD_LIBRARY_PATH=/home/ding/intel/hdf5-1.8.15/hdf5/lib:$LD_LIBRARY_PATH #export LD_LIBRARY_PATH=/home/ding/intel/oneapi/compiler/2022.0.1/linux/compiler/lib/intel64_lin:$LD_LIBRARY_PATH #module rm anaconda/2 extract_forceconstants -rc2 8 #10可修改,对结果有影响 ln -s outfile.forceconstant infile.forceconstant cp ../../../tdep/infile.qpoints_dispersion ./ #touch infile.qpoints_dispersion phonon_dispersion_relations --readpath --unit thz #outfile.dispersion_relations 作图 #module load gnuplot/5.4.0 gnuplot outfile.dispersion_relations.gnuplot ``` infile.qpoints_dispersion文件: ``` CUSTOM 40 ! number of points on each path 5 ! number of path 0 0 0 0.5 0 0 G X 0.5 0 0 0.5 0.5 0 X S 0.5 0.5 0 0 0.5 0 S Y 0 0.5 0 0 0 0 Y G 0 0 0 0.5 0.5 0 G S ``` 最终导出outfile.dispersion_relations到origin里面作图 ## 2.画格林内森参数投影图 导入环境之后,提取三阶力常数,这个需要进结点交任务 `mpirun -np 4 extract_forceconstants -rc2 8 -rc3 4 > log &` `cp outfile.forceconstant infile.forceconstant` ` ln -s outfile.forceconstant_thirdorder infile.forceconstant_thirdorder` `phonon_dispersion_relations --gruneisen -rp` 将outfile.mode_gruneisen_parameters和 outfile.dispersion_relations 拷贝出来或者将plot.py放进目录中使用即可画图,需要修改路径(sys_list)和刻度(gamma_max) ```python import pandas as pd import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator from matplotlib.collections import LineCollection from matplotlib.colors import BoundaryNorm, ListedColormap import numpy as np dispersion_data = pd.read_csv('outfile.dispersion_relations', sep='\s+', header=None) gruneisen_data = pd.read_csv('outfile.mode_gruneisen_parameters', sep='\s+', header=None) dispersion_x = dispersion_data.iloc[:, 0] lines_lenth = len(dispersion_data) sys_list = ['Γ', 'L', 'Z', 'F', 'Γ', 'Z'] sys_lenth = len(sys_list) plt.rcParams["font.family"] = "Times New Roman" fig1, ax1 = plt.subplots(1, 1, sharex=True, sharey=True) bandmax = 12 #修改需要的带数 cmap = 'seismic' gamma_max = 4 gamma_min = -4 #gamma_max = max(gruneisen_data.iloc[:,1:(bandmax+1)].max()) #gamma_min = min(gruneisen_data.iloc[:,1:(bandmax+1)].min()) norm = plt.Normalize(gamma_min, gamma_max) print(gamma_max) print(gamma_min) for i in range(bandmax): points = np.array([dispersion_x, dispersion_data.iloc[:, i+1]]).T.reshape(-1, 1, 2) segments = np.concatenate([points[:-1], points[1:]], axis=1) lc = LineCollection(segments, cmap='seismic', norm=norm) lc.set_array(gruneisen_data.iloc[:, i+1]) lc.set_linewidth(2) line = ax1.add_collection(lc) cbar = fig1.colorbar(line, ax=ax1) cbar.ax.tick_params(labelsize = 20) special_labels = {} for m in range(sys_lenth): if m == 0: special_labels[dispersion_x[(lines_lenth/(sys_lenth-1)) * m ]] = sys_list[m] else: special_labels[dispersion_x[(lines_lenth/(sys_lenth-1)) * m - 1]] = sys_list[m] x_min, x_max = 0, max(dispersion_x) # x轴范围 y_min, y_max = 0, max(dispersion_data.iloc[:,1:(bandmax+1)].max()) + 0.2 # y轴范围 plt.xlim(x_min, x_max) plt.ylim(y_min, y_max) # x轴 ymajor = MultipleLocator(1) # 主 10 的倍数 yminor = MultipleLocator(0.5) # 次 2的倍数 # 设置 x/y轴刻度,以及刻度标签 # x 轴 ax1.yaxis.set_minor_locator(yminor) ax1.yaxis.set_major_locator(ymajor) xticks = list(special_labels.keys()) xticklabels = list(special_labels.values()) print(xticks) plt.xticks(xticks, xticklabels) plt.tick_params(axis='x', which='both', bottom=False, labelsize = 20) plt.tick_params(axis='y', which='both', direction='in', labelsize = 20) for i in range(len(xticks)-1): plt.axvline(x=xticks[i], linestyle='dashed', color='gray', linewidth=1) plt.show() ``` ![](/media/202407/2024-07-09_161642_2415460.39842632459456995.png)
huanganqi
2024年7月9日 18:47
20
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
服务器已完成数据迁移,数据丢失请及时反馈站长,旧服务器数据保留至11月30日。
【温馨提示:本站文档可配置可见范围,如登录后可见、对特定群组可见等,看不到就是没权限】
注册码获取邮箱
work@liuyaoze.com
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期