24小时热门版块排行榜    

查看: 1018  |  回复: 1

Joannaouc

木虫 (著名写手)

[交流] 利用Grimme D2 scheme 手动计算dispersion (by MATLAB) 已有1人参与

好久之前写的东西,可能对大家有用。欢迎自行修改。请轻拍砖。
P.S. Dmol5.0 (not quite sure) 以上和VASP5.2以上可以利用程序在结构驰豫的时候就把dispersion加进去。这个当初是针对没有dispersion的dmol写的,刚写完没多久程序就更新到自带了。


function [Edisp] = Edisperse(filename)
%define the function to calculate dispersion energy
%modified on 09-03-2011

%open file and read
fid = fopen(filename,'r');

%following is the matrix storing Ro and C6 information
%of the atoms in the system
%
%first column is C6, second column is Ro
%
%line 1 for H
para(1,1) = 0.14;
para(1,2) = 1.001;
%line 2 for C
para(2,1) = 1.75;
para(2,2) = 1.452;
%line 3 for N
para(3,1) = 1.23;
para(3,2) = 1.397;
%line 4 for Li
para(4,1) = 1.61;
para(4,2) = 0.825;
%line 5 for Ti
para(5,1) = 10.80;
para(5,2) = 1.562;

%following is some other parameters
s6 = 0.75;
d = 20;

%read in coordinates and atom type of the atoms
[atype, x, y, z] = textread(filename, '%s %f %f %f');
l=length(x);

%allocate integer number to identify each atom kind
for i=1:l
    if (strcmp(atype(i),'H')==1)
        atomtype(i) = 1;
    elseif (strcmp(atype(i),'C')==1)
        atomtype(i) = 2;
    elseif (strcmp(atype(i),'N')==1)
        atomtype(i) = 3;
    elseif (strcmp(atype(i),'Li')==1)
        atomtype(i) = 4;
    else atomtype(i) = 5;
    end
end
atomtype = atomtype';

Edisp = 0;
for i = 1: (l-1)
    for j = (i+1):l
        Rr = para(atomtype(i),2) + para(atomtype(j),2);
        C6ij = sqrt (para(atomtype(i),1).* para(atomtype(j),1));
        Rij = sqrt ((x(i)-x(j)).^2+(y(i)-y(j)).^2+(z(i)-z(j)).^2);
        fdmpij = 1./(1+exp(-d*((Rij./Rr)-1)));
        Edisp = Edisp + (C6ij .* fdmpij) ./ (Rij.^6);
    end
end

Edisp = - Edisp .* s6;
%unit here is k kJ/mol
Edisp = Edisp .* 1000;
%unit here is kJ/mol
Edisp = Edisp ./ 2625.5 .*27.211;
%unit here is eV
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hwying

新虫 (初入文坛)

谢谢!
重新开始
2楼2013-05-08 17:09:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Joannaouc 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +15 Lanmanbaby 2026-08-09 23/1150 2026-08-11 09:51 by demonstreets
[基金申请] 为什么网上很多人说本周 12号出结果 +5 瞬息宇宙 2026-08-10 5/250 2026-08-11 09:29 by 铁帽子农民
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 关于Filecode分析方法 +3 majunge000 2026-08-10 3/150 2026-08-10 15:46 by lch2012
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 好奇怪的filecode +4 布布和一二 2026-08-08 5/250 2026-08-10 14:20 by 冰心玉壶晴
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 听说今天filecode变了 +24 布布和一二 2026-08-06 47/2350 2026-08-07 16:02 by zhiyanjiang
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
信息提示
请填处理意见