
1. 引言aiida-phtools 是一个基于 AiiDA 工作流框架的 Python 包专门用于高通量声子计算与热力学性质分析。它把第一性原理计算、声子色散、态密度以及热力学量如自由能、熵、热容的计算流程封装成可复用的工作流帮助材料科学研究者以自动化、可追溯的方式完成声子相关的计算任务。本文将从功能特性、安装方法、核心语法与参数、9 个实际应用案例以及常见错误与注意事项五个方面系统介绍 aiida-phtools 的使用方法。2. 功能概述aiida-phtools 的核心价值在于把复杂的声子计算流程标准化、模块化。它主要提供以下几类功能声子色散计算基于有限位移法或密度泛函微扰理论DFPT自动生成超胞、施加位移并收集力常数最终得到声子色散和声子态密度。热力学性质计算从声子态密度出发自动计算亥姆霍兹自由能、熵、定容热容、定压热容等热力学量。工作流编排把结构优化、超胞构建、位移计算、力常数提取、后处理等步骤串联成完整工作流支持断点续算和结果缓存。数据可追溯所有输入输出都以 AiiDA 节点形式存储计算过程、参数、结果之间的依赖关系完整保留便于复现和审计。与 Phonopy 深度集成底层调用 Phonopy 完成力常数到声子性质的转换同时保留 AiiDA 的自动化管理能力。3. 安装方法aiida-phtools 的安装依赖 Python 3.8 及以上版本并需要先安装 AiiDA 核心框架。推荐使用 conda 或 pip 进行安装。3.1 环境准备建议先创建独立的 conda 环境避免依赖冲突conda create -n aiida-ph python3.9 conda activate aiida-ph3.2 安装 AiiDA 核心pip install aiida-core3.3 安装 aiida-phtoolspip install aiida-phtools如果需要使用 Phonopy 的额外功能可以一并安装pip install phonopy3.4 初始化 AiiDA 数据库安装完成后需要初始化 AiiDA 的配置文件和数据库verdi quicksetup该命令会引导你设置数据库连接、存储后端和默认用户信息。初始化完成后可以通过verdi profile list查看当前配置文件。4. 核心语法与参数aiida-phtools 的使用围绕工作流Workflow和计算Calculation两个层次展开。下面介绍最常用的语法结构。4.1 导入与基础设置from aiida import load_profile from aiida.orm import load_node, Dict, StructureData from aiida_phtools.workflows.phonon import PhononWorkchain load_profile()4.2 提交声子工作流最核心的接口是PhononWorkchain它封装了从结构优化到声子性质计算的完整流程。基本提交方式如下from aiida.engine import run 准备输入结构以 NaCl 为例 structure StructureData(cell[[5.64, 0, 0], [0, 5.64, 0], [0, 0, 5.64]]) structure.append_atom(position(0, 0, 0), symbolsNa) structure.append_atom(position(2.82, 2.82, 2.82), symbolsCl) 提交工作流 result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [2, 2, 2], distance: 0.01, mesh: [11, 11, 11], temperature: 300, }), protocolstandard )4.3 常用参数说明参数名类型说明默认值structureStructureData输入晶体结构必须包含晶胞和原子坐标无codeCode底层 DFT 计算代码如 Quantum ESPRESSO 的 pw.x无supercelllist超胞扩展倍数如 [2, 2, 2] 表示 2x2x2 超胞[2, 2, 2]distancefloat有限位移法中原子位移距离单位 Å0.01meshlist声子态密度计算的 k 点网格[11, 11, 11]temperaturefloat热力学性质计算的目标温度单位 K300protocolstr计算精度协议可选 standard、fast、precisestandard4.4 结果获取工作流运行完成后结果以字典形式返回包含声子色散数据、态密度和热力学量# 获取声子态密度 dos result[dos] # 获取热力学性质 thermo result[thermodynamic_properties] # 获取声子色散路径数据 bands result[phonon_bands]5. 9 个实际应用案例5.1 案例一NaCl 声子色散计算这是最基础的入门案例计算岩盐结构 NaCl 的声子色散曲线验证工作流的基本功能。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() structure StructureData(cell[[5.64, 0, 0], [0, 5.64, 0], [0, 0, 5.64]]) structure.append_atom(position(0, 0, 0), symbolsNa) structure.append_atom(position(2.82, 2.82, 2.82), symbolsCl) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [2, 2, 2], distance: 0.01, mesh: [11, 11, 11], }), protocolstandard ) print(声子色散计算完成节点 ID:, result[phonon_bands].pk)5.2 案例二Si 热力学性质计算计算金刚石结构硅的声子态密度并提取 300 K 下的热容和熵。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() 硅的晶胞晶格常数 5.43 Å structure StructureData(cell[[5.43, 0, 0], [0, 5.43, 0], [0, 0, 5.43]]) structure.append_atom(position(0, 0, 0), symbolsSi) structure.append_atom(position(1.3575, 1.3575, 1.3575), symbolsSi) structure.append_atom(position(2.715, 2.715, 0), symbolsSi) structure.append_atom(position(4.0725, 4.0725, 1.3575), symbolsSi) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [2, 2, 2], distance: 0.01, mesh: [21, 21, 21], temperature: 300, }), protocolstandard ) thermo result[thermodynamic_properties] print(300 K 下 Si 的定容热容:, thermo[cv]) print(300 K 下 Si 的熵:, thermo[entropy])5.3 案例三MgO 声子态密度与自由能计算 MgO 的声子态密度并输出不同温度下的亥姆霍兹自由能用于热力学稳定性分析。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() MgO 岩盐结构晶格常数 4.21 Å structure StructureData(cell[[4.21, 0, 0], [0, 4.21, 0], [0, 0, 4.21]]) structure.append_atom(position(0, 0, 0), symbolsMg) structure.append_atom(position(2.105, 2.105, 2.105), symbolsO) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [2, 2, 2], distance: 0.01, mesh: [15, 15, 15], temperature: [100, 200, 300, 400, 500], }), protocolstandard ) thermo result[thermodynamic_properties] for temp, free_energy in zip([100, 200, 300, 400, 500], thermo[free_energy]): print(f{temp} K 下 MgO 的自由能: {free_energy:.3f} eV)5.4 案例四钙钛矿 SrTiO₃ 声子计算对立方钙钛矿 SrTiO₃ 进行声子计算验证工作流对多原子复杂结构的支持能力。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() SrTiO3 立方钙钛矿晶格常数 3.905 Å structure StructureData(cell[[3.905, 0, 0], [0, 3.905, 0], [0, 0, 3.905]]) structure.append_atom(position(0, 0, 0), symbolsSr) structure.append_atom(position(1.9525, 1.9525, 1.9525), symbolsTi) structure.append_atom(position(1.9525, 0, 0), symbolsO) structure.append_atom(position(0, 1.9525, 0), symbolsO) structure.append_atom(position(0, 0, 1.9525), symbolsO) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [2, 2, 2], distance: 0.01, mesh: [11, 11, 11], }), protocolstandard ) print(SrTiO3 声子计算完成态密度节点:, result[dos].pk)5.5 案例五二维材料 MoS₂ 声子色散计算单层 MoS₂ 的声子色散验证工作流对二维周期性结构的处理能力。二维材料需要在真空层方向设置较大的晶胞尺寸。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() 单层 MoS2面内晶格常数 3.16 Å真空层 20 Å structure StructureData(cell[[3.16, 0, 0], [-1.58, 2.735, 0], [0, 0, 20.0]]) structure.append_atom(position(0, 0, 10.0), symbolsMo) structure.append_atom(position(1.58, 0.912, 10.0), symbolsS) structure.append_atom(position(0, 1.823, 10.0), symbolsS) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [3, 3, 1], distance: 0.01, mesh: [15, 15, 1], }), protocolstandard ) print(MoS2 声子色散计算完成)5.6 案例六合金体系 Fe₀.₅Co₀.₅ 声子计算对无序合金 Fe₀.₅Co₀.₅ 进行声子计算演示如何通过特殊准随机结构SQS处理合金体系。from aiida import load_profile from aiida.orm import StructureData, Dict, load_code from aiida.engine import run from aiida_phtools.workflows.phonon import PhononWorkchain load_profile() 使用 SQS 方法生成的 Fe0.5Co0.5 结构 这里以 2x2x2 超胞为例Fe 和 Co 原子按 SQS 分布 structure StructureData(cell[[5.65, 0, 0], [0, 5.65, 0], [0, 0, 5.65]]) 体心立方结构Fe 和 Co 交替占据 positions [ (0, 0, 0), (2.825, 2.825, 0), (2.825, 0, 2.825), (0, 2.825, 2.825), (2.825, 0, 0), (0, 2.825, 0), (0, 0, 2.825), (2.825, 2.825, 2.825) ] symbols [Fe, Co, Fe, Co, Co, Fe, Co, Fe] for pos, sym in zip(positions, symbols): structure.append_atom(positionpos, symbolssym) result run( PhononWorkchain, structurestructure, codeload_code(pwlocalhost), parametersDict(dict{ supercell: [1, 1, 1], distance: 0.01, mesh: [11, 11, 11], }), protocolstandard ) print(FeCo 合金声子计算完成)《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。