Qiskit Nature 中的轨道排序如何运作?

问题描述 投票:0回答:1

当我用qiskit的PyscfDriver定义一个分子时,它有一定数量的(空间)轨道。在此示例中,我定义了一个 NaH 分子并获得了一个具有 10 个空间轨道的物体。我想通过减少活跃空间的一些轨道来减少这个数字。我打算使用 FreezeCoreTransformer ,如下所示

FreezeCoreTransformer(freeze_core=False, remove_orbitals=[0,1,2,3,4,5])
。 但是我如何知道这个例子中哪个物理轨道对应于哪个轨道数呢?我知道所有 12 个电子都在前 6 个空间轨道内,因为删除轨道 0-5 后 num.articles 变为 (0,0)。

这是最小的代码示例:

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
python chemistry qiskit
1个回答
0
投票

空间轨道按照驱动程序产生的顺序排列。这是最低能量轨道到最高能量。电子将占据最低能量轨道,因此它们是被占据的轨道,其余的未被占据。

注意:PySCF 驱动程序模块还具有通过标准 Python 日志记录功能写入的信息。如果将此模块的日志记录配置为调试级别,那么它应该打印轨道周围的信息https://github.com/qiskit-community/qiskit-nature/blob/main/qiskit_nature/second_q/drivers/pyscfd/ pyscfdriver.py#L522-L533以防有进一步帮助。

© www.soinside.com 2019 - 2024. All rights reserved.