Advances in Molecular CAD

Geoff Leach
Department of Computer Science
Royal Melbourne Institute of Technology
Melbourne, Australia.


New molecular CAD tools are needed for the design of diamondoid nanostructures. They are needed to produce detailed designs for general discussion, to produce designs for analysis by computational chemistry packages, to allow search of the design space for promising paths to molecular manufacturing, and to generally reduce the time required to develop molecular manufacturing capabilities. When molecular manufacturing capabilities emerge, molecular CAD software will be required to control molecular manufacturing systems.

Crystal Sketchpad is a molecular CAD program for the design of diamondoid molecular structures. It was begun by the author as part of the computational nanotechnology project whilst visiting at Xerox PARCgif. In this paper a number of fundamental improvements which have been made are presented: the ability to define and duplicate templates, the ability to create separate instances from templates, the ability to bond across instances and the ability to duplicate instances. We illustrate the use of these abilities, coupled with the previous ability to instantiate a block of diamond of arbitrary size and orientation, to define and use selection lattices and to apply a warp operator to an instance, to design a conveyor system of around 2500 atoms.

1 Molecular CAD

In Nanosytems [3] there is diagram after diagram of component, subsystem and system which may be required as part of, or be possible with, molecular nanotechnology. At the smallest scale there are nanoscale structural components: bearings, gears, rollers, belts, ratchets-and-pawls and cams. At the next level of organisation of intermediate subsystems there are: harmonic drives, toroidal worm drives, triply-threaded tori, turbomolecular pumps, cooling tubes and electrostatic motors. Then there are complex systems based on components and subsystems: a rod logic computer and a molecular sorting, processing and assembly system --- including a robot arm of approximately 5,000,000 atoms.

Molecular nanotechnology requires CAD tools to design these components, subsystems and systems. Moreover, the CAD tools must be tailored to the particular needs of molecular nanotechnology. One of those needs is for molecular CAD software to produce designs in full atomic detail --- where the position of every atom is specified. Not all designs for molecular nanotechnology need to be done in such fine detail; at some level components, subsystems or systems may be described in terms of shape and geometry, as in current mechanical CAD for the design of macro sized structures. In macromechanical CAD packages the material of a structure is typicially treated as being continous up to a sharply defined boundary. Drexler uses the term bounded continuum model to describe an intermediate approach where structures are treated as continuous up to some delta of their surface, from which atomic detail or extra information is maintained.

Molecular CAD for molecular nanotechnology needs to draw on the principles and techniques of both mechanical CAD and molecular modelling. However, it requires a body of principles and techniques of its own --- a body of principles and techniques appropriate to the nature of its domain. Diamondoid materials appear to be the material of choice for molecular nanotechnology [3]. These materials are crystalline: molecular CAD software for molecular nanotechnology must ``understand'' diamondoid materials and their crystalline nature.

As a first approach to molecular CAD for molecular nanotechnology R. Merkle wrote a program called tube.c [7]. Later a program which produces a curved shell structure with an array of Lomer dislocations to relieve strain was written by L. Balasubramaniam and R. Merkle. These were developed as a part of the computional nanotechnology project at Xerox PARC [8]. Crystal Clear, written by the author under R. Merkle and K. E. Drexlers' guidance whilst a visitor at Xerox PARC, made several improvements over these approaches, including the use of interactive graphics, to allow the design of a broader range of structures Clear [4]. Crystal Sketchpad improves on the functionality of Crystal Clear as described in the rest of the paper.

2 Crystal Sketchpad

Crystal Sketchpad is a molecular CAD tool for the design of diamondoid structures in full atomic detail. It builds on its predecessor Crystal Clear [4]. Crystal Clear allowed the interactive, one-at-a-time design of: blocks of diamond of arbitrary orientation, thin-walled strained-shell structures and thick-walled curved-shell structures containing dense arrays of dislocations to relieve strain. The key capabilities provided by Crystal Clear were: the use of interactive graphics, the ability to create blocks of diamond crystal of arbitrary orientation, the ability to define and use selection lattices and the provision of a warp operator. Selection lattices and the warp operator are discussed shortly.

Crystal Sketchpad extends the capabilities of Crystal Clear by allowing multiple instances of multiple templates to be created, manipulated and bonded, as shown in figure 1. A block of diamond of arbitrary orienation may be defined as a template and then several instances of that template created --- and then bonded together. At this stage templates are restricted to being blocks of diamond of arbitrary size and orientation. Another major improvement in Crystal Sketchpad is the addition of pull-down menus.

Figure 1: Multiple templates (a) and instances (b)

The selection lattice and the warp operator are two capabilities in Crystal Sketchpad which are central to its use to design nanostructures. They appear to be useful techniques in general for molecular CAD systems which have diamondoid nanostructures as their target. As they are reasonably complicated we discuss them before presenting a detailed example showing the use of most of the capabilities of Crystal Sketchpad to design a reasonably complicated structure --- a conveyor of approximately 2500 atoms. Details of the implementation of Crystal Sketchpad, other than to say it is being developed on an SGI Indy using OpenGL and Motif, are not presented here due to space limitations.

3 Selection Lattices

Crystal Sketchpad is targetted at diamondoid materials and selection lattices are defined in terms of the diamond crystal structure. However, the main idea of a selection lattice can be more simply illustrated using a two dimensional rectangular lattice, as shown in figure 2(a). A selection lattice is basically just a subset of the lattice points of another lattice: the selection lattice shown in figure 2(b) contains the lattice points (shown hollow) of the first, third and fifth rows of every fourth column of the lattice of figure 2(a).

Figure 2: Lattice (a) and selection lattice (b)

Selection lattices are defined by direct manipulation. First a unit cell of the selection lattice is defined by selecting one atom whose position becomes the origin O of the unit cell and then selecting up to three other atoms whose positions define the a, b and c principal axes as displacement vectors from the origin. Selection lattices are finite in Crystal Sketchpad; a selection lattice specification includes a positive and negative repeat count, intialised to 1 and 0 respectively, of the unit cell in the direction of each axis. The repeat counts are changed by direct manipulation. The unit cell is displayed visually as a parallelepiped with handles at each of the corners. By selecting two handles and dragging, the parallepiped may be stretched an appropriate length, thereby changing the positive and negative repeat factors. As the selection lattice is stretched, atoms which lie on the selection lattice points are selected. Repeated use of an already defined selection lattice is possible by applying it to different ``ground'' atoms, each of which become the origin for that application. Note that a selection lattice is a finite set of discrete points --- it is not a volume. At this stage Crystal Sketckpad does not support volume selection operators.

Selection lattices are used in the design of the conveyor in three main ways: (1) to select atoms for deletion (2) to select atoms for bonding (or unbonding) with corresponding atoms in another set of selected atoms and (3) to select atoms to change their element. It will be seen that introducing dislocations into a block of diamond, in particular, is facilitated by selection lattices.

4 The Warp Operator

The warp operator is used in Crystal Sketchpad to map blocks (instances) of diamond into tubes or hoops. The fundamental idea of the warp operator may be seen in figure 3(a). Here, the line segment AE is mapped into the circle and the points A, B, C, D and E are mapped into the points , , , and respectively. The line segment FG is mapped into the arc . The mapping is and where s is the proportional distance along the line segment FG, with a range , and r is the radius of the circle. The radius is determined from the length of the line segment AB which becomes the circumference of the circle under the mapping. By adusting the length and position of the line segment AB it is possible to adjust the radius and arc position of the the ``warped'' line segment . For instance, to warp the line segment FG into a complete circle line segment AB would be set to be identical to FG.

Figure 3: Warp operator

Warping of a two dimensional rectangle into a ring or hoop uses the same mapping as discussed for a line segment but in addition the height of the rectangle becomes the thickness of the ring as shown in figure 3(b). Warping of a three dimensional block into a tube or cylinder is achieved by applying the two dimensional warping function to each rectangle along the depth of the block, as shown in figure 3(c). In terms of implementation in Crystal Sketchpad the only points which are actually transformed are atom positions.

