PySCF: nilai eigen, pekerjaan non-bilangan bulat, penghitungan CISD, dan daftar yang dibekukan
Saya telah melakukan kalkulasi CISD dengan PySCF dan saya memiliki pertanyaan seputar pendudukan orbital. Di sini, penempatan dihitung dari nilai eigen dari matriks kerapatan terbatas 1-elektron.
Mengambil molekul hidrogen fluorida sebagai contoh, berikut cara perhitungannya:
import numpy as np
from numpy import linalg as LA
from pyscf import gto, scf, lib, ci
lib.num_threads(1)
geometry = '''
H 0.0 0.0 0.0
F 0.0 0.0 1.1
'''
molecule = gto.Mole()
molecule.atom = geometry
molecule.basis = '3-21g'
molecule.build()
occupied_space = [occ for occ in range(int(molecule.nelectron * .5))]
print(occupied_space)
mf = scf.RHF(molecule)
mf.scf()
my_ci = ci.CISD(mf=mf,
frozen=None,
mo_coeff=None,
mo_occ=None)
my_ci.kernel()
rdm1 = my_ci.make_rdm1()
evals = LA.eigvalsh(rdm1)[::-1]
print(evals)
Saat argumen CISD frozen = None
disetel, nilai eigen berikut diperoleh:
[1.99994686e+00 1.99455156e+00 1.99008540e+00 1.99008540e+00
1.96069255e+00 3.79033668e-02 9.52687575e-03 9.52687575e-03
5.33169546e-03 1.84641520e-03 5.03007156e-04]
Ini menunjukkan pendudukan non-bilangan bulat yang jelas dari semua orbital inti / yang ditempati.
Jika satu set frozen = [0, 1, 2, 3]
; nilai eigen / pekerjaan adalah:
[2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00
1.99475055e+00 4.28307558e-03 7.83866124e-04 1.23523177e-04
4.09351267e-05 1.78677364e-05 1.79726837e-07]
Hal ini menunjukkan bahwa HOMO dibiarkan rileks, mengolesi okupasi ke dalam orbital virtual.
Bagian yang benar-benar membingungkan adalah saat frozen = [1, 2, 3, 4]
; yang menghasilkan nilai eigen berikut:
[2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00
1.99998097e+00 7.30194999e-06 4.82147944e-06 3.45239124e-06
3.45239124e-06 9.06692496e-12 1.69884163e-12]
Di sini, HOMO (orbital 4, yang harus dibekukan) memiliki pendudukan non-bilangan bulat, dan orbital pertama yang tidak dibekukan (orbital 0) mempertahankan pendudukan bilangan bulat lengkap.
Pertanyaan saya memiliki dua komponen. Apa yang menyebabkan pencemaran pekerjaan dalam perhitungan CISD ini (karena ini bukan perhitungan DFT), dan mengapa HOMO santai frozen = [1, 2, 3, 4]
?
Jawaban
Kita tidak boleh bingung dengan "noda" yang digunakan untuk memfasilitasi konvergensi medan yang konsisten sendiri, terutama untuk kalkulasi fungsional kerapatan dalam sistem periodik, dan peran bilangan pendudukan orbital alami pecahan yang muncul secara alami dari sifat banyak partikel dari fungsi gelombang yang tepat.
Orbital alam biasanya disusun dalam besaran yang semakin kecil. Nyatanya, saya berani bertaruh pada PySCF yang menyusun ulang orbital alami sehingga orbital beku ke-2 sampai ke-5 disusun kembali ke bawah. Jumlah pekerjaan jelas berbeda antara perhitungan, dan Anda melihat bahwa ada perbedaan yang signifikan dalam kekuatan korelasi antara HOMO dan orbital inti terdalam: ketika Anda hanya menghubungkan HOMO, nomor pekerjaan untuk orbital alam tak berpenghuni terendah ( LUNO) adalah$4.28\times10^{-3}$, sedangkan jika Anda hanya mengkorelasikan orbital F 1s maka LUNO-nya adalah $7.30\times10^{-6}$.