Qiskit Nature轨道排序机制及轨道编号对应关系咨询
Qiskit中FreezeCoreTransformer的轨道编号对应关系解析
问题背景
使用Qiskit的PySCFDriver定义NaH分子时,得到的体系包含10个空间轨道。尝试用FreezeCoreTransformer(freeze_core=False, remove_orbitals=[0,1,2,3,4,5])缩减活性空间后,num_particles变为(0,0),说明所有12个电子都分布在前6个轨道中,但不清楚这些轨道编号对应的物理轨道。
核心结论
Qiskit Nature中,空间轨道的编号是按轨道本征能量从低到高排序的:编号0对应能量最低的轨道,编号依次递增对应能量更高的轨道。
对于NaH(STO-3G基组)的场景:
- 编号0~5的轨道是能量最低的6个占据轨道,每个轨道填充2个电子(共12个电子,正好匹配体系总电子数),包含Na的内层核心轨道(1s、2s、2p三重简并轨道)以及Na-H之间的成键轨道。
- 编号6~9的轨道是未被占据的虚轨道(能量更高),原本就没有电子填充。
代码验证与解释
以下是你的最小代码示例:
from qiskit_nature.second_q.drivers import PySCFDriver from qiskit_nature.second_q.transformers import FreezeCoreTransformer driver = PySCFDriver( atom=f"H 0 0 0; Na 0 0 {1.5}", basis="sto3g", charge=0, spin=0, ) problem = driver.run() print(f'{problem.num_particles = }') print(f'{problem.num_spatial_orbitals = }') as_transformer = FreezeCoreTransformer(freeze_core=False, remove_orbitals=[0,1,2,3,4,5]) as_transformer.prepare_active_space(problem.molecule, problem.num_spatial_orbitals) as_problem = as_transformer.transform(problem) print(f'{as_problem.num_particles = }') print(f'{as_problem.num_spatial_orbitals = }')
输出结果:
problem.num_particles = (6, 6) problem.num_spatial_orbitals = 10 as_problem.num_particles = (0, 0) as_problem.num_spatial_orbitals = 4
problem.num_particles = (6, 6):表示体系有6个α电子和6个β电子,共12个电子。- 移除0~5号轨道后,所有电子所在的轨道都被排除出活性空间,因此
as_problem.num_particles = (0, 0),剩余的4个轨道是原本的6~9号虚轨道。
内容的提问来源于stack exchange,提问作者QuantumCoder
相关产品推荐
相关产品推荐

