PLUTON Manual

How PLUTON operates


This section on program internals should provide a framework to understand most of the effects of the available instructions. The input atomic coordinates (x, y, z) are with reference to user-defined axes (a, b, c), which will usually be either crystallographic unit cell axes or an arbitrary orthogonal set: these coordinates are input as fractions of the unit cell edges or as Angstrom units (in the latter case they are converted to and stored internally as fractions of dummy cell edges). A second, orthogonal system (A, B, C) (see Dunitz 1979) with coordinates (XO,YO,ZO) in Angstroms is set up internally: The unit vector A is choosen along a, B as unit vector normal to a in the ab plane, and C normal to A and B. This orthogonal system is coincident with the first system when the input axes are orthogonal. The third system is the plotting coordinate system in cm: XP across the picture from left to right, YP up the picture from bottom to top and ZP out of the paper. All these axial sets are right-handed and absolute configuration is preserved in all rotations.

As atoms are input to the program, they are stored both in the X, Y, Z and the XO, YO, ZO coordinate system. The XP, YP, ZP system is used only when plotting is actually being performed. Each atom has additional information stored for it including the atom name (the embedded element name is used by default to set various radii) and various flags such as for inclusion in the plot and labelling. This data structure is known as the atom list. Duplicate entries with the same coordinates are skipped from the input stream.

The JOIN instructions (either by default or as specified) set up a list of connections (known as bond list) between atoms. Each connection is simply a pair of atom serial numbers referring to the input atom list. Some JOIN instructions also find connections between input atoms and other atoms related to the original list by crystallographic symmetry. This may include both connections to a symmetry related part of a molecule sitting on a special position or intermolecular connections. In order to store these connections for plotting, the program appends dummy symmetry- generated atoms to the atom list and marks them with a special flag.

If the final picture is to contain several molecules, as in a packing diagram, or a complete molecule for which the input atoms represent only the symmetry- independent portion of it when a molecule lies in a crystallographically special position in the unit cell, the program will have to generate XP, YP, ZP coordinates for the atoms in each of these molecules or symmetry-related molecular fragments. This is controlled by two further lists: a list of symmetry operations pertaining to the structure, input directly using the SPGR or LATT and SYMM instructions: and a list of 'molecules and ions' (known as ARU list) to be drawn (see definition of terms for an explanation of the terms ARU and ASU ).

The program works as follows. Instructions (free format) are read and interpreted. Various instructions add to the list of atoms and symmetry operators. The JOIN instructions set up the connections list and may also add to the atom and ARU-lists if connections between ARU's are to be generated. Plotting parameters are then set by user instructions or left at default settings. No plotting is actually done until the PLOT instruction is read. This first sets up the XP, YP, ZP plotting list of all atoms to be plotted. The information in the ARU list and the current view matrix together tell the program how to convert X, Y, Z into XP, YP, ZP.

The plotting coordinates and atom radii are scaled from Angstroms to cm. and corrected for perspective if requested. In the non-stick mode, all atoms in the plotting list are drawn, allowing for obscuring of some by others and bonds, and intersection of spheres in space-filling models and bonds in the ROD mode, except that dummy atoms are not usually drawn - they are required only so that connections between molecules are possible, and will generally be duplicated by other non-dummy atoms generated in the XP, YP, ZP list by symmetry from the original input atoms. Following the atoms, all the bonds are drawn, omitting portions obscured by atoms or bonds. Atoms are labelled by a routine which minimises overlap of the labels by atoms, bonds and other labels. When the picture is complete, the next instruction may be read.

Most data are stacked in a large array, either bottom-up or top down, so that the stack size is the limiting factor for the size of the problem that the program can handle. The program reports on the maximum memory usage in the current run. The stack size is a program implementation parameter. The input list of atoms is checked on redundancy.