FORCE_CONSTANTS中3阶力常数大小与原子间距的分析脚本

从超胞构建到谱图绘制:VASP结合Phonopy的声子谱全流程解析 本文详细解析了使用VASP结合Phonopy进行声子谱计算的全流程,从超胞构建到谱图绘制的关键步骤。重点介绍了VASP参数设置、力常数提取和声子谱计算技巧,帮助研究者避免常见错误并提升计算效率。适用于材料科学领域的声子谱分析需求。 阅读详情
AI摘要

该博客介绍了一个Python脚本,用于读取和分析shengBTE所需的FORCE_CONSTANTS_3RD文件,展示力常数与原子间距的关系,并根据设定的新截断半径生成新的力常数文件。通过散点图描绘了力常数的最大值与原子间距的最大距离之间的关系,有助于理解热导率随截断半径的变化。

shengBTE所需的3阶力常数文件格式为FORCE_CONSTANTS_3RD, 想要得知所有力常数数值与原子间距的变化关系,或者输出更小截断半径下新的FORCE_CONSTANTS_3RD以验证热导率随截断半径的变化,需要分析FORCE_CONSTANTS_3RD内数据,这里提供一个PYTHON脚本,能够读取FORCE_CONSTANTS_3RD文件,并绘制力常数强度和原子间距的散点图,以及输出新的截断半径下的力常数文件,供大家参考,注意python的缩进。

#####################para_constants
bohr2ang=0.529177210
rhy2ev=13.60569193   #1 Ry = 1/2 Ha = 13.60569193 eV
#####################################
import os
import numpy as np
import matplotlib.pyplot as plt
######################
#输入1:力常数文件所在目录
filepath=R"填入总路径" 
ifc3_std_filename=filepath+'/'+'FORCE_CONSTANTS_3RD'
#输入2:为了计算间距,需要输入uc内原子坐标索引(为XYZ下单位angstrom),同vesta用.xyz格式
uc_xyz=[[5.654830126,1.395610194,1.885231820], \
  [7.273416028,4.199308702,1.885231820],\
  [4.036048945,4.199421446,1.885231820],\
  [5.654700060,5.133874941 , 3.114744400],\
  [4.035983972,2.330176433,  3.114744400],\
  [7.273416149 , 2.330176433 , 3.114744400],\
  [1.885025911,  1.088320217 , 2.486000000],\
  [9.424374089 , 5.441164917 , 2.514000000] \
]
#输入3:设置新的cutoff,输出相应的3阶力常数
ifc3_new_cut=6.0  #新的截断半径
ifc3_cut_filename=filepath+'/'+'FORCE_CONSTANTS_3RD_cut'  #新的力常数文件
#############################
ifc3_std=[]
#3阶力常数的读取
ifc3_file=open(ifc3_std_filename,'r')
ifc3_line=ifc3_file.readlines()
ifc3_file.close()
#
#格式1行为总块数,空行,块(1序号2行3列超胞索引1行原胞原子索引27行4值),每个块前有空行
#块数目
temp_line=ifc3_line[0].split()
ifc3_b_num=int(temp_line[0])
#读取块,转为同输入1的ifc_res列表
ifc3_sc=[]  #字符串,1重为所有块,2重为2个相对晶格矢的行字符串,两个字符串
ifc3_name=[] #为原胞3原子索引,字符串
ifc3_val=[]    #27数值
for m1 in range(len(ifc3_line)-1):  #排除第一行的总数目
    temp_line=ifc3_line[m1+1].split() 
    if temp_line and len(temp_line)==1:
        #块的开始
        temp_line1=ifc3_line[m1+1+3].strip()
        ifc3_name.append(temp_line1)
        temp_line2=ifc3_line[m1+1+1].strip()
        temp_line3=ifc3_line[m1+1+2].strip()
        ifc3_sc.append([temp_line2,temp_line3])
        val_temp=[]
        for m2 in range(27):
            temp_line4=ifc3_line[m1+1+4+m2].split()
            val_temp.append(float(temp_line4[3]))
        ifc3_val.append(val_temp)
