ВУЗ:
Составители:
27
14.
(* одноцентровые параметры связывания *)
15.
Be={8.2,12.8,5.4,5.4};
16.
(* одноцентровые кулоновские интегралы *)
17.
Ga={10.017,13.663,12.848,12.848};
18.
(* координаты атомов в ангстремах *)
19.
R={{0.000,0.000,0.000},{0.000,1.146,0.000},{-0.933,-
0.577,0.000},{+0.933,-0.577,0.000}};
20.
DatIn={na,R,no,nocc,nbnlms,zt,Zcore,IP,Be,Ga};
21.
CNDO2[DatIn_List]:=Module[{flag=0,na,R,no,nocc,nbnlms,zt,Z,U,Be,
22.
Ga,β,γ,fz,p,S,f,h,e,c,ct,Res,Etot,Etot0, δ=0.00001,Pat,summa,it,
23.
itmax=100,a,b,µ,ν,z,W,ce=27.212},
24.
{na,R,no,nocc,nbnlms,zt,Zcore,IP,Be,Ga}=DatIn;
25.
R=R/0.529167;IP=IP/ce;Be=Be/ce;Ga=Ga/ce;
26.
f=h=c=ct=p=Table[0.,{no},{no}];e=Table[0.,{no}];
27.
γ=Table[0.,{na},{na}];Q=W=Pat=Table[0.,{na}];
28.
β
=Table[(Be[[a]]+Be[[b]])/2.,{a,na},{b,na}];
29.
Enuc=0.;
30.
For[a=1,a≤na,a++,
31.
For[b=1,b<=a,b++,
32.
If[ab,γ[[a,a]]=Ga[[a]];Continue[]];
33.
Rab=R[[a]]-R[[b]];Rab=Sqrt[Rab.Rab];
34.
Enuc=Enuc+Zcore[[a]]*Zcore[[b]]/Rab;
35.
z=0.5*Rab*(Ga[[a]]+Ga[[b]]);fz=1./Sqrt[1.+z^2];
36.
γ[[a,b]]=0.5*(Ga[[a]]+Ga[[b]])*fz;γ[[b,a]]=γ[[a,b]]]];
37.
For[a=1,a≤na,a++,
38.
W[[a]]=Sum[(1-KroneckerDelta[a,b])*Zcore[[b]]*
γ
[[a,b]],
{b,1,na}]];
39.
For[
µ
=1,
µ≤
no,
µ
++,
40.
a=IntegerPart[nbnlms[[µ]]/10000];
41.
h[[µ,µ]]=IP[[µ]]-W[[a]]-(Zcore[[a]]-0.5)*γ[[a,a]];
42.
For[ν=1,ν≤µ,ν++,
43.
b=IntegerPart[nbnlms[[ν]]/10000];
44.
If[ab && µ≠ν,h[[µ,ν]]=h[[ν,µ]]=0.;Continue[]];
45.
If[a!=b,
46.
S=Over[nbnlms[[µ]],zt[[µ]],R[[a]],
nbnlms[[ν]],zt[[ν]],R[[b]]];
47.
If[S>10.,Return[{2,Etot,e,c,Q}]];
48.
h[[µ,ν]]=-β[[a,b]]*S;h[[ν,µ]]=h[[µ,ν]]]]];
49.
For[it=0,it≤itmax,it++,
50.
If[it0,
51.
Do[f[[
µ
,
ν
]]=If[
µν
,IP[[
µ
]],h[[
µ
,
ν
]]],{
µ
,no},{
ν
,no}],
52.
Etot0=Etot;
53.
For[b=1,b≤na,b++,
54.
summa=0.;
55.
For[µ=1,µ≤no,µ++,
56.
a=IntegerPart[nbnlms[[ µ]]/10000];
57.
If[ab,summa=summa+p[[µ,µ]]]];
58.
Pat[[b]]=summa];
59.
For[
µ
=1,
µ≤
no,
µ
++,
60.
a=IntegerPart[nbnlms[[ µ]]/10000];
27
14. (* одноцентровые параметры связывания *)
15. Be={8.2,12.8,5.4,5.4};
16. (* одноцентровые кулоновские интегралы *)
17. Ga={10.017,13.663,12.848,12.848};
18. (* координаты атомов в ангстремах *)
19. R={{0.000,0.000,0.000},{0.000,1.146,0.000},{-0.933,-
0.577,0.000},{+0.933,-0.577,0.000}};
20. DatIn={na,R,no,nocc,nbnlms,zt,Zcore,IP,Be,Ga};
21. CNDO2[DatIn_List]:=Module[{flag=0,na,R,no,nocc,nbnlms,zt,Z,U,Be,
22. Ga,β ,γ,fz,p,S,f,h,e,c,ct,Res,Etot,Etot0, δ =0.00001,Pat,summa,it,
23. itmax=100,a,b,µ,ν,z,W,ce=27.212},
24. {na,R,no,nocc,nbnlms,zt,Zcore,IP,Be,Ga}=DatIn;
25. R=R/0.529167;IP=IP/ce;Be=Be/ce;Ga=Ga/ce;
26. f=h=c=ct=p=Table[0.,{no},{no}];e=Table[0.,{no}];
27. γ=Table[0.,{na},{na}];Q=W=Pat=Table[0.,{na}];
28. β=Table[(Be[[a]]+Be[[b]])/2.,{a,na},{b,na}];
29. Enuc=0.;
30. For[a=1,a≤ na,a++,
31. For[b=1,b<=a,b++,
32. If[a b,γ[[a,a]]=Ga[[a]];Continue[]];
33. Rab=R[[a]]-R[[b]];Rab=Sqrt[Rab.Rab];
34. Enuc=Enuc+Zcore[[a]]*Zcore[[b]]/Rab;
35. z=0.5*Rab*(Ga[[a]]+Ga[[b]]);fz=1./Sqrt[1.+z^2];
36. γ[[a,b]]=0.5*(Ga[[a]]+Ga[[b]])*fz;γ[[b,a]]=γ[[a,b]]]];
37. For[a=1,a≤ na,a++,
38. W[[a]]=Sum[(1-KroneckerDelta[a,b])*Zcore[[b]]*γ[[a,b]],
{b,1,na}]];
39. For[µ=1,µ≤ no,µ++,
40. a=IntegerPart[nbnlms[[µ]]/10000];
41. h[[µ,µ]]=IP[[µ]]-W[[a]]-(Zcore[[a]]-0.5)*γ[[a,a]];
42. For[ν =1,ν ≤µ,ν++,
43. b=IntegerPart[nbnlms[[ ν]]/10000];
44. If[a b && µ≠ ν,h[[µ,ν]]=h[[ν,µ]]=0.;Continue[]];
45. If[a!=b,
46. S=Over[nbnlms[[µ]],zt[[µ]],R[[a]],
nbnlms[[ν ]],zt[[ν]],R[[b]]];
47. If[S>10.,Return[{2,Etot,e,c,Q}]];
48. h[[µ,ν]]=-β[[a,b]]*S;h[[ ν,µ]]=h[[µ,ν]]]]];
49. For[it=0,it≤itmax,it++,
50. If[it 0,
51. Do[f[[µ,ν]]=If[µ ν,IP[[µ]],h[[µ,ν]]],{µ,no},{ν,no}],
52. Etot0=Etot;
53. For[b=1,b≤na,b++,
54. summa=0.;
55. For[µ=1,µ≤no,µ++,
56. a=IntegerPart[nbnlms[[ µ]]/10000];
57. If[a b,summa=summa+p[[ µ,µ]]]];
58. Pat[[b]]=summa];
59. For[µ=1,µ≤no,µ++,
60. a=IntegerPart[nbnlms[[ µ]]/10000];
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »
