[note: this message relates to the experimental prototype "Jmol 10.x" not
the public release Jmol 10.2. See
http://www.stolaf.edu/people/hansonr/jmol/test/proto/new.htm for details.]
I have added support in Jmol for the display of orbitals. It's still a
bit crude -- probably not that useful - but it is a a start at least.
The issue that needed addressing is that orbitals are typically plotted
as probabilities (psi squared) but colored by psi itself. That is, the
typical display of orbitals involves mapped isosurfaces. There are two
functions there, and in principle two CUBE files.
But if you just use:
isosurface myorbital "dxy_orbital.cube" color "dxy-phase.cube"
there is a problem, because the orbital will be multicolored, and this
is not what we want for orbitals -- there we want just two colors, say
red and blue.
You can now do something like this:
isosurface myorbital "dxy_orbital.cube" color sign red blue "dxy-phase.cube"
where the first file, dxy_orbital.cube, defines the surface (the shape
of the orbital), and the values in dxy-phase.cube ON that surface
determine the color -- either red (negative) or blue (positive).
Of course, the more common orbitals don't require terribly fancy
phase-definition cube files. You can just use something as simple as
this for the dxy-phase.cube:
orbital phase for
dxy
SCF Molecular
Orbitals
-1 -7.558904 -7.558904 -7.558904
3 7.558904 0.000000 0.000000
3 0.000000 7.558904 0.000000
3 0.000000 0.000000 7.558904
1 1.000000 .000000 .000000 .000000
1 12
1 1 1
0 0 0
-1 -1 -1
0 0 0
0 0 0
0 0 0
-1 -1 -1
0 0 0
1 1 1
which just defines positive and negative values for the mapping that are
consistent with xy orbitals. The 27 numbers at the end refer to the 8
corners, 6 face centers, 12 edges, and the center of the cube, in a
specific order -- see
<http://www.stolaf.edu/people/hansonr/jmol/test/proto/isosurface.htm?model=coords.xyz>
.
But it's easier still than that. I've added a "phase" option:
isosurface myorbital "dxy_orbital.cube" color sign red blue phase "xy"
This removes the need for a second CUBE file, at least for the simpler
set of orbitals.
What this does is:
(a) reads the surface from a cube file (of course, this could be a small
JVXL file)
(b) colors the surface in only two colors: red and blue, based on the
sign (red negative, blue positive) of the "phase" of the orbital in
relation to the function x*y.
The 8 phases recognized include:
x, y, z, xy, yz, xz, x2-y2, z2.
That is, it will draw the surface, and any points that have COORDINATES
such that x*y > 0 will be blue, and any others will be red. (Note that
"z2" is the common abbreviation for the dz2 orbital and really stands
for "2z^2 - x^2 - y^2". So using this phase you get the proper coloring
of a dz2 orbital.)
See http://www.stolaf.edu/people/hansonr/jmol/test/proto/isosurface.htm
for detailed examples.
Comments/suggestions welcome.
Where this is going: We can now draw orbitals without any real problem.
The isosurface method works, and it looks pretty good (I think). Still,
it seems to me a BIT silly to be using CUBE files or even, perhaps, JVXL
files for the simple s, p, d orbitals. Without too much difficulty, one
could just encode the Schroedinger equation results into Jmol and
basically have the capability to display orbitals anywhere, in any
direction, in any color(s), at any size just with something simple like:
orbital p1 150 (carbon and connected(3)) color sign yellow blue "p"
This would draw a p orbital CARTOON at all carbon atoms that are
sp2-connected. It would automatically calculate the (obvious) plane,
scale it to 150% of its "standard" size (hydrogen?), and color the two
lobes yellow and blue.
It seems to me this is just a slight extension of the isosurface idea,
but using an actual function rather than a cube file. It would just be
for when you want a "facsimile" of an orbital, and we could of course
include some sort of limited set of options -- s, p, p' (meaning
perpendicular to the other p), sp, sp2, sp3.
I'd need some help thinking about how to specify the direction of those
sp2 and sp3 orbitals. But I could imagine that sp3 and sp3' would be
easily defined for any bent system, and one might also be able to
designate a target direction using two sets of atoms:
orbital p1 150 (atomno=1) (atomno=2) color sign yellow blue "sp3"
of course, directions could involve multiple atoms, so you could imagine:
orbital p1 -150 (atomno=1) (connected(atomno=1)) "sp3"
And if this were something like NH3, then an sp3 cartoon orbital would
be drawn looking a lot like a lone pair.
(But I think just
orbital p1 -150 (atomno=1) "sp3"
should do that just as well based on a bit of easy vector calculation.)
Anyone interested in working with me on this?
Bob Hanson
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers