From: Alan H. <he...@il...> - 2010-03-20 17:35:41
|
Inorganic structures like zeolites have cavities that can be occupied by ions and small molecules; Jmol isosurfaces can map the cavity volume available eg http://icsd.ill.eu/icsd/index.php?action=Search&mineral=zeolite+TS-1 (Click "Demo" then the formula Si0.9717 O2 then the "cavity" switch). But isosurfaces are also a powerful way of investigating the volume available to atoms of ordinary inorganic structures by first excluding those atoms from the isosurface calculation. Thanks to Bob Hanson, we have included some of these possibilities in ICSD, the Inorganic Crystal Structure Database. Hollandite can be regarded as a simple structure with channels occupied by ions eg: http://icsd.ill.eu/icsd/index.php?action=Search&mineral=hollandite The ICSD "cavity" switch for (N H4) Mn8 O16 now produces nothing, since the "cavities" are occupied. But if we first use the ICSD "select" switch and click on the blue nitrogen atoms, the cavities will be drawn after excluding those nitrogen, showing the volume available to them. In practice it is a little more complex. Inorganic structures for ICSD are drawn with surrounding invisible unit cells, needed to construct coordination polyhedra. But since Jmol's "set picking SELECT SITE" selects only visible sites, a custom function is required to pick the invisible sites as well, otherwise the isosurfaces are truncated; function mypick (){ var s = {atomindex=_atomPicked}.site; select selected or site=s; } Then we use the ICSD "select" switch to call this function for site picking: SelectionHalos ON;set picking IDENT; set pickcallback "jmolscript:mypick" Clicking on atoms adds them to the selection, even if some of their sites are invisible. The "cavities" switch then draws the isosurface excluding the selected atoms according to: isosurface select(visible) ignore(selected) resolution 2.0 minset 5 pocket cavity 0.4 sasurface 0.1;color isosurface blue fullylit; Actually we would like to label the atoms to be excluded, and we do that by first setting some "property_hide=1" if(selectionHalos){{selected}.property_hide=1}; And then the isosurface switch becomes: isosurface select(visible) ignore(property_hide=1) etc In fact, we can use these methods to explore the volume available to any ions or groups of atoms in any structures, even simple close packed structures like perovskites; eg try excluding the K atom in KCaF3 http://icsd.ill.eu/icsd/cifdraw.php?filen=help/kcaf3.cif It seems that even if vanilla Jmol doesn't do quite what you want, the scripting language is now so powerful that you can modify the behavior as required. Thanks again Bob. ______________________________________________ Dr Alan Hewat, NeutronOptics, Grenoble, FRANCE <Alan.Hewat@NeutronOptics.com> +33.476.98.41.68 http://www.NeutronOptics.com/hewat ______________________________________________ |