การคำนวณ 2e-integrals ด้วย PySCF

Sep 02 2020

คำถาม

ในทฤษฎี Hartree-Fock อินทิกรัลสองอิเล็กตรอนถูกกำหนดโดย:

$[ij|kl]$ = $\int dx_{1}dx_{2}(\chi_{i}(x_{1})\chi_{j}(x_{1})\frac{1}{r_{12}}\chi_{k}^{*}(x_2)\chi_{l}(x_{2})$

ฉันสนใจที่จะเขียน 2e-integral สำหรับอะตอมของฮีเลียม (สำหรับชุดพื้นฐานที่กำหนด) ใน PySCF ฉันต้องการทำสิ่งนี้ด้วยและไม่มีความหนาแน่นกระชับ (DF) / ความละเอียดของตัวตน (RI)

พยายาม

ในความพยายามของฉันที่จะสร้าง 2e-integral จาก PySCF (โดยไม่มี DF / RI) ฉันได้ใช้รหัสต่อไปนี้:

from pyscf import gto
mol = gto.M(atom='He 0 0 0', basis='6-31g')
eri = mol.intor('int2e', aosym='s8')
print(eri)

>> [1.54393568 0.78544719 0.42702546 0.80395186 0.47618957 0.61593794]

ที่ที่ฉันมีไฟล์อื่นให้เปรียบเทียบฉันคาดว่าจะมีชุดข้อมูลที่ใหญ่กว่านี้มาก ฉันยังจินตนาการว่าควรจะมี SCF loop; อย่างไรก็ตามสิ่งนี้ไม่ได้ระบุไว้ในเอกสาร PySCF

ขอขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ


หมายเหตุ: คำถามนี้เกี่ยวข้องกับคำถามก่อนหน้าต่อไปนี้:

  • ปริพันธ์สองอิเล็กตรอนหนึ่งศูนย์ระหว่าง 1s STO
  • โปรแกรมใดบ้างที่สามารถทำการอินทิกรัลอิเล็กตรอนและการคำนวณ SCF ด้วย CPU มากกว่าหนึ่งตัว
  • Exchange-Correlation ปริพันธ์สองอิเล็กตรอน

คำตอบ

2 Tyberius Sep 02 2020 at 23:04

ฉันคิดว่ามันอาจคุ้มค่าที่จะจัดการกับความเข้าใจผิดบางอย่างในคำถามเนื่องจากอาจเป็นเรื่องธรรมดา

ไม่มี SCF มาก่อน

อินทิกรัลสองอิเล็กตรอน AO (และจริงๆแล้วอินทิกรัล AO ทั้งหมดที่ใช้ในโพรซีเดอร์ SCF) สามารถสร้างขึ้นก่อนที่จะทำวงจร นี่เป็นเพราะพวกมันเป็นเพียงหนึ่งในวงโคจรของอะตอมซึ่งเรารู้ตั้งแต่เริ่มต้นการคำนวณ ในทางปฏิบัติคุณอาจเห็นปริพันธ์สองอิเล็กตรอนถูกคำนวณใหม่ในระหว่างวงจร SCF แต่นี่เป็นเพียงเพื่อหลีกเลี่ยงการจัดเก็บ ~$N^4$ ค่าดังกล่าวซึ่งสูงเกินไปสำหรับการคำนวณที่ค่อนข้างเล็ก

ในการคำนวณปริพันธ์ MO คุณจะต้องทำรอบ SCF ให้เสร็จสิ้น แต่ตราบใดที่คุณไม่ได้ใช้วิธี Post-SCF ใด ๆ คุณไม่จำเป็นต้องแปลงปริพันธ์ AO เป็น MO อย่างชัดเจนเพื่อที่จะคำนวณ พลังงาน.

ปริพันธ์น้อยกว่าที่คาดไว้

แค่นี้ก็จะสมมาตรแล้ว สำหรับ$\ce{He}$ ด้วยชุดพื้นฐาน 6-31G คุณมีวงโคจรของอะตอมสองตัวซึ่งควรนำไปสู่ $2^4=16$ปริพันธ์สองอิเล็กตรอน อย่างไรก็ตามเนื่องจากปริพันธ์มีความสมมาตรแบบเรียงสับเปลี่ยน (ดูคำถามนี้ใน Chem SE ) จริงๆแล้วจึงมีปริพันธ์เฉพาะ 6 ตัวที่คุณเขียนไว้ในคำถามของคุณ