资讯详情

Python aiida-qe-app 包实战案例与常见错误

📅 2026/10/18 6:11:49 | 华诺云谱 👁 阅读
Python aiida-qe-app 包实战案例与常见错误
1. 引言aiida-qe-app 是基于 AiiDA 工作流框架、面向 Quantum ESPRESSOQE第一性原理计算的高层应用包。它把输入文件准备、任务提交、结果解析、数据归档等繁琐步骤封装成可复用的工作流让科研人员可以更专注于物理问题本身。本文将从功能、安装、语法、参数、9 个实际应用案例以及常见错误与注意事项六个方面系统介绍 aiida-qe-app 的使用方法。2. 核心功能aiida-qe-app 的核心功能可以概括为以下四类工作流封装将 Quantum ESPRESSO 的 pw.x、cp.x、ph.x 等计算任务封装为 AiiDA 工作流支持结构优化、自洽计算、能带计算、态密度计算等常见场景。数据管理自动记录输入结构、参数、伪势、输出结果等 provenance 信息保证计算可追溯、可复现。结果解析内置解析器自动提取能量、力、应力、能带、态密度等物理量并存入 AiiDA 数据库。批量与参数扫描支持对截断能、k 点密度、晶格常数等参数进行批量扫描便于收敛性测试和相图计算。3. 安装与环境配置aiida-qe-app 依赖 AiiDA 核心、Quantum ESPRESSO 可执行文件以及若干 Python 库。推荐使用 conda 或 pip 安装。# 创建并激活 conda 环境 conda create -n aiida-qe python3.10 conda activate aiida-qe 安装 AiiDA 核心推荐使用 2.x 版本 pip install aiida-core2.5.0 安装 aiida-qe-app pip install aiida-qe-app 初始化 AiiDA 配置文件 aiida-ctl profile init --profile qe-profile 安装 Quantum ESPRESSO 可执行文件以 Ubuntu 为例 sudo apt install quantum-espresso安装完成后需要把 QE 可执行文件注册到 AiiDA 中并配置伪势库。伪势建议使用 SSSP 库可通过 aiida-pseudo 插件安装。# 注册 pw.x 可执行文件 aiida-ctl code setup --label pw --computer localhost --remote-abs-path /usr/bin/pw.x 安装 SSSP 伪势库 aiida-pseudo install sssp --version 1.3.0 --family SSSP/1.3/PBE4. 基本语法与工作流调用aiida-qe-app 的核心入口是QeAppWorkchain及其子类。用户通过构建输入字典并调用工作流即可提交计算。下面是一个最基础的自洽计算示例。from aiida import load_profile from aiida.orm import StructureData, Dict, KpointsData from aiida.plugins import WorkflowFactory load_profile() 构建结构以硅为例 import numpy as np cell np.array([ [0.0, 2.735, 2.735], [2.735, 0.0, 2.735], [2.735, 2.735, 0.0], ]) structure StructureData(cellcell) structure.append_atom(position(0.0, 0.0, 0.0), symbolsSi) structure.append_atom(position(0.25, 0.25, 0.25), symbolsSi) 构建参数 parameters Dict(dict{ CONTROL: {calculation: scf, restart_mode: from_scratch}, SYSTEM: {ecutwfc: 40.0, ecutrho: 320.0, occupations: smearing, smearing: gaussian, degauss: 0.01}, ELECTRONS: {conv_thr: 1e-8, mixing_beta: 0.7}, }) 构建 k 点 kpoints KpointsData() kpoints.set_kpoints_mesh([4, 4, 4]) 提交工作流 QeAppWorkchain WorkflowFactory(quantum_espresso.app) inputs { structure: structure, parameters: parameters, kpoints: kpoints, pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: Si-scf-test}, } result QeAppWorkchain.submit(inputs) print(f工作流提交成功PK {result.pk})工作流提交后可以通过verdi process list查看状态通过verdi process show pk查看详情通过verdi calcjob output pk查看输出文件。5. 常用参数详解aiida-qe-app 的参数体系与 Quantum ESPRESSO 的输入卡片一一对应同时增加了一些 AiiDA 特有的控制参数。下面按类别说明。5.1 结构相关参数structureAiiDA 的 StructureData 对象包含晶胞和原子坐标。pseudos字典键为元素符号值为伪势家族名或 UUID。5.2 计算控制参数parametersDict 对象对应 QE 的 CONTROL、SYSTEM、ELECTRONS 等卡片。kpointsKpointsData 对象定义 k 点网格或路径。code字符串或 Code 对象指定使用的 QE 可执行文件。5.3 工作流级参数relax_type可选 none、positions、cell、positions_cell控制结构优化类型。max_iterations结构优化最大迭代次数。convergence_threshold力与应力的收敛阈值。protocol预置的精度协议如 fast、moderate、precise可快速设置截断能和 k 点密度。下表总结了常用参数及其默认值。参数名类型默认值说明relax_typestrnone结构优化类型protocolstrmoderate精度协议ecutwfcfloat由 protocol 决定平面波截断能Ryecutrhofloat由 protocol 决定电荷密度截断能Rykpoints_meshlist由 protocol 决定k 点网格conv_thrfloat1e-8电子自洽收敛阈值smearingstrgaussian展宽方法degaussfloat0.01展宽宽度Ry6. 9 个实际应用案例案例 1硅的晶格常数优化通过扫描晶格常数找到能量最低点确定平衡晶格常数。这是最基础的收敛性测试。from aiida.orm import load_node from aiida.plugins import WorkflowFactory QeAppWorkchain WorkflowFactory(quantum_espresso.app) lattice_constants [5.40, 5.43, 5.46, 5.49, 5.52] for a in lattice_constants: structure StructureData(cell[[0, a/2, a/2], [a/2, 0, a/2], [a/2, a/2, 0]]) structure.append_atom(position(0, 0, 0), symbolsSi) structure.append_atom(position(a/4, a/4, a/4), symbolsSi) inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: scf}, SYSTEM: {ecutwfc: 40, ecutrho: 320}}), kpoints: KpointsData().set_kpoints_mesh([6, 6, 6]), pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: fSi-a-{a}}, } QeAppWorkchain.submit(inputs)案例 2水的结构优化对水分子进行结构优化固定晶胞只优化原子位置。# 构建水分子结构 structure StructureData(cell[[10, 0, 0], [0, 10, 0], [0, 0, 10]]) structure.append_atom(position(0, 0, 0), symbolsO) structure.append_atom(position(0.957, 0, 0), symbolsH) structure.append_atom(position(-0.240, 0.927, 0), symbolsH) inputs { structure: structure, parameters: Dict(dict{ CONTROL: {calculation: relax}, SYSTEM: {ecutwfc: 50, ecutrho: 400, occupations: fixed}, ELECTRONS: {conv_thr: 1e-8}, }), kpoints: KpointsData().set_kpoints_mesh([1, 1, 1]), pseudos: {O: SSSP/1.3/PBE, H: SSSP/1.3/PBE}, code: pwlocalhost, relax_type: positions, metadata: {label: H2O-relax}, } QeAppWorkchain.submit(inputs)案例 3能带结构计算先做自洽计算再沿高对称路径计算能带。aiida-qe-app 提供了专门的能带工作流。from aiida.plugins import WorkflowFactory BandsWorkchain WorkflowFactory(quantum_espresso.app.bands) inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: scf}, SYSTEM: {ecutwfc: 40}}), kpoints: KpointsData().set_kpoints_mesh([6, 6, 6]), pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: Si-bands}, } BandsWorkchain.submit(inputs)案例 4态密度DOS计算在自洽计算基础上用更密的 k 点网格计算态密度。DosWorkchain WorkflowFactory(quantum_espresso.app.dos) inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: scf}, SYSTEM: {ecutwfc: 40}}), kpoints: KpointsData().set_kpoints_mesh([12, 12, 12]), pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: Si-dos}, } DosWorkchain.submit(inputs)案例 5截断能收敛性测试扫描不同 ecutwfc观察总能量变化确定收敛的截断能。ecutwfc_list [20, 30, 40, 50, 60] for ecut in ecutwfc_list: inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: scf}, SYSTEM: {ecutwfc: ecut, ecutrho: 8*ecut}}), kpoints: KpointsData().set_kpoints_mesh([6, 6, 6]), pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: fSi-ecut-{ecut}}, } QeAppWorkchain.submit(inputs)案例 6k 点密度收敛性测试扫描不同 k 点网格密度检查总能和力的收敛情况。kmesh_list [[2, 2, 2], [4, 4, 4], [6, 6, 6], [8, 8, 8]] for kmesh in kmesh_list: inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: scf}, SYSTEM: {ecutwfc: 40}}), kpoints: KpointsData().set_kpoints_mesh(kmesh), pseudos: {Si: SSSP/1.3/PBE}, code: pwlocalhost, metadata: {label: fSi-kmesh-{kmesh[0]}}, } QeAppWorkchain.submit(inputs)案例 7表面能计算构建 slab 模型计算表面能。需要先优化 slab 结构再计算体相能量。# 构建 Al(100) 表面 slab structure StructureData(cell[[4.05, 0, 0], [0, 4.05, 0], [0, 0, 20]]) # 添加 Al 原子层此处省略具体坐标 # ... inputs { structure: structure, parameters: Dict(dict{CONTROL: {calculation: relax}, SYSTEM: {ecutwfc: 40}}), kpoints: KpointsData().set_kpoints_mesh([6, 6, 1]), pseudos: {Al: SSSP/1.3/PBE}, code: pwlocalhost, relax_type: positions, metadata: {label: Al-100-slab}, } QeAppWorkchain.submit(inputs)案例 8吸附能计算计算分子在表面的吸附能需要分别计算吸附体系、干净表面和自由分子的能量。# 吸附体系 inputs_ads { structure: structure_ads, # 吸附结构 parameters: Dict(dict{CONTROL: {calculation: relax}, SYSTEM: {ecutwfc: 40}}), kpoints: KpointsData().set_kpoints_mesh([4, 4, 1]), pseudos: {Al: SSSP/1.3/PBE, H: SSSP/1.3/PBE}, code: pwlocalhost, relax_type: positions, metadata: {label: H-ads-on-Al}, } QeAppWorkchain.submit(inputs_ads) # 干净表面和自由分子的计算类似此处省略《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