###
ifc3_std=[ifc3_b_num,ifc3_sc,ifc3_name,ifc3_val]         
######################分析标准文件间距与
#ifc3_std=[ifc3_b_num,ifc3_sc,ifc3_name,ifc3_val]
ifc3_len=[]  #1重为块索引,2重为2和3原子索引以及最大值,共3值
ifc3_max_val=[]
for k1 in range(ifc3_std[0]):
    temp1=ifc3_std[1][k1][0].split()
    temp2=ifc3_std[1][k1][1].split()
    a2_sc=[float(temp1[0]),float(temp1[1]),float(temp1[2])]
    a3_sc=[float(temp2[0]),float(temp2[1]),float(temp2[2])]
    temp3=ifc3_std[2][k1].split()
    a1_ind=int(temp3[0])-1
    a2_ind=int(temp3[1])-1
    a3_ind=int(temp3[2])-1
    a21_xyz=[uc_xyz[a2_ind][0]-uc_xyz[a1_ind][0],uc_xyz[a2_ind][1]-uc_xyz[a1_ind][1],uc_xyz[a2_ind][2]-uc_xyz[a1_ind][2]]
    a31_xyz=[uc_xyz[a3_ind][0]-uc_xyz[a1_ind][0],uc_xyz[a3_ind][1]-uc_xyz[a1_ind][1],uc_xyz[a3_ind][2]-uc_xyz[a1_ind][2]]
    d21=[a2_sc[0]+a21_xyz[0],a2_sc[1]+a21_xyz[1],a2_sc[2]+a21_xyz[2]]
    d31=[a3_sc[0]+a31_xyz[0],a3_sc[1]+a31_xyz[1],a3_sc[2]+a31_xyz[2]]
    d21_len=(d21[0]**2+d21[1]**2+d21[2]**2)**0.5
    d31_len=(d31[0]**2+d31[1]**2+d31[2]**2)**0.5
    d_max=max([abs(d21_len),abs(d31_len)])
    d_now=[d21_len,d31_len,d_max]
    ifc3_len.append(d_now)
    ###找到每个块27值的最大值
    val=[abs(x) for x in ifc3_std[3][k1]]
    val_max=max(val)
    ifc3_max_val.append(val_max)
###
######绘图
x_d=[x[2] for x in ifc3_len]
y_d=ifc3_max_val
cut_res=[x_d,y_d]
plt.scatter(x_d,y_d,s=5,c="r")
plt.xlabel('std_res:x_max(d12 vs d13) VS y_max(27-val)')
plt.show()
############筛选ifc3_std的三阶力常数,用ifc3_new_cut
#ifc3_std=[ifc3_b_num,ifc3_sc,ifc3_name,ifc3_val]
ifc3_cut_num=0
ifc3_sc_cut=[]
ifc3_name_cut=[]
ifc3_val_cut=[]
#ifc3_len--------ifc3_max_val 
for k1 in range(ifc3_std[0]):
    if ifc3_len[k1][2]<=ifc3_new_cut:
        ifc3_sc_cut.append(ifc3_std[1][k1])
        ifc3_name_cut.append(ifc3_std[2][k1])
        ifc3_val_cut.append(ifc3_std[3][k1])
        ifc3_cut_num=ifc3_cut_num+1
ifc3_cut=[ifc3_cut_num,ifc3_sc_cut,ifc3_name_cut,ifc3_val_cut]
#输出3阶力常数
ifc3_new_file=open(ifc3_cut_filename,'w')
#ifc3_tot=[ifc3_b_num,ifc3_sc,ifc3_name,ifc3_val]
print(" %d "%(ifc3_cut[0]),file=ifc3_new_file)
#print(" ",file=ifc3_new_file)
for kk1 in range(ifc3_cut[0]):
    print(" ",file=ifc3_new_file)
    print(" %d"%(kk1+1),file=ifc3_new_file)
    print("%s"%(ifc3_cut[1][kk1][0]),file=ifc3_new_file)
    print("%s"%(ifc3_cut[1][kk1][1]),file=ifc3_new_file)
    print(" %s"%(ifc3_cut[2][kk1]),file=ifc3_new_file)
    #27值
    pp0=0
    for pp1 in range(3):
        for pp2 in range(3):
            for pp3 in range(3):
                be_str=' '+repr(pp1+1)+' '+repr(pp2+1)+' '+repr(pp3+1)+' '
                be_val=ifc3_cut[3][kk1][pp0]
                pp0=pp0+1
                print("%s %.14f"%(be_str,be_val),file=ifc3_new_file)
ifc3_new_file.close()

