计算化学公社
标题:
请大家帮我看一下计算库伦势、极化能以及偶极矩的算法对不对
[打印本页]
作者Author:
skl
时间:
2021-9-3 15:01
标题:
请大家帮我看一下计算库伦势、极化能以及偶极矩的算法对不对
本帖最后由 skl 于 2021-9-3 15:08 编辑
在一篇文献中看到gromacs参数优化的内容,其中涉及壳层模型库仑势、极化能以及分子偶极矩的计算,我自己用python写了一下,不知道对不对,请大家帮我看看,有不对的地方还请指教(原文献一并附在附件中)
库仑势及极化能计算:
(, 下载次数 Times of downloads: 7)
上传 Uploaded
点击下载Click to download
偶极矩的方差计算:
(, 下载次数 Times of downloads: 12)
上传 Uploaded
点击下载Click to download
python实现:
#定义CaF2分子,按顺序分别为F-、F-_s、F-、F-_s、Li+、Li+_s,其中,_s表示壳层
atoms = [{'beta': 9.139, 'q': 5.590, 'site': np.array([0, 1.869, -0.361])}, \
{'beta': 9.139, 'q': -6.590, 'site': np.array([-0.23324962, 0.16647118, 0.29554485])}, \
{'beta': 9.139, 'q': 5.590, 'site': np.array([0, -1.869, -0.361])}, \
{'beta': 9.139, 'q': -6.590, 'site': np.array([-0.23324962, 0.16647118, 0.29554485])}, \
{'beta': 13.772, 'q': 20, 'site': np.array([0., 0. , 0.325 ])}, \
{'beta': 13.772, 'q': -22, 'site': np.array([0.15000612, 0.0927579 , 0.29707778])}]
#计算库仑势和极化能
def cacl_ener(self,atoms):
k = 1/(4*math.pi*0.08854187818)
v_sum = 0
#计算库仑势
for i in range(0,5):
atom = atom[1:]
for j in atom:
bi = atoms[i]['beta']
bj = atoms[j]['beta']
qi = atoms[i]['q']
#if qi < 0:
# qi *= -1
qj = atoms[j]['q']
#if qj <0:
# qj *= -1
r = np.linalg.norm(atoms[i]['site'] - atoms[j]['site'])
bij = (bi * bj) /(math.sqrt(bi*bi+bj*bj))
erf= math.erf(bij * r)
#print(qi,qj,erf,r)
e_coul = k * qi * qj *erf /r
v_sum += e_coul
#计算极化能 a_f、a_ca为F-和Ca2+的极化率
r_f_1 = np.linalg.norm(atoms[0]['site'] - atoms[1]['site'])
r_f_2 = np.linalg.norm(atoms[2]['site'] - atoms[3]['site'])
r_ca= np.linalg.norm(atoms[4]['site'] - atoms[5]['site'])
v_pol_f_1 = k * (atoms[1]['q']**2/(2*self.a_f)) * r_f_1**2
v_pol_f_2 = k * (atoms[3]['q']**2/(2*self.a_f)) * r_f_2**2
v_pol_ca = k * (atoms[5]['q']**2/(2*self.a_ca)) * r_ca**2
v_sum = v_sum + v_pol_f_1+ v_pol_ca + v_pol_f_2
return(v_sum)
#计算偶极矩的方差,u_exp为实验测得的偶极矩
def calc_x2(self,atoms):
x2 = 0
for atom in atoms:
u = atom['q'] * atom['site']
u = np.linalg.norm(u)
x2 += (u -self.u_exp) ** 2
x2 = (1/6) * x2
return x2
复制代码
复制代码
作者Author:
赵小壮
时间:
2022-4-23 19:08
shell model 模型啊,我刚写了一个。库伦势怎么只计算倒空间的呀,erfc(\alpha r)/r部分呢,偶极矩的计算有很多种,你照着你这个计算也行
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3