资讯动态

Wannier90 3.1.0编译安装指南:用conda打造可复现计算环境

发布时间:2026/9/2 21:54:43 来源:尧图企业网站定制
简介Wannier90 3.1.0 Linux版源码压缩包专为从事材料科学、凝聚态物理第一性原理计算的研究者而备。该版本针对能带结构、Wannier函数与多体相互作用等场景进行优化算法更稳定、计算速度更快。资源包共1216个文件、约96.52MB内容结构清晰既有f90源程序、makefile编译文件也有大量win输入模板、pdf/tex说明文档、png示意图以及eig、amn、mmn、nscf等中间输出样例覆盖从环境配置、编译安装到与VASP、Quantum ESPRESSO等主流软件联用的完整环节。包内还包含gfortran、ifort、OpenMPI等不同编译器与并行环境的配置示例以及若干测试脚本和辅助文件便于在不同Linux发行版上快速适配。已有1607人学习下载。借助丰富的模板与实例初学者能快速掌握安装与基本使用有经验的研究者也可从中获取可复用的输入参数和排错思路是开展电子结构研究的高价值参考资料。 如果一个做第一性原理计算的人电脑里还没有wannier90-3.1.0.tar.gz这个文件要么他还没开始做瓦尼尔相关的工作要么就是刚从老版本迁移过来。这个 tar.gz 就是 Wannier90 3.1.0 的官方源码包解压之后通过 make 编译能得到wannier90.x和postw90.x两个可执行文件。对我这种常年跟能带、拓扑性质打交道的人来说它解决的是从平面波基组波函数到局域瓦尼尔函数MLWF的转换问题说白了就是让 DFT 那堆散开的电子态变成一组干净、局域、可以直接拿来做紧束缚拟合或算输运性质的轨道。搞材料模拟、做反常霍尔效应、算 Berry 相或者准备给 WannierTools 喂数据的人都绕不开这个包。1. 解压之前先说清楚这套工具是干嘛的1.1 tar.gz 里到底有什么我见过不少人拿到压缩包直接tar xzf然后看到一堆.f90、.py、examples目录就懵了。其实 wannier90-3.1.0 的核心就三块src/主程序源码包含wannier90.f90、postw90.f90以及一堆模块postw90是算输运、Berry 曲率等性质的后处理模块。examples/几十个从简单到复杂的示例每个示例都有.win和.mmn文件这些就是跑通整个流程的最小输入。config/编译配置模板里面有make.inc.gfortran、make.inc.ifort这是编译前必须改的东西。具体目录结构类似wannier90-3.1.0/ ├── config/ ├── examples/ ├── src/ ├── Makefile ├── make.inc.gfortran ├── make.inc.ifort └── README注意bin/目录一般是编译后才生成的别在解压后满世界找可执行文件。1.2 为什么要用瓦尼尔函数先不谈代码讲一个可能更直观的类比。DFT 平面波计算像是对一座城市每一栋楼都拍了一张全景航拍图信息量巨大但非常杂乱而瓦尼尔函数相当于把每一栋楼单独拍成一张标好坐标的证件照。你要做后续分析比如算电导、算拓扑不变量、拟合紧束缚模型拿着证件照肯定比翻整张航拍图要顺手得多。Wannier90 干的事就是读取 DFT 输出的波函数重叠矩阵.mmn通过迭代最小化 spread 得到最大局域瓦尼尔函数MLWF。有了 MLWF能带插值、构建紧束缚模型、计算实空间 Hamiltonian 都会高效很多。postw90还能直接算 Berry 曲率、反常霍尔电导、自旋矩等省得自己去写复杂的 k 空间积分。1.3 谁需要装这个版本用 VASP、QE、ABINIT、CP2K 等 DFT 代码的人需要这些代码生成能传给 wannier90 的输入文件。需要把 DFT 结果转成紧束缚模型供 WannierTools、WannierBerri 做后续拓扑或输运分析的人。做光电、自旋电子学、热电材料计算需要插值大 k 网格能带的人。如果你只是跑跑结构优化不关心局域轨道和输运性质那暂时不装也没问题。2. 编译安装 wannier90 3.1.0 的完整实操2.1 编译前的环境准备不要一上来就makewannier90 的 Makefile 不会自动探测本机环境。你需要一套 Fortran 编译器和 BLAS/LAPACK 数学库。推荐用 conda 管理这套工具链后面维护起来会省心很多。创建环境conda create -n w90-dev -c conda-forge gfortran openblas mpich conda activate w90-dev这里面的逻辑是wannier90 是 Fortran 写的源码里有很多-DMPI这种预处理指令所以你需要一个支持预处理器的 Fortran 编译器BLAS/LAPACK 则是它做线性代数运算的基础。gfortran对新手最友好mpich提供了mpif90和并行运行环境。如果你确定只跑串行可以不装 mpich但后面postw90处理大体系时并行会很香。先验证一下环境which gfortran gfortran --version which mpif90 mpif90 --version2.2 解压 tar.gz 源码包用 Linux 自带 tar 解压路径里别有中文和空格tar -zxf wannier90-3.1.0.tar.gz cd wannier90-3.1.0这里有个小坑如果你是从 Windows 下载再传到服务器上千万别用 Windows 的解压工具去解压否则 Makefile 的换行符可能会出问题。直接在服务器上用 tar 解压最稳。2.3 配置 make.inc进入目录后第一件事是复制模板cp config/make.inc.gfortran make.inc然后用文本编辑器打开make.inc注意这几个关键项F90 gfortran COMMS MPI MPIF90 mpif90 FLAGS -O2 -cpp LIBS -L$(CONDA_PREFIX)/lib -lblas -llapackF90和MPIF90串行版用F90并行版用MPIF90。COMMS指定通信库MPI表示并行serial表示串行。FLAGS里的-cpp非常重要wannier90 源码里用了 C 预处理器来处理 MPI 条件编译没有-cpp会出现各种syntax error。LIBS要指向你的 BLAS/LAPACK。在 conda 环境下直接写$CONDA_PREFIX/lib能自动跟随当前环境避免写成写死的/usr/lib导致以后换机器就废了。如果你用的是 Intel 编译器模板对应make.inc.ifort但注意 3.1.0 对新版ifx的兼容性可能需要额外加-lifcore遇到再查。2.4 执行编译配置没问题后直接make -j4-j4是并行编译4 个任务同时跑能快不少。首次编译会生成libwannier.a、wannier90.x和postw90.x对应的二进制会放在bin/目录。如果只想编译主程序不编译后处理可以用make wannier90但一般建议全编因为postw90在算拓扑性质时几乎是必需品。编译完成后看一眼目录ls -l bin/如果看到postw90.x和wannier90.x基本就成了。2.5 用官方例子验证安装验证安装是很多人忽略的一步。Wannier90 自带 examples其中example01是最小的铁晶体结构适合做冒烟测试。把例子拷贝到你的测试目录cp -r examples/example01 /tmp/w90test cd /tmp/w90test /path/to/wannier90-3.1.0/bin/wannier90.x wannier90.win正常情况下会生成一堆.out、.chk、.mmn文件最后显示类似完成提示。如果这里都能过你的编译环境基本没问题。3. 用 conda 环境把 wannier90 变成可复用的计算环境3.1 为什么值得花时间管理环境很多老手喜欢直接在系统里apt install gfortran然后链/usr/lib下的 BLAS但换一台机器就全部重来。用 conda 环境的好处是依赖隔离、版本可控而且不需要 sudo。尤其是当你的机器上同时有 Intel 编译器、NVHPC、gfortran 多套工具链时一个环境对应一套版本组合互不干扰。我在编译 wannier90 时会把编译器、MPI、OpenBLAS 全部装进同一个环境这样make.inc里的路径全部是相对$CONDA_PREFIX的拷到别的机器上重新部署也更快。3.2 从零创建并编译的完整步骤这里给出一套我在 x86 Linux 服务器上实际用过的流程conda create -n w90-3.1.0 -c conda-forge gfortran openblas mpich conda activate w90-3.1.0 cd ~/src tar -zxf wannier90-3.1.0.tar.gz cd wannier90-3.1.0 cp config/make.inc.gfortran make.inc修改make.inc将 LIBS 部分写成LIBS -L$(CONDA_PREFIX)/lib -lblas -llapack然后编译make -j4这个组合我实测下来很稳。openblas是高性能 BLAS 实现mpich是 MPI 实现两者在 conda-forge 上都有预编译版本安装速度快兼容性也比较好。3.3 “conda 环境 tar.gz 创建环境”到底指什么搜索的时候经常看到“conda 环境 tar.gz 创建环境”这个说法这个词其实很容易和源码包的 tar.gz 混淆。Wannier90 的wannier90-3.1.0.tar.gz是源码压缩包而 conda 里“把环境打包成 tar.gz 再创建环境”是另一件事通常用conda pack实现。如果你想把刚才编译好的 wannier90 环境从一台机器搬到另一台无法联网的集群上可以这样conda install -n w90-3.1.0 conda-pack conda pack -n w90-3.1.0 -o w90-env.tar.gz在目标机器上mkdir -p ~/envs/w90-3.1.0 tar -xzf w90-env.tar.gz -C ~/envs/w90-3.1.0 source ~/envs/w90-3.1.0/bin/activate这样就把整个环境连同 gfortran、MPI、甚至是编译好的 wannier90 一起带过去了前提是目标机器操作系统架构一致。不少人把“环境 tar.gz”和“源码 tar.gz”搞混拿着w90-env.tar.gz去 make那肯定不行。3.4 设置 PATH 让 wannier90 随处可用环境激活后顺手把 wannier90 的 bin 目录加进PATHexport PATH$HOME/soft/wannier90-3.1.0/bin:$PATH export LD_LIBRARY_PATH$CONDA_PREFIX/lib:$LD_LIBRARY_PATH建议把这两行写到当前 conda 环境激活脚本里比如conda activate w90-3.1.0 mkdir -p $CONDA_PREFIX/etc/conda/activate.d cat EOF $CONDA_PREFIX/etc/conda/activate.d/export-w90-path.sh export PATH$HOME/soft/wannier90-3.1.0/bin:\$PATH export LD_LIBRARY_PATH\$CONDA_PREFIX/lib:\$LD_LIBRARY_PATH EOF这样以后一激活环境只要wannier90.x wannier90.win就能运行不用每次手敲路径。4. 编译和运行中的常见问题排查4.1 编译报错syntax error in wannier90.f90大概率是make.inc里少了-cpp。Wannier90 3.x 源码大量使用#ifdef MPI这种 C 预处理器指令Fortran 编译器默认不认必须开启。gfortran 用-cppifort 用-fpp老版本 Intel 编译器可能还需要-DMPI。4.2 链接阶段 undefined reference todgemm_这一看就是 BLAS 没链上。dgemm是 BLAS 里矩阵乘法的符号wannier90 计算 overlap 的时候会调用它。检查make.inc中LIBS是否真的包含-lblas -llapack或者确认$CONDA_PREFIX/lib下有没有实际的.so文件。有时候 conda 装的是libopenblas.so所以也可以用-lopenblas。可以先用一个小程序测试链接库是否正常echo program test call dgemm end program test.f90 gfortran test.f90 -L$CONDA_PREFIX/lib -lblas -llapack如果依然报错就是库路径不对。用find $CONDA_PREFIX -name *blas*看看实际文件名再改LIBS。4.3 并行版一运行就崩溃并行版运行时要用mpirunmpirun -np 4 wannier90.x wannier90.win注意wannier90.win里要设置相关的 MPI 参数。常见崩溃原因是编译时mpif90和运行时mpirun不是同一套 MPI。conda 环境一般还好最怕是你 conda 环境里装了 mpich但 shell 里which mpirun指向系统另一个 openmpi。激活环境后先执行which mpirun确认路径在$CONDA_PREFIX/bin下。4.4 与 VASP/QE 等 DFT 代码对接不上wannier90 本身只是后处理前面需要 DFT 代码输出能带结构和 overlap。VASP 新版本里已经内置了 wannier90 接口但需要你在编译 VASP 时链接 wannier90 的库且 VASP 版本和 wannier90 版本要匹配。比如 VASP 6.4/6.5 对 wannier90 3.1 的支持比较完善。QE 的话需要用pw2wannier90工具注意版本一致最好先跑一遍自带例子里的对应示例确认接口格式没问题再算自己的体系。4.5 tar.gz 解压后的隐藏问题如果你是在 mac 或 Windows 本地解压再上传可能会遇到 Makefile 换行符、权限问题。建议服务器上统一执行tar -zxf wannier90-3.1.0.tar.gz chmod -R urwX wannier90-3.1.0这样至少能避免很多Permission denied。为了方便排查我把最常遇到的几个问题整理成一个速查表错误现象最可能原因对策syntax error缺少 -cpp/-fppmake.inc 增加预处理器选项undefined reference to dgemm_BLAS 未链接修改 LIBS 为 -lblas -llapack 或 -lopenblasmpirun 找不到命令未激活 MPI 环境确认 which mpirun 指向 conda 环境VASP 接口编译失败wannier90 版本不匹配换用 VASP 官方推荐的 wannier90 版本bin/wannier90.x 没生成编译中断看 make 日志第一个 error最后再分享一个自己的小习惯每拿到一个新版本的wannier90-3.1.0.tar.gz我不会急着编译到任何项目目录而是先建一个独立 conda 环境完整跑一遍 example01 和 example02再把 make.inc、环境信息记录到项目 README 里。这样过了半年再回来看到 README 里写的什么版本、什么编译器、什么路径就能立刻复现整个环境。编译这种计算软件最怕的不是第一次装不上而是装完就忘了当初怎么装的。有个可复现的 conda 环境至少能让未来的自己少踩几个坑。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价