0 MOVIEMOL An easy-to-use molecular display and animation program Version 1.1 Authors and Copyright: Kersti Hermansson and Lars Ojamäe Uppsala University, Institute of Chemistry Report UUIC-B19-500 (1994) CONTENTS 1. Introduction 1 2. How to run Moviemol 2 3. Actions from keys on the keyboard 3 4. The contents of the optional control file 4.1. The use of the control file 4 4.2. The display and generation of atoms and bonds 4 4.3. Variables in the optional "name".ctl file ($CNTRL and $PS namelists) 7 5. More about... 5.1. ...The input format 13 5.2. ...How to change the distance criteria for covalent bonds 14 5.3. ...How to add additional (non-covalent) bond types 15 5.4 ...How to remove or modify H-bonds 15 5.5. ...How to speed the animation up a bit 15 5.6. ...How to create a b/w or colour postscript image 16 5.7. ...Virtual-reality mode 16 5.8. ...Displaying crystal structures 17 5.9. ...Interfacing Moviemol with an MD run 17 5.10. ...The default values in the radius, colour and weight arrays 18 6. Additional programs... 6.1. Conversion from Gaussian92 or Hondo v8.0 normal coordinates to Moviemol input 20 6.2. Conversion from Crystal Coordinates to Moviemol input 20 7. Six demonstation examples 21 8. Authors and trademarks 22 1. Introduction Moviemol is a program for visualization and animation of molecular structures. Moviemol typically takes sets of molecular coordinates and displays each of these sets or frames one after the other to create a "movie". The molecules/atoms/ions are displayed in the ball-and-stick form. At any moment during the animation, the molecules can be rotated or translated, magnified or diminished, or a postscript image file can be created. Moviemol is now used as a standard display program at the Chemistry Department in Uppsala, both in undergraduate education and as a tool to visualize scientific results such as Molecular Dynamics (MD) trajectories, normal mode vibrations, crystal structures or the geometry of molecular structures resulting from quantum-mechanical calculations. We have found the program particularly helpful at conference presentations, where we have displayed the animations for wide audiences with the help of a portable PC and an overhead projection panel. The necessary input to the program is a file (default extension ".xyz") which contains frames with atomic coordinates and atomic numbers Z, arranged as follows (free format): Number of frames Number of atoms in frame no. 1. x, y, z, Z for atom no. 1 x, y, z, Z for atom no. 2 ... x, y, z, Z for the last atom Number of atoms in frame no. 2. x, y, z, Z for atom no. 1 x, y, z, Z for atom no. 2 ... x, y, z, Z for the last atom etc. for all the frames. Different input formats are allowed if signalled by the user in the (optional; see next paragraph) .ctl file. The default unit for the atomic coordinates is Angstrom. With the aid of a data base of covalent and van der Waals atomic radii, colours, distance criteria etc., Moviemol then generates the appropriate atoms and bonds and displays the results on the screen for each frame in succession. No additional input is necessary. However, if you want to modify the atoms or bonds or change the input format, for example, this can be done by modifying the corresponding variables in the $CNTRL namelist in the optional "control file" (with the default extension ".ctl"). The Moviemol program currently runs on PC:s and IBM RISC/6000 or Silicon Graphics workstations. It is distributed free-of-charge to academic research institutions and researchers. We - the authors - want all copies to be distributed through ourselves, however, and therefore ask you to contact us (how, see Section 8) to obtain your copy of the program (although a shareware version with a built-in expiration date can be obtained by anonymous ftp from 'chem-ftp.mps.ohio-state.edu' for "check-it- out"-purposes). Commercial or educational establishments will be charged a very reasonable fee. 2. How to run Moviemol We have provided you with: 1) A Moviemol executable program module, named "moviemol.exe" for PCs, or "Moviemol" for IBM RISC/6000 or Silicon Graphics Indigo workstations. 2) Six demonstration examples, from the gas, liquid and solid phases: "ex1.xyz" and "ex1.ctl": A movie displaying trajectories from an MD simulation of a (H2O)2 dimer at 400 K. "ex2.xyz" and "ex2.ctl": A movie displaying trajectories from an MD simulation of an AlCl3(aq) solution at 300K. . "ex3.xyz" and "ex3.ctl": A movie displaying a normal mode vibration in the LiOH.H2O crystal. "ex4.xyz" and "ex4.ctl": A movie displaying a normal mode vibration in the CF3SO3- ion. "ex5.xyz" and "ex5.ctl": A single-frame picture of the RbH3(SeO3)2 crystal structure. "ex6.xyz" and "ex6.ctl": A single-frame picture of the C60 buckeyball molecule. More details about these examples are given in Section 7. 3) This manual. To start the program, write: moviemol The program will then ask you: Enter coordinate file name : You can answer, for example: ex1 - and you're in business, looking at the movie of the "ex1.xyz" file ! You can now start studying the trajectories in detail by rotating the molecules, zooming in the picture, making a hardcopy now and then, or whatever you might fancy to do - just by pressing the appropriate keys on your PC or workstation keyboard. The action of the keys is described in the next section. Note that only if you care to change the program's default settings do you need to read beyond Chapter 3 of this manual! !!! The system requirements for the PC-version is at least a PC386 with a math co-processor and 5 Mb of memory. The program uses extended memory, so you may have to deactivate your memory- manager programs !!! !!! The workstation versions require X-windows and the GL graphics library. You may need to give the command "chmod +x moviemol" before running the program for the first time !!! 3. Actions from keys on the keyboard In the following, we use the term "molecules" to refer to the object(s) displayed, regardless of whether they are actually molecules, atoms, or whatever. The animation can be modified from the keyboard by the following keys (upper- or lowercase does not matter): spacebar Halts animation/continues halted animation.Toggle. (Esc), Q Exits from the program. > < Increases or decreases the animation speed. F -or- PageUp Displays the frames one step at a time Forward. B -or- PageDown Displays the frames one step at a time Backward. N -or- Home Leaves one-step mode and enters the "Normal" mode. P Creates a Postscript file of the screen image. M -or- ? Shows the Menu. R Toggles continuous/one-step mode for Rotations and translations. E Toggles 'loop forEver'/'stop at last frame'. T Toggles the display of chemical symbols ("Titles") on/off. # Shows the list number for each atom in the current frame of the coordinate input file. X Rotates the object 90 degrees around the X axis. Y Rotates the object 90 degrees around the Y axis. Z Rotates the object 90 degrees around the Z axis. arrows Rotates the molecules around the x (horizontal) and y (vertical) axes with respect to the center-of-mass of the molecules. Step size:'degree' (default:5 deg, changable in $CNTRL) + - Rotates the molecules around the z axis. The z axis points out from the screen. * / Increases or Decreases rotational step length. (ctrl)arrows -or- Translates the molecules along x or y. Step H J K L size: 'trans' (default:0.5 A, changable in $CNTRL). (ctrl)+ (ctrl)- Translates the molecules in the z direction. -or- I O (ctrl)* (ctrl)/ Increases or Decreases translational step -or- [ ] size. U Undoes the rotations/translations (i.e. goes back to the original orientation). V Enters/leaves desktop Virtual-reality mode. ) ( Increases or decreases the scale of the virtual model. (Used mainly in Virtual reality-mode.) W Writes out the current rotation and translation matrices and some variables on the file 'moviemol.out'. It is the rotations and translations performed for the current frame which are printed. By default the program halts when the end of the coordinate file is reached. If you then press the spacebar twice, the movie starts anew, from the first frame. This is automatically accomplished if the variable 'iforever' is set to 1 (default is = 0) in the $CNTRL namelist in the "control" file; see sections 4.1 and 4.3. Warning! For Moviemol on workstations, except Silicon Graphics, the combination keys '(ctrl)something' do not work properly. Therefore we have added extra keyboard-keys (H,J,K,L,I,O,[,]) to perform the same operations. 4. The contents of the optional control file 4.1. The use of the control file Moviemol contains a data base of default values for atomic radii, masses, H-bond distance limits, colours, etc. However, you might want to modify these values. This can be done by changing the value of the corresponding variable in the variable namelist "$CNTRL" in the "control"-file. All variables that can be changed by the user are listed in Section 4.3. Here is an example of the contents of a control file: $CNTRL iunit = 0, introtext=1, text(5)=' Structure B at 300 K ', radvdw(1) = 1.5, atomcolor(8) = 'blue', $END "iunit=0" says that the unit in the coordinate input file is Bohr rather than Angstrom, "introtext=1" that an introductory text (namely: "This is a Moviemol show starring Structure B at 300 K") will be displayed. "radvdw(1) = 1.5 A" says that the radius of the atoms with atomic number 1, that is H, should be 1.5 A, and "atomcolor(8) = 'blue'" says that the oxygen atoms should be coloured blue. When the program starts, you are prompted to react to the following request: "Enter coordinate file name: ". The (compulsory) coordinate file as well as the (optional) input file can have any names. However, the names "name".xyz and "name".ctl make life particularly easy. If you then answer by typing "name" only (like we did in Section 2), without the .xyz extension, the program reads coordinates from the file "name".xyz and automatically reads new variable values from the file "name".ctl, if it exists. If it does not exist, all the default values of the program are used. If you answer with the full coordinate name, i.e. "name".xyz or any other name such as "name".dat, for example, the program will prompt you for the name of the control file : " Enter control file name (if any): ". Again you can choose to use the program default values, by writing , which signals that no input file is used. As an alternative or complement to having a special control file named "name".ctl, you may want to have a generic inputfile, named "moviemol.ctl". If such a file exists in the current working directory, the program reads this file before reading any file named "name".ctl. On workstations this file can also be situated in the /usr/lib or the /usr/local/bin directories, enabling the default values to be modified locally for your site. On PC's the file can also be placed in the " \ " directory. 4.2. The display and generation of atoms and bonds The display of the atoms is determined by 'atomcolor( )' and 'radvdw ( )' for each atom type (=atomic number) and by the scale factor 'radscale'.The size of the atoms on the screen is determined by radscale*radvdw( ) and by the z-coordinate due to the perspective. Besides the elements 1-100, atoms are also allowed to have atomic numbers 101-500. The elements 101-300 have been given the same radii, masses and names as elements 1-100, but different default colours. Thus, for example, elements 8, 108 and 208 by default correspond to oxygen atoms (except the default colour for Z > 100 is purple and for element 8 it is red). These high atomic numbers can be useful if you would like to make a distinction between, let's say, different kinds of oxygen atoms, by assigning them different colours. Then you could simply change the atomic number for the appropriate subgroup(s) of oxygen atoms to 108 (and/or 208,...) instead of 8 in the coordinate file. And if you do not like the colour purple you just add new colour entries in the $CNTRL namelist, e.g. atomcolor(108) = 'green', atomcolor(208)='yellow',... The elements 301-400 are all named 'X' and the elements 401-500 'Y'. These atom labels may be natural to use if you want to display so-called dummy atoms and ghost atoms from a Gaussian run. The atomic radii, colours, etc. for these elements (as for all the others) can be modified by assigning new values to 'radvdw( )' and 'atomcolor( )', etc. The chemical symbol itself can be modified by the 'chemsymb( )' variable. Covalent bonds (bond-length criteria taken from the data base of covalent radii) are utomatically displayed. Covalent bonds all have the color 'covcolor' and thickness 'covbondthick'. A covalent bond is drawn between two atoms with atomic numbers i and j if the distance is shorter than 'radcov(i) + radcov(j) + flex'. The program default values for radcov( ) are shown in Section 5.5, and can, of course, be changed in the $CNTRL namelist in the .ctl file. 'Flex' is 0.2 by default, but can be changed in the $CNTRL namelist, if you want a more (or less) liberal distance criterion. 'Flex' has been introduced to allow for a certain flexibility of intramolecular bond distances. This may be useful if the data file displayed originates from an MD simulation with flexible intramolecular bonds or if the data file contains the vibrations from a normal-coordinate analysis (cf. Section 6.1). If the user does not want covalent bonds to be drawn between certain pairs of atoms which fulfil the default covalent-bond criterion, these bonds can be removed by specifying 'nremovecov', 'nocov1( )' and 'nocov2( )' in the $CNTRL namelist. 'nremovecov' tells how many types of bonds you want to remove. For example, if you do not want to draw S-O and C-C covalent bonds then write: nremovecov = 2, nocov1(1)=16, nocov2(1)=8, nocov1(2)=6, nocov2(2)=6, If the user also wants to display other bond types, in addition to the covalent bonds, e.g. H bonds, cation-ligand bonds, metal- metal bonds, etc. between different atoms and with different bond length criteria and perhaps with different colours than the covalent bonds, this can be specified with the $CNTRL namelist. These additional bond types we call "non-covalent bonds". Each such non-covalent bond type is defined by giving the bond length limits for the bond, the colour desired, the thickness of the bond, and which types of atoms (i.e. atomic numbers) are allowed at either side of the bond. This is accomplished by defining a new non-covalent bond type (1 if it is the first) which will have a certain distance criterion 'bonddistmin(1)', 'bonddistmax(1)') for all the atoms belonging to this bond type and which will be displayed by a certain bond colour ('bondcolor(1)') and bond thickness ('bondwidth(1)'). The atom types allowed at either end of this new bond type are specified by 'bonddonor(i)', 'bondacceptor(i)' (where 'i' is the number of the bond), which say which these atom types are. Altogether maximum 12 non-covalent bond types can be specified. If two atoms fulfil both the covalent bond criterion and the user- specified criterion, the latter overrides the former. Ex 1: In addition to the covalent bonds, which are automatically displayed, draw H-bonds between all H...O atoms such that 1.6 A < R < 2.2 A. Make them white and of thickness 0.038Å. This can be achieved by giving in the $CNTRL namelist: bondcolor(1)='white', bonddistmin(1)=1.6, bonddistmax(1)=2.2, bonddonor(1)=1, bondacceptor(1)=8, bondwidth(1)=0.038, There is an equivalent way of specifying this, which you might prefer if you prefer specific hydrogen bond names, namely: hbcolor='white', disthbmin=1.6, disthbmax=2.2, hbdonor=1, hbacceptor=8, hbbondwidth=0.038, This works because in the program 'hbdonor' is equivalent to 'bonddonor(1)', etc. It so happens, however, that hbcolor='white', hbdistmin=1.6, hbdistmax=2.2, hbdonor=1, hbacceptor=8 and hbbondwidth=0.038 are the default settings of the hydrogen bond parameters in Moviemol. Consequently, nothing needs to be written. Note that, for ease of use, we have added the following lazy man's tool. If you want to play around and test your images with and without H-bonds displayed (i.e. with and without the first non-covalent bond type displayed), then you do not have to keep adding/removing the lines above in your $CNTRL namelist. You can just leave the lines there, and set the parameter 'idisplayhb = 0' when you do not want to show these bonds. As stated, the first elements in the general bonddonor( ) etc. arrays are by default reserved for H...O hydrogen bonds. If you want to stick to that convention, a second non-covalent bond should be defined with bonddonor(2), etc., as shown in the following example: Ex 2: For the same data file, also draw narrow (0.02 Angstrom) yellow bonds between all Na-O and Al-O atoms such that 1.5 A < R < 1.9 A. Then use the following input: bondcolor(2)='yellow', bonddistmin(2)=1.5, bonddistmax(2)=1.9, bonddonor(2)=8, bondacceptor(2)=11, bondwidth(2)=0.02, bondcolor(3)='yellow', bonddistmin(3)=1.5, bonddistmax(3)=1.9, bonddonor(3)=8, bondacceptor(3)=13, bondwidth(3)=0.02, or, equivalently, bondcolor='white','yellow','yellow', bondwidth=0.038,0.02,0.02, bonddonor= 1, 8, 8, bondacceptor= 8, 11, 13, bonddistmin=1.6,1.5,1.5, bonddistmax=2.2,1.9,1.9, Colours are specified as text strings. The possible values for the different variables that determine the colours are: 'black', darkblue', 'green', 'lightblue', 'red', 'purple', 'toffee', 'lightgrey', 'grey', 'blue', 'greenyellow', 'turquoise', 'salmonpink', 'magenta', 'yellow', 'white', 'lightyellow', 'pink', 'steelgray ', 'darkgray', 'bluegreen' Out of these 21, only the first 16 can be displayed on PC´s and on most workstations. The atomic labels (invoked by pressing 'T' for Text) have the same size as the displayed atomic radii times a scale factor 'symbolsize'. On the PC the symbol size can only be changed in multiples of 8 pixels (a feature of the NDP compiler), i.e. approx. 4 mm. The symbol size on the postscript output images do not have this restriction. Moreover, the symbol size on the postscript images can be made non-proportional (i.e. all of the same size) if this suits the user better (see the end of Section 4.3). The maximum number of atoms per frame in the coordinate file is 1600. The maximum number of bonds (covalent + non-covalent) from each atom is 16. 4.3 Variables in the optional "name".ctl file ($CNTRL and $PS namelists) The variables in the $cntrl namelist of the control file determine: a) how the atoms and bonds are generated and displayed atomcolor(500), bondacceptor(12), bondcolor(12), bonddistmax(12), bonddistmin(12), bonddonor(12), bondwidth(12), catcolor, covbondwidth, covcolor, flex, hbacceptor, hbbondwidth, hbcolor, hbdistmax, hbdistmin, hbdonor, flex, idisplayhb, idisplaysymbol, , nocov1(40), nocov2(40),nremovecov, radcov(500), radscale, radvdw(500), sizelamp, symbolcolor, symbolsize, xdelsymbol, xdelta, ydelsymbol, ydelta b) how the animation is executed and the frames displayed backcolor, clip, degree, eyedistance, fixcenter, icontinuerot, ifixscale, iforever, inmode, ipersp, iusedirect, iwait0, iwait, keepbonds,npixwinx, npixwiny, nshow, rotate(3,3), trans, translate(3),weight(500), xfixwidth, xrotstep, yrotstep, zrotstep, xymargin c) how the text is displayed iframetext, frametextcolor, iframetextsize, xframetext, yframetext,introtext, textcolor(10), itextsize(10),xtext(10),ytext(10),text(10) d) the input format auang(6), icrystal, inputformat, iunit, needtosort, nframein e) the postscript file generation (more specialties can be written in the $ps namelist in the "name".ctl file) icolorps, ishadeps, iportrait Below is an alphabetical list of these variables, with explanations. Variables with names starting with the letter 'i' take integer values, often 0 or 1, with 0 meaning 'off' and 1 meaning 'on'. Variable in Default Explanation $CNTRL value(s) atomcolor(500) See Section The colour of the atom type. 5.7 auang(6) /0.529177,1.0 Conversion factors for ,10.0,1.0,1.0 different length units used by ,1.0/ the parameter 'iunit',see below. auang should never need to be changed. axiscolor /'black'/ The width (in Angstrom) of the unit-cell axes (for idisplaycell=1). axiswidth /0.025/ The colour of the unit-cell axes (for idisplaycell=1). backcolor /'salmonpink' The colour of the background. / bondacceptor(12) /8,0,...,0/ The atom types (atomic number) for the 'acceptor atom' for each of the non-covalent bond types. bondcolor(12) /'white','pur The colours of the non- ple',10*'whit covalent bonds. e'/ bonddistmax(12) /2.2,2.2,0.,0 Max. dist. for the display of .,0.,../ non-cov. bonds bonddistmin(12) /1.6,1.6,0.,0 Min. dist. for the display of .,0.,.../ non-cov. bonds bonddonor(12) /1,0,...,0/ The atom types (atomic number) for the 'donor atom' for each of the non-covalent bond types bondwidth(12) /0.038/ The thickness of the non- covalent bonds in Angstrom catcolor /'purple'/ Equivalent to 'bondcolor(2)'. chemsymb(500) /'H','Li',... Chemical symbol, displayed by / pressing the key 'T'. clip /0.8/ The position of the clip-plane in fractions of the screen- viewer distance (if =0.0 it coincides with the screen).Atoms further away from the screen towards the viewer than 'clip' are not displayed covbondwidth /0.038/ The thickness of the covalent bonds in Angstrom. (alternative name: 'bondthick') covcolor /'black'/ The colour of the covalent bonds degree /5.0/ (Initial) stepsize (deg.) for rotations eyedistance /45.0/ (cm) Approx. dist. screen <--> viewer's eye fixcenter /0.,0.,0./ If ifixcenter=1, then the vertical dimension of the display will be 'xfixwidth' angstroms with a center in the point 'fixcenter'. flex /0.2/ Add-on to the max. dist. for cov. bonds frametextcolor /.../ The colour of text string displayed for each frame (if iframetext=1) hbacceptor /8/ Acceptor atom types for the H bonds. Equivalent to 'bondacceptor(1)' hbbondwidth /0.038/ Equivalent to 'bondwidth(1)'. hbcolor /’white’/ Equivalent to 'bondcolor(1)' hbdistmax /2.2/ Max. distance for display of H- bonds (Equivalent to 'bonddistmax(1)') hbdistmin /1.6/ Min. dist. for display of H- bonds (Equivalent to 'bonddistmin(1)') hbdonor /1/ Donor atom type for the H bonds. Equivalent to 'bonddonor(1)'. icontinuerot /0/ = 0, the initial rotation mode is stepwise = 1, the initial rotation mode is continuous Can be changed at any time by pressing 'R' (toggle) icloseopen /0/ = 0, normal = 1, close and reopen the coordinate file when the end of the file is reached. (This automatically causes iusedirect to be set to 2!) icrystal /0/ = 0, no function = 1, equivalent to iunit=5 idisplaycell /0/ = 0, do not display cell edges = 1, display cell edges (applicable when icrystal=1) idisplayhb /1/ = 0, do not display H-bonds = 1, display H-bonds (see "Note" in Section 4.2) idisplaysymbol /0/ = 0, atomic text symbols not displayed initially. = 1, atomic text symbols are initially displayed. ifixscale /0/ = 0, the scale is automatically determined = 1, the scale is given in the input by 'xfixwidth'. ifixsymbol /1/ = 1, the size of symbols is constant = 0, the size of symbols changes with perspective iforever /0/ = 0, program halts when the end of the coordinate file is reached. Press the space bar to restart from frame 1. = 1, the animation starts from the beginning again when e-o-f is reached iframetext /0/ = 0, no display of text connected to each frame = 1, display a text string (character*50) associated with each frame. String must be placed in the data file, on a line above the number of atoms for each frame. iframetextsize /12/ The size of the text string displayed for each frame if iframetext=1. ikeepbonds /0/ = 0, the bonds are determinded for each frame anew = 1, the bonds as determined in the first frame main- tained throughout the animation. Not perfect. imonochrome /0/ = 0, colour monitor = 1, monochrome monitor inmode /0/ The program senses which graphics card is used and sets the appropriate BIOS graphics mode. If a user-specified value of inmode is given it can only be equal to one of the following values:14 (640 x 200, 16-color), 15 (640x200, monochrome), 16 (640 x 350, 16- color). For PC's only. inputformat /0/ = 0: nframes ... = 1: nframes ... = 2: nframes . = 3: nframes ... = 4: nframes ... = 9: nframes, natoms <( Z x y z )> ... =10: nframes, natoms, (Z(1),Z(2),...) <(x y z )>.. =11: (Gaussian90 output format): .. =21: An output file from the Gaussian92 program is read. (More details are provided in Section 5.1) introtext /0/ = 0, do not display text before the animation starts = 1, display text before the animation starts. The text is stored in the 'text( )' character*50 variables and its positions in the 'xtext( )' and 'ytext( )' real variables (measured in fractions of the screen). 'itextcolor( )' and 'itextsize( )' determines the colours and sizes, respectively (see below). Hint: With the default settings: only text(1),...,text(5) will fit on the screen, use max 26 characters for each text( ), and remember that character no. 13 will fall at center of the screen. The default texts are: text(1)='This is a', text(2)='MOVIEMOL', 'text(3)='show', text(4)= 'starring', text(5)='some interesting molecules'. ipersp /1/ = 0, orthographic projection (no depth in the picture) = 1, perspective projection (items far away appear smaller than items close by). In this mode, the zoom keys will notbe very useful, since the size of the object is independent of the z coordinate. Use '(' and ')' instead. iportrait /0/ = 0, postscript images are generated in landscape mode = 1, postscript images are generated in portrait mode ireadstdinp /0/ = 0, program prompts for the coordinate file name = 1, atomic coordinates read from standard input (This automatically causes iusedirect to be set to 2!) See Section 2. ishadeps /1/ = 0 only b/w, no grayscale in postscript plots = 1 grayscale itextsize(10) /24,48,24,24, The size of the initial text 24,12,12, 12,12,12/ iunit /1/ The length unit of x,y,z in the data file. The program uses the conversion factor 'auang(iunit+1)' (see above). = 0, Bohr = 1, Angstrom = 2, nanometers = 5, crystal fractional coordinates (unit cell dimen- sions must be given on a line immediately above the number of atoms for each frame, and below any optional frame text;see 'iframetext' above). iusedirect /1/ =0 prereads all frames (takes time!), to determine display margins etc. Creates NO direct-access file for F/B stepwise mode (saves some diskspace). =1 prereads all frames (takes time!), to determine display margins etc. Creates a direct-access file for F/B stepwise mode. =2 prereads 1 frame only to determine display margins etc. Creates NO direct-access file. iwait0 /0/ Additional waiting time before the animation starts. On the pc in units of approximately 1/60 s, on the workstations in units of screen refresh cycles. iwait /0/ Minimum waiting time between frames in the animation. On the pc in units of approximately 1/60 s, on the workstations in units of screen refresh cycles. listdonor(12) /1,0,...,0/ The atom types (atomic number) for the 'donor atom' for each of the non-covalent bond types listacceptor(12) /8,0,...,0/ The atom types (atomic number) for the 'acceptor atom' for each of the non-covalent bond types. needtosort /1/ = 0, the atom coordinates are sorted in the z direction already in the input file. This makes the animation marginally faster. = 1, the input atom coordinates need to be sorted. nframein /0/ If non-zero: nframein frames are shown, overriding the number given on the first line in the coordinate file. nocov1(40) /0,..,0/ nocov1(i) is the atom type for "the first atom" in the i'th covalent bond type not to be displayed. nocov2(40) /0,..,0/ nocov2(i) is the atom type for "the second atom" in the i'th covalent bond type not to be displayed. npixwinx X-window size(workstations only): No. of pixels along x npixwiny X-window size(workstations only): No. of pixels along y nremovecov /0/ No. of covalent bond types not to be displayed (.le.40) nshow /1/ Show only each nshow:th frame from the coordinate file. radcov(500) See Section The covalent radii of the 5.7 atoms. radscale /0.2/ The vdW radii are scaled with radscale before display radvdw(500) See Section The van der Waals radii of the 5.7 atoms. rotate(3,3) /1.,0.,0.,0., Rotates the input atom 1.,0.,0.,0.,1 coordinates around the center- ./ of-mass as given by this rotation matrix. The nine elements should be given in the order: (1,1), (2,1), (3,1), (1,2), (2,2), (3,2),(1,3), (2,3), (3,3). sizelamp /0.3/ The size of the light reflection spot on the atoms symbolcolor /'black'/ The colour of the atomic text symbol symbolsize /0.80/ The size of the atomic text symbol size relative to the atom radius (approximately). (Note, the symbol size in the postscript image can be either proportional or all of the same size. See 'ifixsymbol') text(10) /' This is a initial text: character*50 MOVIEMOL ..'/ text(10) textcolor(10) /.../ The colour of the text strings displayed initially trans /0.25/ The (initial) stepsize in Angstrom for translations. translate(3) /0.,0.,0./ Translates input atom coordinates by these amounts. xdelsymbol /-0.40/ The x-offset of atomic symbols relative to the c.o.m. xdelta /-0.3/ X-displacement of light refl. spot w.r.t. atom center xfixwidth /10.0/ If ifixscale=1, then the horizontal scale will be 'xfixwidth' angstroms with a center in 'fixcenter' xframetext /0.2/ The x-coordinate of the text string displayed for each frame if iframetext=1. xrotate /0.0/ Initial rotation around the x- axis, before first frame is displayed. xrotstep /90.0/ Rotation step used when the key 'X' is pressed xtext(10) /0.1,0.05,0.1 The x-coordinates (in ,..,0.1/ fractions of the screen) for the initial initial text displayed. xymargin /0.10/ The margin around the image on the screen. ydelsymbol /-0.35/ The y-offset of atomic symbols relative to the c.o.m. ydelta /0.3/ Y-displacement of light refl. spot w.r.t. atom center yframetext /0.85/ The corresponding y- coordinate. yrotate /0.0/ Initial rotation around the y- axis, before the first frame is displayed. yrotstep /90.0/ Rotation step used when the key 'Y' is pressed. ytext(10) /0.9,0.65,0.5 The y-coordinates (in ,0.4,0.2,- fractions of the screen) for 0.4.../ the initial text displayed. weight(500) See Section The masses (in mass-u.) of the 5.7 atoms. Used by the program to determine the center-of-mass prior to rotation. zrotate /0.0/ Initial rotation around the z- axiz, before the first frame is displayed. zrotstep /90.0/ Rotation step used when the key 'Z' is pressed. Two variables, icolorps and ishadeps, in the $CNTRL namelist govern the postscript output. However, to enable a more precise control of your postscript output, you may add the $PS namelist. For example: $cntrl radvdw(8) = 1.7, ... $end $ps pssymbolsize=0.90, $end This example changes the size of the chemical symbol in a colour postscript image. Below is an alphabetical list of the postscript-related variables in the (optional) $PS namelist in the .ctl file: Variable in $PS Default Explanation value(s) bri(21) /.../ Brilliance of the colours used in Moviemol (0.0 < bri < 1.0) hue(21) /.../ Hue of the colours used in Moviemol (0.0 < hue < 1.0) icolorps /0/ =0: postscript images are in grayscale =1: colour postscript is generated. This variable overrides the icolorps variable in the $CNTRL namelist.. ifixpssymbol /1/ =1: The atomic symbols on the postscript image are all of the same size (see 'pssymbolsize'). =0: The atomic symbols on the postscript image are prop. to the atomic radii (radvdw()*radscale). (See 'pssymbolsize') iportrait /0/ =0, postscript images are generated in landscape mode =1, postscript images are generated in portrait mode ishadeps /1/ =0: postscript images are in black and white =1: postscript images are in greyscale This variable overrides the ishadeps variable in the $CNTRL namelist.. pagewidth /210./ The x dimensions (in mm) of the paper. psbordermax /1.5/ This variable determines the thickness of the black border around each atom and each bond (in mm). psmargin /0.10/ The margin around the boundingbox (in fractions of the picture) used for Encapsulated Postscript pssymbolsize /1.00/ Multiplier determining chemical symbol size in the postscript file. psxdelsymbol /-0.44/ The x offset of chemical symbol w.r.t. atom center psydelsymbol /-0.40/ The y offset of chemical symbol w.r.t. atom center.. sat(21) /.../ Saturation of the colours used in Moviemol (0.0 < sat < 1.0) shadedef /0.,0.3,.../ The grayscale for the different "colours" used in Moviemol (Section 3.1) when not colour postscript. 0.0 is black, 1.0 white 5. More about... 5.1. ...The input format inputformat /0/ describes how the coordinates and atomic numbers/symbols are stored in the coordinate input file Explanation: nframes = number of frames, natoms[i] = number of atoms in frame i. Z(j) = atomic number of atom j (in frame i). x(j) = x-coordinate of atom j (in frame i). symbol(j) = the chemical symbol of atom j (the first letter must be uppercase, the second (if any) lowercase). name(j) = a textstring to be associated with atom j (max 4 characters). If =0: nframes natoms[1] x(1) y(1) z(1) Z(1) x(2) y(2) z(2) Z(2) ... natoms[2] x(1) y(1) z(1) Z(1) x(2) y(2) z(2) Z(2) ... (etc. nframes times) If =1: nframes natoms[1] name(1) x(1) y(1) z(1) Z(1) etc. (The name must here be given within ' ', e.g. 'Hphe'.) If =2: nframes natoms[1] symb(1) x(1) y(1) z(1) etc. (The chemical symbol must be given in positions 1-2 on the line and the first letter must be uppercase, and the second (if any) must be lowercase.) If =3: nframes natoms[1] Z(1) x(1) y(1) z(1) etc. If =4: nframes natoms[1] name(1) Z(1) x(1) y(1) z(1) etc. (The arbitrary name must be in positions 1-4, starting at position 1.) If =9: nframes, natoms Z(1) x(1) y(1) z(1) (in frame 1) ... Z(n) x(n) y(n) z(n) Z(1) x(1) y(1) z(1) (in frame 2) ... Z(n) x(n) y(n) z(n) etc. (Here natoms is the same in all frames and can thus be given only once, on the first line after nframes.) If =10: nframes, natoms, (Z(i),i=1,natoms) x(1) y(1) z(1) (in frame 1) ... x(n) y(n) z(n) x(1) y(1) z(1) (in frame 2) ... x(n) y(n) z(n) etc. (Here also the ordering of the atoms must be the same in all frames) If =11 (Gaussian90 output format): idummy x(1) y(1) z(1) Z(1) ... idummy x(n) y(n) z(n) Z(n) (This works only if there is only one frame to be displayed. This is the same format as given in the output from the Gaussian90 program). If =21: Instead of a coordinate input file, an output file from the Gaussian92 program is read. The Moviemol program extracts the geometries from the gaussian "Z-matrix orientation" outputs and display these as successive frames. 5.2. ...How to change the distance criteria for covalent bonds The distance criteria for covalent bonds are modified by changing the covalent radii for the atoms, or the parameter 'flex' (default 0.2 Angstrom) since the maximum distance for a covalent bond between atoms i and j are radcov(i)+radcov(j)+flex. For example, the following $CNTRL namelist removes covalent bonds between C and F if the distance is greater than 1.2 Angstrom. $cntrl radcov(6) = 0.5, radcov(7) = 0.5, $end If you want to remove covalent bonds between C and F altogether, use nremovecov, nocov1( ), nocov2( ). 5.3. ...How to add additional (non-covalent) bond types (See also Section 4.2) The following is an example for the display of a water-aluminium animation, where an additional bond type ("bond type no. 2") besides the hydrogen bond ("bond type no. 1") has been added, namely the bond between Al and O atoms: $cntrl bonddonor(2) = 13, bondacceptor(2) = 8, bondcolor(2) = 'purple', bonddistmax(2) = 2.5, bonddistmin(2) = 1.5, $end 5.4. ...How to remove or modify H-bonds (See also Section 4.2) To remove H-bonds from the display, simply use 'idisplayhb' in the $CNTRL namelist: $cntrl idisplayhb = 0, $end The distance criteria for a H-bond can be modified by, for example, $cntrl hbdistmax = 2.2, hbdistmin =1.8, $end i.e. by setting the minimum H-bond distance to 1.8 Angstrom and the maximum distance to 2.2 Angstrom. An equivalent expression is: $cntrl bonddistmax(1) = 2.2, bonddistmin(1) =1.8 $end If for example nitrogen should be allowed to act as a hydrogen bond acceptor besides oxygen, write: $cntrl bondonor(2) = 1, bondacceptor(2) = 7 $end By default hbacceptor = bondacceptor(1) = 8, i.e. oxygen. The default hydrogen bond donor is hydrogen; hbdonor = bonddonor(1) = 1. 5.5. ...How to speed up the animation a bit Buy a faster computer with a faster graphics card! If you are running on a pc, then a "local bus" makes it much faster. It is really the display of the frames rather than the calculation of bonds etc. that is the bottleneck. One thing that can be reduced, however, is the waiting time before the animation starts. Normally, the Moviemol program first reads in all frames and determines the margins around the image and miscellaneous cutoff criteria based on this information. It also stores the frames in a direct-access file which is used in the "one-step-forward" and "one-step-backward" modes. By specifying iusedirect =2 in the $CNTRL namelist, only the first frame is used to determine margins and the direct- access file is not used. This makes the animation start immediately, but the "one-step" modes (Forward and Backward) will not work. 5.6. ...How to create a black-and-white or colour postscript image Three types of postscript images can be created (saved in the files 'moviemol.ps1', 'moviemol.ps2' etc. up to .ps9 in one session) when the key "P" is pressed: b/w with grayscale. This is the default postscript image type. b/w and no grayscale. This is often to be recommended for publication. Invoke this option by setting ishadeps = 0 in the $CNTRL namelist (or the $PS namelist). The little "light-spot" then of course also disappears from your atoms. (In general, of you want to get rid of the light-spots on the screen and in your postscript files, you can set 'sizelamp= 0.' in the $CNTRL namelist). Colour postscript. Invoke this option by setting icolorps = 1 in the $CNTRL namelist (or the $PS namelist). 'ishadeps' and 'icolorps' are included in the $CNTRL namelist. Anything more fancy concerning the postscript images is controlled from the $PS namelist. The atomic symbols in the postcript file are by default all of the same size (regardless of how they appear on the screen). The size can be controlled by 'pssymbolsize' in the $PS namelist. If you want the symbol sizes to be proportional to the atomic raould set ifixpssymbol = 0 in the $PS namelist. 5.7. ...Virtual-reality mode In "Virtual-reality" mode, entered by pressing "V", the viewpoint rather than the molecules are rotated or translated. When Moviemol creates the first image of the molecules, it does so by calculating the projection on a plane centered on the screen of a virtual model positioned right behind, and scaled to fit into the real physical dimensions of, the screen. In the virtual mode, when zooming in, the molecules are actually transferred closer to the viewer, and projected onto the screen. But in virtual-reality mode, the viewer, instead, is moving closer to the stationary molecules. It is as if sitting in a small spaceship where the screen is your window, and you manoevre your ship around the molecular model. For translations, the translation of the molecules and the translation of the viewer, are in fact (reciprocally) equivalent, but not so for rotations. In Virtual-reality mode, the rotation axes are now situated at the center of the screen instead of at the center-of- mass of your assembly of molecules. This is very practical if you want to "walk" into a crystal structure, for example, and want to look in different directions. In virtual-reality mode, the molecules that are closer to the viewer than the screen are not displayed (the clip-plane position is 0.0, see Section 4.3). The default is otherwise to show all molecules that are as close to the viewer as 0.9 times the 'eyedistance' (i.e. the approximate screen-eye distance), measured from the screen. Initially, since Moviemol scales the virtual model to fit onto the screen, its maximum dimensions may be 10 cm or so. To be able to fly your ship in among the molecules, you may want to increase the size of the model, which can be done by pressing ")" or "(". 5.8. ...Displaying crystal structures By setting 'idisplaycell=1' in the $CNTRL namelist a unit cell will be drawn, with corners at the fractional coordinates (0.,0.,0.), (1.,0.,0.), (0.,1.,0.), (1.,1.,0.), (0.,0.,1.), (1.,0.,1.), (0.,1.,1.,) and (1.,1.,1.). The x, y, z coordinates in the .xyz file should then also be given in fractional unit cell coordinates. This non-default unit for the coordinates is signalled by setting iunit=5 (or icrystal=1) in the $CNTRL namelist. The unit-cell axes and angles are given in the .xyz file, on a line immediately above the number of atoms for each frame. The widths of the axes can be changed by the variable 'axiswidth' and their color by 'axiscolor'. When the unit cell is displayed, the maximum number of atoms allowed in each frame is slightly lower than normal (1468 instead of 1600). Remember the possibility to set 'ipersp=0'. This will draw your crystal in an orthographic projection, which can look very nice for some structures. Also remember that in addition to the 5o (default value) rotations executed by the arrows on the keyboard (see Section 3), the keys 'X', 'Y' and 'Z' will rotate your crystal structure in intervals of 90o . This can be very handy for examining structures. 5.9. ...Interfacing Moviemol with an MD run There is the possibility to close and reopen the coordinate file when the end of your movie is reached. This can be useful, e.g. if you want to continuously monitor the atomic positions during an MD simulation run. In such a case, make your MD program write the atomic coordinates to the Moviemol coordinate file, and the updated coordinates will then be displayed (if you specify the variable 'icloseopen=1' in the .ctl file; see Section 4.3). Note, that this is not foolproof, because in case the MD program is writing the coordinates at exactly the same time as Moviemol wants to read them, Moviemol will abort. Also note that if you want to monitor , for example, an MD run, by displaying only the most recent frame (perhaps in a separate window on your workstation while running the simulation in another window), this can be achieved by having just the results for the last timestep in the file that Moviemol should read, and then setting icloseopen=1 and iforever=1 in the $CNTRL file (see Section 4.3). The interfacing of Moviemol with e.g. an MD program is further facilitated by the following feature. By specifying 'ireadstdinp=1' in the .ctl file (which then has to be called moviemol.ctl; see further Section 4.1) Moviemol will then expect the coordinates to be read from 'standard input'. It is consequently possible to run Moviemol like this: moviemol < ex1.xyz . Now the coordinates from e.g, an MD program ("mdexe") can be displayed as they are generated , using the following command: mdexe | moviemol . 5.10. ...The program's default values in the radius, colour and weight arrays Colours and radii and chemical symbols for atomic numbers 101- 500 generally follow those in the range 1-100. Some details were given in Section 4.2. Colour codes: 0=black 4=red 8=grey 12=salmonpink 1=darkblue 5=purple 9=blue 13=magenta 2=green 6=toffee 10=greenyellow 14=yellow 3=lightblue 7=lightgrey 11=turquoise 15,16=white H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar etc. data atomcolor/ 3, 13, X 14, 5, 2, 0, 1, 4, 5, 15, X 13, 11, 14, 6, 7, 14, 10, 15, X 13, 13, 10*13, 13, 7, 7, 4, 4, 4, X 13, 13, 10*13, 13, 13, 7, 7, 4, 4, X 13, 13, 24*13, 13, 13, 13, 13, 7, 4, X 13, 13, 12*13, / This is the colour scheme for elements 1-100 and for elements 101-200 and 201-300. For elements 301-500 all atom colours are = 11. data radvdw / 1.2, 1.4 X 1.8, 1.4, 1.7, 1.7, 1.6, 1.6, 1.5, 1.5, X 2.3,1.7, 1.7, 2.1, 1.8, 1.8, 1.8, 1.9, X 2.8,2.1,10*1.4, 1.9,1.9,1.8,1.8,1.8,1.9, X 2.9,2.2,10*1.4, 1.9,2.2,2.1,2.1,1.9,2.2, X 3.0,2.3,24*1.4, 2.0,2.0,2.1,2.1,1.9,2.2, X 3.1 2.4 12*1.6 / This is the scheme for elements 1-100 and for elements 101-500. H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar etc. data radcov / 0.4, 0.4, X 1.3,0.9, 0.8,0.8,0.8,0.8,0.7,0.7, X 1.5,1.3, 1.2,1.2,1.1,1.0,1.0,1.0, X 2.0,1.7,10*1.3, 1.3,1.2,1.2,1.2,1.1,1.2, X 2.1,1.9,10*1.4, 1.4,1.4,1.4,1.4,1.3,1.3, X 2.2,2.0,24*1.4, 1.5,1.5,1.5,1.5,1.4,1.4, X 2.3,2.1,12*1.5 / This is the scheme for elements 1-100 and for elements 101-500. data weight / 1.0, 4.0, X 6.9,9.0, 10.8, 12.0, 14.0, 16.0, 19.0, 20.2, X 23.0, 24.3, 27.0, 28.0, 31.0, 32.0, 52.0, 40.0, X 39.1, 40.1, 10*55., 69.7, 72.6, 74.9, 79.0, 79.9, 83.8, X 85.5, 87.6, 10*101.,115., 119., 122., 128., 127., 131., X 133., 137., 24*190.,204., 207., 209., 210., 210., 222., X 223., 226., 12*241. / This is the scheme for elements 1-100 and for elements 101-500. 6. Additional programs 6.1. Conversion from Gaussian92 or Hondo v8.0 normal coordinates to Moviemol input One useful application area for Moviemol, is the visualization of normal-mode vibrations as obtained from standard quantum- mechanical packages. It is easy to write a program which transforms the output fromsuch programs to Moviemol input, but we can of course provide you with the source code we have used, if you are interested. Our program "vibromol.f" reads a Gaussian92 or Hondo v8.0 normal-mode alculation output and creates a Moviemol input. The amplitudes can either be chosen at will or they can be chosen to correspond to amplitudes of a classical oscillator in thermal equilibrium at a given temperature or of a quantum-mechanical oscillator in thermal equilibrium. The vibrational modes can be visualized individually or all of them simultaneously. 6.2. Conversion from Crystal Coordinates to Moviemol input. Most crystallographic program systems can put out cartesian coordinates, which can thereafter be displayed in Moviemol (note, however, that cell-type data can be displayed in Moviemol if iunit=5 or icrystal=1 is specified, see above). 7. Six demonstration examples Some illustrative examples are shipped along with the Moviemol program. Please note that the .ctl files belonging to these examples are unnecessarily elaborate! We have made it that way to show you as many examples as possible of different options available in Moviemol. Ex. 1: The first example is called "ex1". To display this, give the command "moviemol", and type "ex1" at the prompt (see Section 2). This example illustrates an MD simulation of water vapour at 400 K, using the MCYL [by G.C. Lie and E.C. Clementi, 1986] water-water potential. Ref.: L. Ojamae and K. Hermansson (1993). Ex. 2: This is an MD simulation of a solution of Al3+ ions in water, at about 300K. Only one Al3+ ion, its first hydration shell and a few molecules from the second hydration shell have been selected for display. Ref.: A. Bakker, K. Hermansson, J. Lindgren, P. Bopp and M.M. Probst, To be published. Ex. 3: Example 3 illustrates one phonon mode in the LiOH.H2O crystal, calculated by ab initio periodic Hartree-Fock calculations. Ref.: L. Ojamae, K. Hermansson, C. Pisani, M. Causa and C. Roetti, Acta Cryst. B50, 268-279 (1994). Ex. 4: This example illustrates one of the intramolecular normal modes in the triflate ion (CF3SO3-). The force field and the normal modes were calculated in the Gaussian program and the Moviemol frames were generated via our vibromol.f program (Section 6.1). Ref.: S. P. Gejji, K. Hermansson and J. Lindgren , J. Phys. Chem. 97, 3712-3715 (1993). Ex. 5: This is a single-frame picture of the crystal structure of RbH3(SeO3)2 determined by neutron diffraction. Ref.: R. Tellgren and R. Liminga, Ferroelectrics 15, 15-20 (1977). Ex. 6: This is a single-frame picture of the C60 buckminster fullerene structure. Ref.: H.W. Kroto, J.R. Heath, S.C. O'Brian, R.F. Curl and R.E. Smalley Nature 318, 162 (1985). 8. Authors and Trademarks For communication concerning the Moviemol program, contact one of the authors or send an email to: moviemol@kemi.uu.se Authors: Dr. Kersti Hermansson Dr. Lars Ojamae Dept. of Inorganic Chemistry Department of Chemistry Uppsala University The Ohio State University Box 531 120 West 18th Avenue S-751 21 Uppsala, Sweden Columbus, OH 43210-1173 Phone: +46 (0)18-183767 Phone: +1 614-292-7806 Reference to the program: K. Hermansson and L. Ojamäe, University of Uppsala, Institute of Chemistry, Report UUIC-B19-500 (1994). IBM is a registred trademark and RISC System/6000 is a trademark of International Business Machine Corporation. Silicon Graphics is a registred trademark and Graphics Library is a registred trademark of Silicon Graphics, Inc. X Window System is a trademark of the Massachusetts Institute of Technology. NDP is a trademark of Microway, Inc. Postscript is a trademark of Adobe Systems Incorporated. Gaussian92 is a trademark of Gaussian, Inc., Pittsburgh, PA (1992). Hondo v8.0 by M. Dupuis et al., in: MOTECC, Ed. E. Clementi, ESCOM, Leiden (1990). This program manual was written on January 3, 1995. Copyright (C) 1995 Kersti Hermansson & Lars Ojamae