计算化学公社

标题: 求助:1s Slater函数的库仑积分求解 [打印本页]

作者
Author:
木贞    时间: 2023-5-12 14:47
标题: 求助:1s Slater函数的库仑积分求解
本帖最后由 木贞 于 2023-5-12 14:54 编辑

(, 下载次数 Times of downloads: 35)
想求的积分如上,即两个不同半径的1s slater函数,中心分别在A、B,他们的库伦积分,
网上看到了求slater函数积分的程序,但是都集成到了量化计算的程序包里面,而我就是想计算得到1s slater函数的势能面,其自变量为两个STO的半径以及他们之间的距离。希望大佬解答。

作者
Author:
sobereva    时间: 2023-5-12 15:47
(, 下载次数 Times of downloads: 35)

作者
Author:
朽木可自雕    时间: 2023-5-13 17:14
这是问chatgpt给的python代码,借鉴一下
  1. import numpy as np
  2. from scipy.integrate import nquad

  3. # 定义1s Slater函数
  4. def psi(r, a):
  5.     return np.sqrt(1 / (np.pi * a**3)) * np.exp(-r/a)

  6. # 定义内层积分
  7. def integral_u(r1, r2, a):
  8.     integrand = lambda u: 1 / (r1**2 + r2**2 - 2*r1*r2*u)
  9.     return nquad(integrand, [[-1, 1], [0, 2*np.pi]])[0]

  10. # 定义库仑积分
  11. def coulomb(a):
  12.     integrand = lambda r1, r2, theta1, theta2, phi: psi(r1, a) * psi(r2, a) * r1**2 * r2**2 * np.sin(theta1) * np.sin(theta2) * integral_u(r1, r2, a)
  13.     return nquad(integrand, [[0, np.inf], [0, np.inf], [0, np.pi], [0, np.pi], [0, 2*np.pi]])[0]

  14. # 计算1s Slater函数的库仑积分
  15. a = 1  # 1s轨道的半径参数
  16. S = coulomb(a)
  17. print("1s Slater函数的库仑积分为:", S)
复制代码


在上述代码中,使用了numpy和scipy库中的函数来进行数值积分。首先定义了1s Slater函数psi和内层积分integral_u的表达式,然后定义了库仑积分coulomb的表达式,其中使用了nquad函数来进行多重积分的计算。最后,使用1作为1s轨道的半径参数,计算出了1s Slater函数的库仑积分的近似值。
作者
Author:
木贞    时间: 2023-5-15 10:47
朽木可自雕 发表于 2023-5-13 17:14
这是问chatgpt给的python代码,借鉴一下

代码好像有点问题,还有就是定义内层积分那没大看懂,参数a是干啥的,内层积分函数里面也没用到
作者
Author:
木贞    时间: 2023-5-15 15:50
sobereva 发表于 2023-5-12 15:47

谢谢老师!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3