Sei sulla pagina 1di 3

################################################################################

# make polar plots of real combinations of spherical harmonics


#
# > gnuplot -persist orbitals.gnu
#
#
I 2001, E. Koch, MPI-FKF #
################################################################################
reset
set size 1.0, 1.0
set origin 0.0, 0.0
set multiplot
set size 0.4, 0.4
set view 60, 30
scale=0.9
set xrange [-scale:scale]
set yrange [-scale:scale]
set zrange [-scale:scale]
set noborder
set noxtics
set noytics
set noztics
set nokey
# coordinate axes
set arrow 1 from -scale, 0, 0 to scale, 0, 0 lw 3
set arrow 2 from 0, -scale, 0 to 0, scale, 0 lw 3
set arrow 3 from 0, 0, -scale to 0, 0, scale lw 3
set label 'x' at scale,-.25*scale,0
set label 'y' at 0,1.1*scale,-.15*scale
set label 'z' at 0.10*scale,0,scale
# polar coordinates ####
set parametric
set urange [0:pi]
set vrange [-pi:pi]
x(u,v)=sin(u)*cos(v)
y(u,v)=sin(u)*sin(v)
z(u,v)=cos(u)
set isosamples 22, 45
set hidden3d
# polar coordinates ####
set parametric
set urange [0:pi]
set vrange [-pi:pi]
x(u,v)=sin(u)*cos(v)
y(u,v)=sin(u)*sin(v)
z(u,v)=cos(u)
set isosamples 22, 45
set hidden3d
# atomic orbitals ####
# s orbital
s(u,v)=sqrt(1.0/4.0/pi)
# p orbitals
pz(u,v)=sqrt(3.0/4.0/pi)*cos(u)
# m =0
px(u,v)=sqrt(3.0/4.0/pi)*sin(u)*cos(v) # |m|=1
py(u,v)=sqrt(3.0/4.0/pi)*sin(u)*sin(v) # |m|=1
# d orbitals
d3z2m1(u,v)=sqrt( 5.0/16.0/pi)*(3.0*cos(u)**2-1.0)
dzx(u,v) =sqrt(15.0/16.0/pi)*sin(2.0*u)*cos(v)
dyz(u,v) =sqrt(15.0/16.0/pi)*sin(2.0*u)*sin(v)

# m =0
# |m|=1
# |m|=1

dx2my2(u,v)=sqrt(15.0/16.0/pi)*sin(u)**2*cos(2.0*v)
# |m|=2
dxy(u,v) =sqrt(15.0/16.0/pi)*sin(u)**2*sin(2.0*v)
# |m|=2
# f orbitals
fz5z2m3 (u,v)=sqrt( 7.0/16.0/pi)*(5.0*cos(u)**2-3.0)*cos(u)
#
fx5z2m1 (u,v)=sqrt( 21.0/32.0/pi)*(5.0*cos(u)**2-1.0)*sin(u)*cos(v) #
fy5z2m1 (u,v)=sqrt( 21.0/32.0/pi)*(5.0*cos(u)**2-1.0)*sin(u)*sin(v) #
fzx2my2 (u,v)=sqrt(105.0/16.0/pi)*cos(u)*sin(u)**2*cos(2.0*v)
#
fxyz
(u,v)=sqrt(105.0/16.0/pi)*cos(u)*sin(u)**2*sin(2.0*v)
#
fxx2m3y2(u,v)=sqrt( 35.0/32.0/pi)*sin(u)**3*cos(3.0*v)
#
fy3x2my2(u,v)=sqrt( 35.0/32.0/pi)*sin(u)**3*sin(3.0*v)
#

m =0
|m|=1
|m|=1
|m|=2
|m|=2
|m|=3
|m|=3

# some hybrid orbitals


# sp hybrids:
sp_1(u,v)=sqrt(1.0/2.0)*(s(u,v)+pz(u,v))
sp_2(u,v)=sqrt(1.0/2.0)*(s(u,v)-pz(u,v))
# sp2 hybrids:
sp2_1(u,v)=sqrt(1.0/3.0)*(s(u,v)+sqrt(2.0)*px(u,v))
sp2_2(u,v)=sqrt(1.0/3.0)*(s(u,v)-sqrt(1.0/2.0)*px(u,v)+sqrt(3.0/2.0)*py(u,v))
sp2_3(u,v)=sqrt(1.0/3.0)*(s(u,v)-sqrt(1.0/2.0)*px(u,v)-sqrt(3.0/2.0)*py(u,v))
# sp3 hybrids:
sp3_1(u,v)=0.5*(s(u,v)+px(u,v)+py(u,v)+pz(u,v))
sp3_2(u,v)=0.5*(s(u,v)+px(u,v)-py(u,v)-pz(u,v))
sp3_3(u,v)=0.5*(s(u,v)-px(u,v)+py(u,v)-pz(u,v))
sp3_4(u,v)=0.5*(s(u,v)-px(u,v)-py(u,v)+pz(u,v))
pause -1 "d3z2m1 Hit return to continue"
orb(u,v)=d3z2m1(u,v)
# plot
pos(u,v)= orb(u,v)<0 ? 0 : orb(u,v)
neg(u,v)= orb(u,v)>0 ? 0 : -orb(u,v)
#splot neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
#pause -1 "NEG Hit return to continue"
#splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v)
#pause -1 "POS Hit return to continue"
splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v), \
neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
pause -1 "dzx Hit return to continue"
orb(u,v)=dzx(u,v)
# plot
pos(u,v)= orb(u,v)<0 ? 0 : orb(u,v)
neg(u,v)= orb(u,v)>0 ? 0 : -orb(u,v)
splot neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
#pause -1 "NEG Hit return to continue"
#splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v)
#pause -1 "POS Hit return to continue"
splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v), \
neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
pause -1 "dyz Hit return to continue"
orb(u,v)=dyz(u,v)
# plot
pos(u,v)= orb(u,v)<0 ? 0 : orb(u,v)
neg(u,v)= orb(u,v)>0 ? 0 : -orb(u,v)
#splot neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
#pause -1 "NEG Hit return to continue"
#splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v)
#pause -1 "POS Hit return to continue"
splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v), \
neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)

pause -1 "dx2my2 Hit return to continue"


orb(u,v)=dx2my2(u,v)
# plot
pos(u,v)= orb(u,v)<0 ? 0 : orb(u,v)
neg(u,v)= orb(u,v)>0 ? 0 : -orb(u,v)
#splot neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
#pause -1 "NEG Hit return to continue"
#splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v)
#pause -1 "POS Hit return to continue"
splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v), \
neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
pause -1 "dxy Hit return to continue"
orb(u,v)=dxy(u,v)
# plot
pos(u,v)= orb(u,v)<0 ? 0 : orb(u,v)
neg(u,v)= orb(u,v)>0 ? 0 : -orb(u,v)
#splot neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)
#pause -1 "NEG Hit return to continue"
#splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v)
#pause -1 "POS Hit return to continue"
splot pos(u,v)*x(u,v), pos(u,v)*y(u,v), pos(u,v)*z(u,v), \
neg(u,v)*x(u,v), neg(u,v)*y(u,v), neg(u,v)*z(u,v)

Potrebbero piacerti anche