Like selection lattices, warp parameters are specified by direct manipulation. Three atoms define a parallelogram, which is normally a rectangle, with an origin O and a and b axes. As for selection lattices the parallelogram may be stretched by selecting two handles on a handle box representing the parallelogram. The length of the handle box along the a axis of the parallelogram becomes the circumference of the circle into which the structure being warped is mapped. The height of the block becomes the thickness of the tube wall. The depth of the block becomes the depth of the tube.

5 Design of a Conveyor

We illustrate the current capabilities and highlight some of the key techniques of Crystal Sketchpad with the step-by-step design of a conveyor consisting of two rollers and a conveyor belt, as shown in figure 4. The lines in the diagram are not part of the structure but are constructs used in creating the design (handle boxes associated with specification of warp parameters). They do not appear in the output (which is one or more Brookhaven Protein Data Bank (PDB) files). To design this structure takes about an hour (after some practice) on a 100MHz Silicon Graphics Indy R4000SC XL. The design of the conveyor may be separated into two stages: design of the rollers and axles and design of the conveyor belt.

Figure 4: Conveyor

6 Rollers and Axles

The rollers and axles from figure 4 are shown in figure 5 with a front-on orientation. Again the long straight lines are not part of the structure but are handle boxes used to specify warp parameters. Both the axles and rollers are curved structures. Drexler describes several classes of diamondoid components of high rotational symmetry: thin-walled strained-shell structures, thick-walled curved-shell structures and special case structures [3]. Thick-walled curved-shell structures are based on the use of Lomer dislocations [6]. Arrays of Lomer dislocations are introduced into a flat block of diamond which serve to create ``gaps'' in the block which relieve strain when the block is bent. More than that, they also serve to bend the strucure as the ``gap'' in a Lomer dislocation has (new) bonds across it which pull the gap closed.

Figure 5: Rollers

In the conveyor both the axles and rollers are of the thick-walled curved-shell type, whereas the belt is of the thin-walled strained-shell type. Thin-walled strained-shell structures could also have been used for the axles and rollers, more easily than a thick-walled curved-shell structure with dislocations, in fact. However, the intention with this example structure is to illustrate the capabilities of Crystal Sketchpad, rather than come up with the simplest, or for that matter, best, design. None of the parts of the conveyor have been subjected to any computational analysis; no doubt better designs would result from such analysis. One immediate improvement to the design would be to observe the relatively prime symmetry criteria for minimizing barriers of rotation [9]. The interface between the surface of an axle and a roller is between two oxygenated (100) surfaces, as shown in figure 6. This is one of the sliding interfaces between diamond surfaces discussed by Drexler in [3]. Any of the interfaces discussed could have been used.

Figure 6: Axle-roller interface

Three key capabilities are used in the design of the rollers. The first is selection lattices, which have already been discussed. The second is duplication of instances: once one axle-roller pair is designed the second axle-roller pair is created by duplicating the first. Duplication of structures is, of course, a fundamental capability in any interactive CAD package. It represents a significant improvement in the capabilities of Crystal Sketchpad over Crystal Clear. The third key capability is that of filtering what is displayed. Crystal Sketchpad allows the user to turn on and off the display of instances, templates, bonds and atoms. This aids in interactive response and in the ability to focus attention on the particular object being worked on. It also aids in avoiding ``the vineyard effect'' --- it is very easy, with a small rotation of a model of a crystal, to all of a sudden not to be able to make any sense of what is being displayed as the image turns into a tangle of lines and dots.

The steps to design the rollers and axles are shown in figure 7. Steps 1--9 indicate how to design a single thick-walled curved-shell structure --- an axle in this case. Step 10 essentially repeats steps 1--9 after first stretching the template and creating a new instance. Step 11 uses the duplicate instance function to create the second axle and roller. The steps are now discussed in detail.

Figure 7: Two rollers

Steps 1--4: Define a template and instance

A template is a drawing primitive in Crystal Sketchpad. Most geometric drawing and modelling packages have built in drawing and modelling primitives. In Crystal Sketchpad the equivalent is a template. Definition of the template used for the axle begins with a unit cell of diamond (the startup state of Crystal Sketchpad). The crystal lattice is rotated to bring the (100) surface into view and then using the handle box the template is stretched to the appropriate height, length and depth, and then instanced in step 4. Both the axle and its associated roller use the same crystal orientation.

Steps 5--6: Define a selection-lattice

Selection lattices are the mechanism by which the repetitive work in manipulating crystals to produce the kind of design being presented is reduced. After definition, a selection lattice allows a subset of atoms lying on a crystal lattice to be selected and manipulated as one. In this case the two dimensional selection lattice selects every atom along a row but every second row in a plane. The selection lattice is extended by selecting two handles along the desired direction of stretch and then dragging. Step 6 shows the selection lattice extended the full length of the block.

Steps 7--8: Introduce dislocations, bond ``seams'' and change atom type

With repeated application of the selection lattice previously defined, atoms are first selected and then deleted. This is the first stage of introducing dislocations into the structure. The same selection lattice is then used repeatedly in a pairwise fashion to select lattices of atoms which are to be bonded together to finish the introduction of dislocations into the structure. In step 8 a one dimensional selection lattice is used repeatedly to bond the ``seams'' at the end of the block. Although not shown in the diagram, the carbon atoms on the top and bottom of the structure have been changed into oxygen atoms, again using selection lattices.

Step 9: Warp

The block is warped into a tube. Parameters for warping a structure are defined in a similar manner to those of a selection lattice. Three atoms define a two dimensional warp lattice which is then stretched a distance which becomes the circumference of the warped structure. The straight line shown in step 9 is the handle box associated with the specification of the warp transformation.

Step 10: Create roller

The roller is created by first stretching the template used to create the axle, retaining the same orientation of the crystal as used for the axle, and then repeating steps 4--9. The interface between the axle and the roller is two oxygenated (100) surfaces.

Step 11: Duplicate

With design of the first axle-roller pair completed creation of the second pair is achieved by duplication of first the axle and then the roller. Design of the two rollers and their axles is now complete.

7 Belt

The second stage of the conveyor design is the conveyor belt. In contrast to the axles and rollers the belt is a strained thin-walled sheet of diamond --- (hopefully) thin enough to bend around the rollers without the need to use a chain belt. Graphite may serve the purpose better, however, as yet, Crystal Sketchpad does not handle graphitic structures.

The most straightforward way to design a diamond belt would be to to create a single, thin block of diamond, bond the ends and then warp it into a tube. However, in order to curve the conveyor belt around the two rollers it is constructed from four parts (instances), two of which are bent into curved structures using Crystal Sketchpad's warping function. The four instances are then bonded at their ends to produce a continuous belt. This approach illustrates the ability to make several instances of a template and to bond selection lattices from two separate instances. The steps to produce the conveyor belt are shown in figure 7 and discussed in detail below.

Figure 8: Conveyor belt

Steps 1--2: Define a template, instance

The template used to design the rollers is first shrunk to an appropriate height and length for the belt. The orientation of the crystal is not changed, meaning the interface between the belt and the roller is again between two (oxygenated) (100) surfaces. Crystal Sketchpad allows different templates to be defined and active at the same time, but in this case modifying the previous template gives as much flexibility as is required. Once the template is shrunk four instances are created.

Step 3: Position instances, warp end instances

The instances which make up the conveyor belt parts are first positioned. Then the two which make up the ends are then warped into semi-circular structures.

Steps 4--7: Join instances

