news 2026/6/13 19:01:09

一个脚本使用VASPBERRY计算所有能带BERRY曲率和陈数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个脚本使用VASPBERRY计算所有能带BERRY曲率和陈数

VASPBERRY程序可以使用VASP计算得到的WAVECAR,计算体系在布里渊区的贝里曲率,使用方法非常简单,参数很少,

使用方法和绘图代码参考:

vaspberry,拓扑以及谷电子学神器!

准备工作

软件下载

    https://github.com/Infant83/VASPBERRY

    编译

      Serial version :ifort -fpp -assume byterecl -mkl -o vaspberry vaspberry.fMulticore version :mpif90 -DMPI_USE -mkl -fpp -assume byterecl -o vaspberry vaspberry.fNote for gfortran: For gfortran, please use vaspberry_gfortran_serial.f for the compilation. This only support non-parallel calculations. For the compilation, for examplegfortran -L/usr/local/lib/lapack/ -l lapack -o vaspberry vaspberry_gfortran_serial.f

      完成后写环境变量

      VASP计算,INCAR内必须加SOC

        Global ParametersISTART = 1 (Read existing wavefunction, if there)ISPIN = 1 (Non-Spin polarised DFT)# ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)LREAL = .FALSE. (Projection operators: automatic)ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)LWAVE = .TRUE. (Write WAVECAR ornot)LCHARG = .TRUE. (Write CHGCAR ornot)ADDGRID= .TRUE. (Increase grid, helps GGA convergence)LASPH = .TRUE. (Give more accurate total energies and band structure calculations)PREC = Accurate (Accurate strictly avoids any aliasing or wrap around errors)Static CalculationISMEAR = 0 (gaussian smearing method)SIGMA = 0.05 (please check the width of the smearing)LORBIT = 11 (PAW radii for projected DOS)NEDOS = 2001 (DOSCAR points)NELM = 60 (Max electronic SCF steps)EDIFF = 1E-08 (SCF energy convergence, in eV)Spin-Orbit Coupling CalculationLSORBIT = .TRUE. (Activate SOC)GGA_COMPAT = .FALSE. (Apply spherical cutoff on gradient field)VOSKOWN = 1 (Enhances the magnetic moments and the magnetic energies)LMAXMIX = 4 (For d elements increase LMAXMIX to 4, f: LMAXMIX = 6)ISYM = -1 (Switch symmetry off)# SAXIS = 001 (Direction of the magnetic field)# MAGMOM = 003 (Set this parameters manually, Local magnetic moment parallel to SAXIS, 3*NIONS*1.0for non-collinear magnetic systems)# NBANDS = (Set this parameters manually, 2 * number of bands of collinear-run)

        注:SOC要根据体系增加NABDS(脚本会自动读取)

        KPOINTS根据体系设定(脚本会自动读取)

        K-Spacing Value to Generate K-Mesh: 0.0400Gamma15 15 10.0 0.0 0.0

        数据处理脚本

          #!/bin/bash#========= 0. 环境 =========set -e # 遇错即停module purge 2>/dev/null # 如用集群,自行加 module 加载行#========= 1. 读 NBANDS ======NBANDS=$(grep -m1 NBANDS OUTCAR | awk '{print $NF}')[[ -z "$NBANDS" ]] && { echo " 找不到 NBANDS"; exit1; }echo " NBANDS = $NBANDS"#========= 2. 读 K 网格 ======#read kx ky kz < <(awk 'NR==4{print $1,$2,$3}' KPOINTS)#echo " k-grid = $kx $ky $kz"# 改成兼容写法kx=$(awk 'NR==4{print $1}' KPOINTS)ky=$(awk 'NR==4{print $2}' KPOINTS)kz=$(awk 'NR==4{print $3}' KPOINTS)echo "k-grid = $kx $ky $kz"#========= 3. 生成画图脚本 ==cat > BC.py <<'EOF'#!/usr/bin/env pythonimport numpy as npimport matplotlib.pyplot as pltfrom scipy.interpolate import griddataimport osfilein = 'BERRYCURV.dat'fileou = 'BERRYCURV.pdf'data = np.loadtxt(filein)x, y, z = data[:,0], data[:,1], data[:,3]nx = ny = 600xi = np.linspace(x.min(), x.max(), nx)yi = np.linspace(y.min(), y.max(), ny)zi = griddata((x, y), z, (xi[None,:], yi[:,None]))levels = np.linspace(z.min(), z.max(), 51)plt.contourf(xi, yi, zi, levels=levels, cmap='coolwarm', alpha=0.75)plt.colorbar(format='%4.3f')plt.axis('equal')plt.axis('off')plt.savefig(fileou, bbox_inches='tight', pad_inches=0, transparent=True)plt.close()EOFecho bands Chern Number >>Chern_Number.dat#========= 4. 主循环 ========for i in $(seq 1 $NBANDS); doecho ">>> 计算 band $i ..."mkdir -p band-$i# 单带 Berry 曲率vaspberry -kx $kx -ky $ky -is $i >& log# 画图python BC.py# 归档mv BERRYCURV.pdf BERRYCURV.dat log band-$iC=$(grep "Chern Number =" band-$i/BERRYCURV.dat | awk -F'=' '{printf"%12.6f\n", $2}')echo band-$i $C >>Chern_Number.datdone

          保存脚本重命名为vaspberry.sh

          然后运行

            sh vaspberry.sh

              $ cat Chern_Number.datbands Chern Numberband-1-1.000000band-21.000000band-33.000000band-4-3.000000band-5-1.000000band-61.000000band-7-2.000000band-82.000000band-9-3.000000band-103.000000band-111.000000band-12-1.000000band-134.000000band-14-4.000000band-15-2.000000band-162.000000band-170.000000band-18-0.000000band-192.000000band-20-0.000000band-21-2.000000band-224.000000band-23-2.000000band-24-1.000000

              绘图效果

              版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
              网站建设 2026/6/12 12:44:40

              路线图规划:下一阶段将推出3B参数版本

              路线图规划&#xff1a;下一阶段将推出3B参数版本 在大模型军备竞赛愈演愈烈的今天&#xff0c;百亿、千亿参数的庞然大物不断刷新榜单记录&#xff0c;但与此同时&#xff0c;另一条技术路径正悄然崛起——用更少的参数&#xff0c;做更专的事。当主流视线聚焦于“更大更强”时…

              作者头像 李华
              网站建设 2026/6/7 9:20:07

              计算机视觉与AI如何从照片测算体脂并生成3D模型

              Halo Body功能背后的科学原理 借助某中心的Halo服务&#xff0c;个人可以测量自己的体脂百分比&#xff0c;并通过个性化的3D模型进行追踪。这种级别的扫描通常只有通过昂贵且精密的机器才能实现&#xff0c;但Halo的Body功能使其可以通过Halo应用程序在任何智能手机上使用。为…

              作者头像 李华
              网站建设 2026/5/28 20:40:57

              社会责任践行:向偏远地区学校捐赠算力

              社会责任践行&#xff1a;向偏远地区学校捐赠算力 在云南怒江峡谷深处的一所中学里&#xff0c;信息课教师李老师正用一台老旧笔记本投影一段 Python 代码。学生们围坐一圈&#xff0c;盯着屏幕上跳动的字符&#xff0c;眼神中满是好奇与渴望。他们从未见过真正的 AI 模型运行&…

              作者头像 李华
              网站建设 2026/5/28 15:24:58

              JavaScript开发者也能用的推理模型:VibeThinker实战案例分享

              JavaScript开发者也能用的推理模型&#xff1a;VibeThinker实战案例分享 在LeetCode上卡壳半小时&#xff0c;只因没看出那道“滑动窗口”题的本质&#xff1f;Codeforces比赛倒计时最后一分钟&#xff0c;代码写完了却通不过最后一个测试点&#xff1f;如果你是一名常与算法打…

              作者头像 李华
              网站建设 2026/6/10 0:27:02

              寝室小卖部系统|基于springboot 寝室小卖部管理系统(源码+数据库+文档)

              寝室小卖部 目录 基于springboot vue寝室小卖部系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue寝室小卖部系统 一、前言 博主介绍&#xff1a…

              作者头像 李华