[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

Reply via email to