VASP新手入门:从编译安装到结构优化与声子谱计算的完整指南 密度泛函理论(DFT)是计算材料科学的核心方法,它通过求解量子力学方程来预测材料的电子结构和性质。其基本原理是在绝热近似和单电子近似下,将多电子问题转化为有效势场中的单电子问题。这一理论框架为材料模拟提供了坚实的物理基础,具有极高的技术价值,广泛应用于催化剂设计、电池材料开发和半导体器件研发等领域。在众多DFT软件中,VASP凭借其精度和效率成为行业标杆。本文聚焦VASP的编译安装、结构优化和声子谱计算等关键环节,详细解析了VTST集成、DFPT计算等高级功能的实现路径,并提供了INCAR参数设置和文件管理 阅读详情

相关推荐

Fourthorder:与shengBTE中的thirdorder.py类似,开发了Fourthorder.py以计算四阶原子间力常数(4th-IFC)。 请在FourPhonon存储库的“讨论”部分中发布您的问题

四阶 Zherui韩枭阳吴莉天利锋秀林阮 四阶脚本源自三阶脚本,用于帮助[包含四声子模块的ShengBTE]用户以高效便捷的方式创建FORCE_CONSTANTS_4TH文件。 更具体地说,它执行两项任务: 它解析出一组不可约的原子位移,从中可以计算出完整的非谐四阶原子间力常数(IFC)矩阵。 置换后的超级单元将保存到输入文件中,该文件可输入到第一性原理DFT代码中,以计算原子位移产生的力。 当前支持的DFT代码是VASP(Fourthorder_vasp.py)和Quantum ESPRESSO(Fourthorder_espresso.py)。 从DFT代码创建的输出文件中,Fourthorder重构完整的四阶IFC矩阵,并将其以正确的格式写入FORCE_CONSTANTS_4TH。 汇编 四阶是一组Python脚本。 它是使用Python 2.7.3开发的,但应该可以使用稍旧的

Thirdorder生成三阶力常数时临近取值经验

比如笔者使用一个2原子的晶胞(空间群Fm-3m)进行扩胞,扩胞倍数为2×2×2(此扩包倍数较小,无法计算得到有效和精确的结构,仅为案例需要),当临近数值大于5时所产生的位移POSCAR就会达到上限88个,并提示warning: supercell too small to find n-th neighbours,无法找到所设置的近邻。后续即使增大临近数值,也不会增加三阶力常数计算的任务数量,即该扩胞倍数下最大临近数值为5。引喻失义 妄自菲薄。

DFT_M的博客 1753

vnpy_ctp源码下载后转变为python可用的处理过程

vnpy_ctp源码下载后在window中编译使用

m0_37967652的博客 3327

AlmaBTE使用和FORCE_CONSTANT原子排列转换

AlmaBTE可看作是材料热导率计算程序shengBTE的升级版本,不仅包含了shengBTE的全部公共能,而且能够实现超晶格、合金等复合结构热导率的计算。AlmaBTE的主页介绍链接如下: Home - almaBTE - First-principles thermal transport simulation AlmaBTE的计算速度相较于shengBTE要快很多,对于单晶材料的计算,同样需要输入: 1. FORCE_CONSTANTS 即2阶力常数IFC文件,格式同phononpy 2.

odin_linux的博客 2031

贝塞尔曲线在机器人路径平滑中的实战应用与优化

本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。

weixin_29051811的博客 307

CONN工具箱分析fmri数据笔记1

前言一、安装二、预处理三、去噪 前言 CONN:functional connectivity toolbox,是基于MATLAB和SPM的一个对功能磁共振数据进行分析的一个工具箱。可以进行以下分析: Seed-based correlations (SBC), ROI-to-ROI correlations, graph analyses, Independent component analyses(group-ICA), Masked (ICA) Amplitude of Low-Frequency.

weixin_52073820的博客 6586

vasp手册_VASP计算笔记-ShengBTE计算热导率流程(1)

注:对计算结果的准确性不做任何保证。对于参数的设置没怎么验证,可能会有些错误。主要使用ShengBTE、thirdorder(两者在ShengBTE网站下载) 和phonopy软件。ShengBTE计算热导率前所需要准备的文件FORCE_CONSTANTS_2ND #见二阶力常数计算 FORCE_CONSTANTS_3RD #见三阶力常数计算注:基于玻尔兹曼输运方程计算晶格热导率的软件一般都需要计...

weixin_39948439的博客 6196

YOLOv11缝合改进Conv | SAConv在YOLOv11中的应用可切换空洞卷积与性能提升(附代码)