In order to make a continuous belt the four instances must be bonded at their ends. This is achieved by pairwise use of selection lattices on different instances. Before this though, some atoms are removed at each end of the top instance so when joined with neighbouring instances the diamond crystal lattice is continuous across the join --- to be seamless. Close inspection of the lower right of the belt will reveal that there is, in fact, one imperfect join which introduces a seam. The joins are created using two dimensional selection lattices. Note that different selection lattices are required for the two different kinds of instance end. The joins are created with the two end instances warped. Step 7 gives an angled view of the belt.

Step 8--9: Position rollers

To complete the design of the conveyor the axles and rollers are positioned within the belt. So far in the design of the belt the rollers and axles have been hidden from view; they are reenabled. For relative positioning of instances (and templates) Crystal Sketchpad allows a front, top and side view. These views, as yet, are not similtaneous. Similtaneous views from different directions is a well established technique in 3D modelling for aiding the relative positioning of objects.

8 Molecular Mechanics

The use of computational chemistry software to analyse molecular structures is an inherent part of the design process. The positions of atoms in Crystal Sketchpad are only (very) approximate. Using molecular mechanics [2] [5] the energy of a molecular structure and the positions and trajectories of atoms can be estimated and a design's reasonabless evaluated. Several commercial packages, such as Cerius, Insight II and Hyperchem, with molecular mechanics implementations are in widespread use [1]. So far the conveyor has not been subjected to analysis by computational chemistry software, and there will no doubt be some design changes when it is.

9 Conclusion

Crystal Sketchpad extends the range of diamondoid structures which can be easily designed. Multi-instance components and sub-systems are possible. Design capability appears to be approaching that required to design ratchet-and-pawl mechanisms and perhaps parts of a rod-logic computer. Intermediate sub-systems such as a toroidal worm drive are currently beyond the capabilities of Crystal Sketchpad but should be achievable with the current approach. More complex systems like the Stewart platform (3,000,000 atoms) and the robot arm (5,000,000 atoms) remain a longer-term goal, but would appear to require a different approach based on a bounded-continuum model and a molecular compiler [3] [8].

10 Acknowledgements

The author would like to thank Ralph Merkle for arranging a visit at Xerox PARC where Crystal Sketchpad (formerly Crystal Clear) began. He would also like to thank Ralph Merkle, Eric Drexler and Markus Krummenacker for the many insightful conversations about nanotechnology and molecular CAD during that time. Finally, the author would like to thank the reviewers whose comments have lead to improved presentation.


J E Bowie. Data Visualization in Molecular Science. Addison-Wesley, 1995.

U Burkert and L Allinger. Molecular Mechanics (ACS Monograph 177). American Chemical Society, Washington, 1982.

K E Drexler. Nanosytems: Molecular Machinery, Manufacturing and Computation. Wiley, 1992.

G I Leach and R C Merkle. Crystal clear: a molecular cad tool. Nanotechnology, 5:168--171, 1994.

K B Lipkowitz and D B Boyd. Reviews in Computational Chemistry Vol. 2. VCH Publishers, New York, 1991.

W M Lomer. A dislocation reaction in the face-centred cubic lattice. Phil. Mag. A, 42:1327--1331, 1951.

R C Merkle. tube.c. available from by anonymous ftp.

R C Merkle. Computational nanotechnology. Nanotechnology, 2:134--141, 1992.

R C Merkle. A proof about molecular bearings. Nanotechnology, 4:86--90, 1993.

About this document ...

Advances in Molecular CAD

This document was generated using the LaTeX2HTML translator Version 95 (Thu Jan 19 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -no_navigation -show_section_numbers -split 0 -link 0 nano95.tex.

The translation was initiated by Geoff Leach on Fri May 17 21:22:42 EST 1996

Previously the program was called Crystal Clear. Markus Krummenacker informed me that the name ``Crystal Clear'' has in fact been trade-marked in the USA by a company which produces screen savers. To avoid any confusion (and litigation!), and hopefully avoiding another name conflict, Crystal Clear has become Crystal Sketchpad --- a name originally suggested by K. E. Drexler.

Geoff Leach
Fri May 17 21:22:42 EST 1996