Chemical bond/Code

From Citizendium
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This article is a stub and thus not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
Code [?]
 
A collection of code samples relating to the topic of Chemical bond.

Matlab® code to plot figure 2 (Heitler-London curves). See J. C. Slater, Quantum Theory of Molecules and Solids, vol. 1, McGraw-Hill, New York (1963), Table 3.1 and L. Pauling and E. Bright Wilson, Introduction to Quantum Mechanics, McGraw-Hill, New York (1935), pp. 342, 343.

function HL
close all;
R = [0.5  :0.1  :4.5];
[Eplus, Emin, E0] =  VB(R);

plot(R, [Eplus; Emin; E0], 'linew', 2)
line([R(1) R(end)], [0, 0], 'color' , 'k', 'linew', 1.5, 'linest', '--')

xlabel('R/a_0', 'fonts', 16)
ylabel('E/E_H', 'fonts', 16)
ht = text(0.92,    2, 'E_-', 'fonts', 14 );
ht = text(0.85,  0.5, 'E_0', 'fonts', 14 );
hs = text(2.0, -0.36, 'E_+', 'fonts', 14 );

function [Eplus, Emin, H0] = VB(R)
% Heitler-London equation for H2
% Slater, Molecules and Solids, vol. 1, p. 50
% Slater's equation for K' has a typo: w^2/3  --> w^3/3
a  = 1.0;
g  = -psi(1);     % Euler's constant
w  = a*R;

S  = exp(-w).*(1+w+w.^2/3);
Sp = exp( w).*(1-w+w.^2/3);

J  = 2*(-1./w + exp(-2*w).*(1+1./w));
K  = -2*(exp(-w).*(1+w));
Jp = 2*(1./w - exp(-2*w).*(1./w + 11/8 + 3*w/4 + w.^2/6) );
Kp = (2/5)*(-exp(-2*w).*(-(25/8)+ (23*w)/4 +3*(w.^2) + (w.^3)/3) ...
     +6./w.*(S.^2.*(g+log(w))+Sp.^2.*Ei(-4*w) -2*S.*Sp.*Ei(-2*w) ));

H0 = 2*J+Jp+2./R;
H1 = 2*K.*S + Kp + 2*(S.^2)./R;

Eplus =  (H0+H1)./(1+S.^2);
Emin  =  (H0-H1)./(1-S.^2);
return
function E = Ei(x)
E = real(-expint(-x));