在本篇文章中,我们将深入探讨如何通过引入**SAConv**(Switchable Atrous Convolution,可切换空洞卷积)来优化YOLOv11网络结构,特别是在卷积操作方面的创新。我们会解析SAConv的核心原理和架构设计。

一键难忘的博客 953

GULP采用经典势能模型输出shengBTE计算用力常数文件

但是注意,gulp这里存在一个bug,输出的2阶力常数文件中超胞中原子次序与phonopy以及shengBTE用不一致:shengBTE中FORCE_CONSTANT中原子次序为:ucatom*uz*uy*ux;但是gulp中为ucatom*ux*uy*uz,对于各向同性系统,则计算没有区别,但是对于各向异性系统,会产生计算错误,需要转换2阶力常数的中的原子次序。

odin_linux的博客 472

医疗工具识别(手术器械计数):基于YOLOv8的智能手术器械管理系统

YOLOv8是Ultralytics公司于2023年推出的最新一代目标检测算法,相比前代YOLOv5,在精度和速度上都有显著提升。Anchor-free检测:不再使用预定义的anchor boxes,简化了检测流程更高效的骨干网络:采用CSPDarknet53作为特征提取网络多尺度特征融合:通过PANet结构实现更好的小目标检测损失函数优化:使用CIoU损失提高边界框回归精度YOLOv8提供了多种规模的模型(n/s/m/l/x),可根据实际需求在精度和速度之间进行权衡。

YOLO 480

【AUTOSAR-COM】-2.3_通过PduGroup批量控制CAN Frame/Pdu的接收

-->如果实现类似UDS诊断 $28服务,控制所有APP CAN Rx Frame/Pdu/报文接收; -->自定义过滤CAN信号的接收。

「汽车电子助手」的博客 1989

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

声子相干的热学性质在计算材料领域有着非常重要的地位,我们可以通过第一性原理计算得到任一种晶体的热力学性质,但是很多小伙伴尤其是初学者还比较陌生,本文介绍基于DFT计算与声子相关的性质,是用VASP+phonopy+shengbte计算一种材料的声子谱,声子态密度,热力学性质(包括准简谐近似下的亥姆霍子自由能,等压热容Cp,热膨胀系数,格林爱森参数,和考虑高阶声子的声子散射,群速度,声子自由程,热导率等等)共分为如下几个部分: (1). 生成4个输入文件: POSCAR POTCAR INCAR..

320科技工作室 1万+

2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

针对YOLO26模型改进痛点,本专栏整理200+实战验证方法,覆盖卷积层、注意力机制等核心模块。 每种方法含原理、性能分析、改进路径及实操流程,代码可直接运行,快速提升模型效果,性价比超高。

魔改工程师的博客 1万+

VASP结合vaspkit+ShengBTE计算热电优值(二)

注意BTE.kappa_tensor文件中,每列对应的方向顺序分别为XX,XY,XZ,YX,YY,YZ,ZX,ZY,ZZ.且最后一行为有效的收敛值,使用时只需要取最后一行。这两种方法的计算结果都是可用的。原子层厚度=POSCAR 真空层方向相距最远的两个原子的范德华半径之和+POSCAR 真空层方向相距最远的两个原子的距离。目前有两种方法计算电子热导率,一种是使用BoltzTraP计算得到的电子热导减去TσS2。因此要计算ZT值,我们需要分别计算电导率σ,塞贝克系数S,电子热导率κe,晶格热导率κc。

320科技工作室 2460

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 144

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LAMMPS dynamical_matrix 命令完全指南:有限差分法计算晶格动力学矩阵与声子频率

