标题: 关于Multiwfn输出跃迁密度格点 [打印本页] 作者Author: JAmChemSoc 时间: 2021-9-8 09:36 标题: 关于Multiwfn输出跃迁密度格点 本人试图采用基于三维空间结构跃迁密度的 cube 方法来计算分子间耦合,与基于原子跃迁电荷的tresp方法(使用multiwfn计算)进行对比,理论上来讲两种方法得到的结果应该是一致的。
计算体系为相距10埃的两个卟啉环对儿,
1、首先采用multiwfn的tresp方法,计算得到的耦合能大约是260cm-1
2、对于基于三维空间结构跃迁密度的 cube 方法(图),计算流程如下:
(1)对每一个分子的chk文件和log文件,使用Multiwfn的主功能18中的跃迁密度分析模块——定义格点大小为1.5*1.5*1.5——最终Output cube file of transition density to current folder,得到transdens1.cub
(2)对于上一步输出来的transdens1.cub,使用Multiwfn的主功能13的格点分析模块——最终Output all data points with value and coordinate,得到output1.txt
(3)对于第二个分子同样执行上述两步操作,得到output2.txt
(4)然后写脚本计算耦合,脚本内容如下(因为output.txt文件中的xyz为埃,所以*0.529转化为a.u.;因为格点大小为1.5*1.5*1.5,所以*3.375):
f_list1 = open('output1.txt','r').readlines()
f_list2 = open('output2.txt','r').readlines()
list_sum = []
num = 0
for line_mol1 in f_list1:
num+=1
ls_mol1 = line_mol1.split()
coord1 = ls_mol1[0:3]
coord1_2 = [float(i)*0.529 for i in coord1]
chg1 = float(ls_mol1[3])*3.375
for line_mol2 in f_list2:
ls_mol2 = line_mol2.split()
coord2 = ls_mol2[0:3]
coord2_2 = [float(i)*0.529 for i in coord2]
chg2 = float(ls_mol2[3])*3.375
minus = np.array(coord1_2) - np.array(coord2_2)
dis = np.linalg.norm(minus)
tresp_single = (chg1*chg2)/(dis)
list_sum.append(tresp_single)
print (num)
tresp_energy = sum(list_sum)
return tresp_energy