PySCF: matriks 2-indeks dan 3-indeks

Oct 03 2020

Integral 4-indeks 2-elektron dapat diperoleh untuk atom He dengan kode berikut:

import numpy as np
from pyscf import gto, scf, ao2mo

mol = gto.Mole()
mol.atom = """
    He    0.    0.    0.
"""
mol.basis = "cc-pvdz"
mol.build()

# Run Hartree-Fock.
mf = scf.RHF(mol)
mf.kernel()

# Find electron-repulsion integrals (eri).
eri = ao2mo.kernel(mol, mf.mo_coeff)
eri = np.asarray(ao2mo.restore(1, eri, mol.nao))

Saya tertarik untuk mendapatkan matriks 2-indeks (A) dan 3-indeks (CIAB), yang dapat digunakan untuk membentuk integral 4-indeks 2-elektron (eri). Saya telah melihat daftar kemungkinan cara yang dilakukan dalam kode PySCF ; Namun, saya tidak yakin dengan jawaban yang benar.

Jawaban

3 SusiLehtola Oct 03 2020 at 15:47

Dalam formalisme pemasangan kerapatan / resolusi identitas (RI), integral dua elektron $(ij|kl)$ dalam basis atom-orbital didekati sebagai $(ij|kl) \approx \sum_{PQ} (ij|P) (P|Q)^{-1} (Q|kl)$ dimana $P$ dan $Q$ adalah fungsi tambahan, dan $(P|Q)^{-1}$ adalah matriks tumpang tindih Coulomb terbalik.

Ekspresi RI dapat ditulis dalam bentuk yang menyerupai ekspresi Cholesky $(ij|kl) = \sum_P L_{ij}^P L_{kl}^P$ dengan memperkenalkan "matriks B" $B_{ij}^Q = \sum_P (ij|P) (P|Q)^{-1/2}$. Dengan matriks-B, Anda mendapatkan integral sebagai$(ij|kl) \approx \sum_Q B_{ij}^Q B_{kl}^Q$. Penggunaan formulir ini nyaman karena Anda dapat menggunakan implementasi yang sama untuk Cholesky dan RI.

Kode pemasangan kepadatan di PySCF didokumentasikan: https://sunqm.github.io/pyscf/df.html

The pyscf.df.incore.cholesky_eriFungsi kembali 2D array of (naux,nao*(nao+1)/2) in C-contiguous. Ini adalah$B$ matriks.