`dynamical_matrix` 是 LAMMPS PHONON 包提供的一条直接命令,通过有限差分法(finite difference)对选定原子组逐一微扰,数值构造出体系的动力学矩阵(dynamical matrix),其本征值即对应波矢下的声子频率。它适合在已平衡的晶体结构上"一次性"获取动力学矩阵,与基于涨落-耗散理论的 [fix phonon](https://link.gitco

gitblog_00492的博客 426

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ShengBTE简单介绍、安装与使用

在ShengBTE和thirdorder安装文件中均带有其“使用说明书”,且都命名为README.md,里面有一些基本的安装、使用介绍,尤其是一些参数的介绍,初学者在使用之前要认真阅读并理解,对以后遇到问题有很大帮助,这也是对于软件的最基础的了解。这里主要是补充了我们make编译出的libsymspg.a文件的路径,以及更改了编译器为mpiifort,在下方也调整了MKL的配置,大家在安装的时候可以复制上方的内容,手动更改libsymspg.a文件的路径,然后可以尝试进行安装。

DFT_M的博客 7456

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

shengBTE计算热导率数值不对的可能原因

如使用cp2k计算力常数,通常使用QE等平面波软件,对于超胞体系,随着扩胞,在较大的截断半径下,所需计算量非常大,使用CP2K中的QS模块也能进行第一性原理计算,具有相对较高的计算效率,但是CP2K不同于平面波的QE等,计算中仅有gamma点计算,需要采用实空间较大超胞,如果使用和QE等相同的超胞,则会导致原子受力精度不高,一般在~0.0003Rh/bohr^2量级的误差,也会对某些体系,特别是二维体系的热导率有很大的影响。2.shengBTE的control文件中晶格参数单位默认nm,有转换系数的参数;

odin_linux的博客 3059

计算raman光谱,vasp+phonopy+phono3py+Phonopy-Spectroscopy

在使用第一性原理计算材料的raman光谱时,比较常用的两种软件是quantum espresso和vasp+phonopy,但是个人极度不推荐使用qe计算raman谱,qe计算raman时像PAW和USPP赝势都是不适配的,只能用LDA计算,很多金属算着也容易报错,很容易出虚频,加soc后也没法算raman intensity,本人深受其苦,不得已转而用phonopy。

V_Sanger的博客 1万+

高阶力常数插值方法

张量的简单理解。

lielie12138的博客 2112

phonopy制作shengBTE的FORCE_CONSTANTS_2ND

通过phonopy制作shengBTE的2阶力常数文件,如果shengBTE运行时出现: “wrong number of force constants for the specified scell” 这是因为phonopy输出的FORCE_CONSTANTS中考虑了对称性,不是完整的FORCE_CONSTANT,即里面应该有 超胞原子数*超胞原子数 组2阶力常数文件,可以打开生成的FORCE_CONSTANT文件,看第一行出现的两个数字是否是超胞内的总原子数。 如果不是,为了生成完整的FORCE

odin_linux的博客 2789

Phonopy-Spectroscopy计算材料红外和Raman光谱

声子谱的计算主要目的是获得二阶力常数文件FORCE_CONSTANTS,而为了计算光学性质,同时需要计算波恩电荷,写出BORN文件。它可以从Phonopy或VASP计算红外(IR)强度,和计算Raman活度张量和远离共振近似的标量平均强度。通过irreps.yaml的振动信息,并参考D3点组的字符表,判断可能显示Raman活动的模式,并生成计算文件。按照软件案例,作者可能更喜欢hdf5格式的数据文件,生成force_constants.hdf5文件的命令如下。bands的值为需要计算的模式。

DFT_M的博客 2177

VASP计算笔记_声子谱计算

声子谱计算 主要使用phonopy软件计算声子谱。版本:phonopy-2.1.3 密度泛函微软理论/线性响应方法 (DFPT) 必要的输入文件: INCAR KPOINTS POSCAR-unitcell #优化得到的初始晶胞 POTCAR band.conf 1 扩胞得到计算所需的POSCAR #在Linux终端直接运行命令 #1. 生成超胞 phonopy -d --dim="2 2 2" -c POSCAR-unitcell #--dim='2 2 2'表示'x y z'方扩的大小 #2. 将生成

tiandijunhao的博客 2万+

control命令详解

<br />http://apps.hi.baidu.com/share/detail/15609114<br /> <br />   Windows的命令列模式下有个非常好用的命令叫做Control。这个命令其实就是控制『控制台』的一个接口。你可以用这个命令直接叫起一些平常要找很久才会找到的窗口。最简单的一个例子,你只要在『开始』 -> 『执行』中输入”control“。就可以开启控制台窗口。<br /><br />以下列出一些网络上面找到的相关命令:<br />命令参数<br />平台<br />说明<

qk_zhu的专栏 9116

使用GULP(General Utility Lattice Program)计算声子结构和晶格动力学下热导率

GULP(General Utility Lattice Program)基于经典的势能模型,能够以此计算材料的一系列物性,包括晶格优化,原子位置优化,经典势能模型参数拟合,声子计算,缺陷计算等。 这里主要介绍

odin_linux的博客 4111

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 405
上一篇: 第一性原理计算QE开启自旋轨道耦合计算
下一篇: 声子计算出现虚频
odin_linux
博客等级 码龄8年 93粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值