4.1 The Geometry Main Menu

After some preliminaries providing the title etc. you reach the geometry main menu:

sy <group> <eps> : DEFINE MOLECULAR SYMMETRY (default for eps=3d-1)  
                    COORDINATES (default for eps=1d-6)  
a <file>         : ADD ATOMIC COORDINATES FROM FILE <file>  
i                : INTERNAL COORDINATE MENU  
m                : MANIPULATE GEOMETRY  
w <file>         : WRITE MOLECULAR COORDINATES TO FILE <file>  
name             : CHANGE ATOMIC IDENTIFIERS  
del              : DELETE ATOMS  
banal            : CARRY OUT BOND ANALYSIS  

This menu allows you to build your molecule by defining the Cartesian coordinates interactively (ai) or by reading the coordinates from an external file (a, aa). The structure can be manipulated by the commands sub, m, name and del. The command sy allows you to define the molecular symmetry while desy tries to determine automatically the symmetry group of a given molecule.

There exists a structure library which contains the Cartesian coordinates of selected molecules, e.g. CH4. These data can be obtained by typing for example a ! ch4 or a ! methane. The data files are to be found in the directory $TURBODIR/structures. The library can be extended.

You can perform a geometry optimization at a force field level to preoptimize the geometry. For this purpose the Universal Force Field (UFF) developed from Rappé et al. in 1992 [7] has been implemented in the uff module (see also Section 5.4). This can also be used to calculate an analytical approximate cartesian Hessian. If one does so, the start Hessian for the ab initio geometry optimization is this Hessian instead of the diagonal one ($forceinit on carthess for relax module).


Here is an easy way to get internal coordinates, which should work.

Have coord ready before calling define. In the main geometry menu proceed as follows to define redundant internals:

a coord

read coord


determine symmetry, if you expect a higher symmetry, repeat with increased tolerance desy 0.1 , you may go up to desy 1..


get redundant internals


quit main geometry menu

To define internals:

a coord

read coord


determine symmetry


go to internal coordinate menu


automatic assignment of bends etc.


to quit bond analysis


to get the metric, unnecessary internals are marked d now. If #ideg = #k in the head line you are done. Otherwise this did not work.


go back to main geometry menu


quit main geometry menu

To define cartesians:

a coord

read coord


determine symmetry


quit main geometry menu

4.1.1 Description of commands

Main Geometry Menu

In the headline of this menu you can see the current number of atoms and molecular symmetry (we use an input for PH3 as example). The commands in this menu will now be described briefly:


Definition of the Schönflies symbol of the molecular point group symmetry. If you enter only sy, define will ask you to enter the symbol, but you may also directly enter sy c3v. define will symmetrize the geometry according to the new Schönflies symbol and will create new nuclei if necessary. You therefore have to take care that you enter the correct symbol and that your molecule is properly oriented. All TURBOMOLE programs require the molecule to be in a standard orientation depending on its point group. For the groups Cn, Cnv, Cnh, Dn, Dnh and Dnd the z-axis has to be the main rotational axis, secondary (twofold) rotational axis is always the x-axis, σv is always the xz-plane and σh the xy-plane. Oh is oriented as D4h. For Td, the threefold rotational axis points in direction (1,1,1) and the z-axis is one of the twofold axes bisecting one vertex of the tetrahedron.


desy allows you to determine the molecular symmetry automatically. The geometry does not need to be perfectly symmetric for this command to work. If there are small deviations from some point group symmetry (as they occur in experimentally determined structures), desy will recognize the higher symmetry and symmetrize the molecule properly. If symmetry is lower than expected, use a larger threshold: <eps> up to 1.0 is possible.


susy leads you through the complete subgroup structure if you want to lower symmetry, e.g. to investigate Jahn–Teller distortions. The molecule is automatically reoriented if necessary.
Example: Td D2d C2v Cs.


You may enter Cartesian atomic coordinates and atomic symbols interactively. After entering an atomic symbol, you will be asked for Cartesian coordinates for this type of atom until you enter *. If you enter &, the atom counter will be decremented and you may re-define the last atom (but you surely won’t make mistakes, will you?). After entering *, define asks for the next atom type. Entering & here will allow you to re-define the last atom type and * to leave this mode and return to the geometry main menu. Enter q as atom symbol if you want to use a dummy center without nuclear charge. Symmetry equivalent atoms are created immediately after you entered a set of coordinates.

This is a convenient tool to provide e.g. rings: exploit symmetry group Dnh to create an n-membered planar ring by putting an atom on the x-axis.

a file

You may also read atomic coordinates (and possibly internal coordinates) from file, where file must have the same format as the data group $coord in file control.

The Cartesian coordinates and the definitions of the internal coordinates are read in free format; you only have to care for the keywords $coord and (optionally) $intdef and (important!) for the $end at the end of the file. The atomic symbol follows the Cartesian coordinates separated by (at least) one blank. For a description of the internal coordinate definitions refer to 4.1.2.

Entering ‘!’ as first character of file will tell define to take file from the structure library. (The name following the ‘!’ actually does not need to be a filename in this case but rather a search string referenced in the structure library contents file, see Section 4.1).

aa file

same as a, but assumes the atomic coordinates to be in Å rather than a.u.


This command allows you to replace one atom in your molecule by another molecule. For example, if you have methane and you want to create ethane, you could just substitute one hydrogen atom by another methane molecule. The only requirement to be met by the substituted atom is that it must have exactly one bond partner. The substituting molecule must have an atom at the substituting site; in the example above it would not be appropriate to use CH3 instead of CH4 for substitution. Upon substitution, two atoms will be deleted and the two ones forming the new bond will be put to a standard distance. define will then ask you to specify a dihedral angle between the old and the new unit. It is also possible to use a part of your molecule as substituting unit, e.g. if you have some methyl groups in your molecule, you can create further ones by substitution. Some attention is required for the specification of this substituting unit, because you have to specify the atom which will be deleted upon bond formation, too. If you enter the filename from which the structure is to be read starting with ‘!’, the file will be taken from the structure library (see Section 4.1). Definitions of internal coordinates will be adjusted after substitution, but no new internal coordinates are created.


This command offers a submenu which contains everything related to internal coordinates. It is further described in Section 4.1.2.


This command offers a submenu which allows you to manipulate the molecular geometry, i.e. to move and rotate the molecule or parts of it. It is further described in Section 4.1.3.


Here, the fragments will be defined as being used by the jobbsse script in order to do a calculation osing the counter-poise correction scheme. In this menu, up to three monomers can be defined, together with their charges and their symmetry. When assigning atom numbers to fragments, if x is entered instead of a number, the program will request the first and last atoms of a range. This will be useful for very large fragments.

w file

The command w writes your molecular geometry and your internal coordinates to file. Afterwards you will be back in the geometry main menu. If the filename entered starts with ‘!’, the structure will be written to the structure library.


name allows you to change atomic identifiers turning, e.g. oxygen atoms into sulfur atoms. After entering the identifier to be changed (remember the double quotation marks : "c ring"), you will be asked to enter the new one. You can use question marks for characters not to be changed, e.g. you enter "??ring" to change c chain to c ring. If you do not enter eight characters, your input will be filled up with trailing blanks.


The command del allows you to delete one or more atoms. After you entered the atomic list, define will show you a list of all atoms concerned and will ask you to confirm deleting these atoms. If any internal coordinate definitions exist, which rely on some of the deleted atoms, these definitions will be deleted, too.


The command banal allows you to perform a bonding analysis, that is, define will try to decide which atoms are bonded and which are not (according to a table of standard bond lengths which is included in the code of define). You must have performed this command before you can use the display commands disb (display bonding information) or disa (display bond angle information). The standard bond lengths (and the bonding analysis available from these) are also needed for the commands sub and iaut (see internal coordinate menu, Section 4.1.2). If you want to change the standard bond lengths (or define more bond lengths, because not for all possible combinations of elements a standard length is available) you can do that by creating your own file with the non-default values and by specifying its full pathname in file .sys.data. The file has the following simple format:

c - h  2.2  
h - h  2.0  
. - .  ...

The format of the entries is almost arbitrary: the two element symbols have to be separated by a bar, the new bond distance follows in free format (in atomic units). If the file cannot be read properly, a warning message is displayed.


This command leaves this first main menu and writes all data generated so far to file. The default output file is the file you choose in the first question during your define session (usually control). Now the data groups $coord and $intdef will be written to file. After leaving this menu, you will enter the atomic attributes menu, which is described in Section 4.2.

4.1.2 Internal Coordinate Menu

INTERNAL COORDINATE MENU  ( #ideg=6       #k=2    #f=0    #d=0    #i=0 )  
            e.g. ic 5 d TO MAKE 5TH COORD. display OR ic k d  
            e.g. irem d TO REMOVE ALL display COORDS  
dis       : ANY DISPLAY COMMAND e.g. disi OR disc  
       <i>= INDEX(LIST) OF INTERNAL COORDINATE(S) LIKE 3-6,8 OR <i>=<x>  
       <x>= STATUS OF INTERNAL COORDINATE = k, f, d OR i  

The parameters in the headline of this menu have the following meanings:


is the total number of symmetry restricted degrees of freedom.


is the number of active internal coordinates specified up to now. Only these coordinates are optimized during a geometry optimization.


is the number of fixed internal coordinates specified. These coordinates will be included in the B-matrix (see command imet), but their values will not be changed during geometry optimization.


is the number of internal coordinates whose values will only be displayed (e.g. by command disi), but no gradients will be calculated for these coordinates nor will they be included in the geometry optimization.


means the number of coordinates which are defined, but will be completely ignored, i.e. they are not even displayed on the screen and will not be used by any program (this is the waste-paper-basket of define).

Note that the #k plus #f must equal the number of degrees of freedom (#ideg) of your molecule, if you want to perform a geometry optimization. If you have less coordinates than degrees of freedom, you will have to specify further ones (commands idef or iaut, see below); if you have more coordinates than degrees of freedom, you will have to throw away some of them (commands irem or imet, see below).

The commands in this menu allow you to define internal coordinates for your molecule, adjust your geometry to special values of these internal coordinates and to control the numeric reliability of the chosen set of internal coordinates. In detail, the commands act as follows.

Description of commands

imet a

This command computes the so-called B-matrix, which is the matrix of the derivatives of the (active and fixed) internal coordinates with respect to Cartesian coordinates. This matrix is used in program relax for the conversion from Cartesian coordinates and gradients to internal ones and vice versa. If this matrix is singular (or even nearly singular) this indicates a linear dependency of your internal coordinate set. As a consequence the geometry update (more exactly the transformation of the updated internal coordinates into Cartesian ones) will fail. This may also happen in the course of a geometry optimization if the coordinates run into linear dependency during their optimization. imet checks the B-matrix and removes linear dependent internal coordinates from your list (their status is changed from #k or #f to #d). If B is only near singular, a warning is issued and the lowest eigenvalue(s) as well as the corresponding eigenvector(s) are displayed. In this case, you should try to find better internal coordinates (although this may not always be possible). After the command imet, there may be too few (active plus fixed) internal coordinates, but certainly not too many (because linear dependencies have been eliminated). Perhaps you will have to add new ones or—better!—try command iaut or ired in the preceding menu.

Command imet should be used always after creating internal coordinates with iaut or idef (especially after iaut, because this command creates usually an overcomplete set of internal coordinates).


idef unfolds a little submenu where you can define internal coordinates manually. The exact procedure of the definition will be described below in a separate section.

ideg a

This command gives you the number of symmetry restricted degrees of freedom (for the atomic set specified by a). Without symmetry, this is just 3N - 6, where N is the number of atoms, but if there is symmetry, some of these degrees of freedom will violate symmetry and therefore are not valid. For geometry optimizations, only the symmetry allowed degrees of freedom are needed, because the symmetry requirements are imposed anyway. In connection with the optional atomic set a this command can help you to find out, in which part of a complicated molecule internal coordinates are missing, if you fail to get the full number of #ideg (which equals the result of ideg all) for the molecule as a whole.


iaut tries an automatic definition of internal coordinates. This command relies on an recursive procedure which tries to simplify the molecule as far as possible and then starts the definition of internal coordinates. At present not all molecular topologies are supported, therefore it may happen that no internal coordinates can be assigned to your molecule or at least a part of it. However, for all cases in which an automatic assignment of coordinates is possible, iaut has up to now proved to provide very good internal coordinates. If iaut works for your molecule (and in most non-pathological cases it will) we recommend strongly to use these coordinates, as they may help you to save several cycles in the geometry optimization procedure. After creating internal coordinates with iaut you should always use imet (see above), because iaut may provide an overcomplete set of coordinates. All coordinates which conflict with the molecular symmetry are set to ignore by iaut.

iman a

iman allows you to modify the values of internal coordinates. If you specify a list of atoms a only those internal coordinates which refer to only these atoms will be handled. You will get a list of all (active and fixed) internal coordinates and their current values and you will be able to enter a new value for each of them if you like. Default (<enter>) keeps the value shown. Be aware that all distances are given in atomic units (1a.u. = 52.9pm).

ic i x

This option allows you to change the status of a coordinate, e.g. from active to display or every other combination. The syntax is ic 5 d, if coordinate no. 5 is to be set to display, or ic k d, if all active coordinates are to be set to display.

irem i

This option allows you to delete definitions of internal coordinates from your list. The indices of the internal coordinates always refer to the full list of coordinates including display and ignore coordinates. To make sure you delete the right ones, use disi. Also the indices will immediately change if you delete coordinates. If you want to delete several coordinates, this is therefore done most easily if you delete them in order of descending indices (because deletion of a coordinate has only an effect on the coordinates with higher indices). After choosing the coordinates to be deleted, a list of all coordinates involved will be displayed and you will be asked to confirm deletion.

The syntax is simply irem 5 to delete internal coordinate no. 5 or irem d to remove all ‘display’ coordinates.

Hitting <return> will bring you back to the geometry main menu.

Interactive Definition of Internal Coordinates

If you choose idef in the internal coordinate menu, you will get the following information:

                <x> <type> <indices>  
WHERE    <x>       = k    f    d    i  
         <type>    = stre invr bend outp tors linc linp  
                    comp ring pyrm bipy pris cube octa  
<x> <type>? FOR SOME CHOICE OF <x> AND <type>, E.G. k stre ?  

The <x> means the status (see page 99) of the internal coordinate entered (k, f, d, i). The syntax is:

k stre 1 2  
d tors 3 6 2 7  
f bend 3 4 5  
i outp 3 4 7 9

Note that in the third example atom 5 is the central atom of the angle!

Specification of available internal coordinates

The following types of coordinates are available:


The stre (for stretch) describes a distance between two atoms. It needs only two atomic indices to be given, the order of which is arbitrary.


The invr coordinate (for inverse r) describes an inverse distance. The declaration is the same as for stre, but in some cases (if you are far away from the minimum) the use of invr may result in better convergence.


bend describes a bond angle. It requires three atoms to be specified, of which the third one is the atom at the apex.


Out-of-plane angle: outp abcd is the angle between bond a-d and plane b - c - d.


Dihedral angle: tors abcd is the angle between the planes a - b - c and b - c - d.


This is a special coordinate type to describe the bending of a near-linear system. linc abcd describes the collinear bending of a-b-c (where the angle is defined as for bend: the apex atom appears last) in the plane of b - c - d (see also below, command linp). The system b - c - d has to be non-linear, of course.


This coordinate is similar to linc, but describes the bending of a-b-c perpendicular to the plane b - c - d. These two types of coordinates are in most cases sufficient to describe the bending of near-linear systems. An example may help you to understand these two coordinate types. Consider ketene, H2CCO, which contains a linear system of three atoms. Without symmetry, this molecule has 9 degrees of freedom. You could choose the four bond lengths, two CCH angles and the out-of-plane angle of the C–C bond out of the CHH–plane. But then two degrees of freedom still remain, which cannot be specified using these normal coordinate types. You can fix these by using linc and linp. The two coordinates linc 1 3 2 4 and linp 1 3 2 4 (where 1=oxygen, 2=carbon, 3=carbon, 4=hydrogen) would solve the problem.


The type comp describes a compound coordinate, i.e. a linear combination of (primitive) internal coordinates. This is often used to prevent strong coupling between (primitive) internal coordinates and to achieve better convergence of the geometry optimization. The use of linear combinations rather than primitive coordinates is especially recommended for rings and cages (see ref.  [28]). Command iaut uses linear combinations in most cases.

After you entered k comp n where n is the number of primitive internal coordinates to be combined, you will be asked to enter the type of the coordinate (stre, bend, …). Then you will have to enter the weight (the coefficient of this primitive coordinate in the linear combination) and the atomic indices which define each coordinate. The definition of the primitive coordinates is the same as described above for the corresponding coordinate types. It is not possible to combine internal coordinates of different types.


This type helps you to define special ring coordinates. You only have to enter k ring n where n is the ring size. Then you will be asked for the atomic indices of all atoms which constitute the ring and which must be entered in the same order as they appear in the ring. The maximum number of atoms in the ring is 69 (but in most cases the ring size will be limited by the maximum number of atoms which is allowed for define).

Hitting <return> will bring you back to the internal coordinate menu where you can see the new number of internal coordinates in the headline.

4.1.3 Manipulating the Geometry

Note that the molecular geometry can be modified with the iman command of the internal coordinate menu described earlier, if internal coordinates has been defined. Another option is to select m in the geometry main menu which provides the following submenu:


The meaning of the commands inert and mback should be clear; command move allows you to manipulate the geometry of your molecule. After entering move, you will be asked to specify a set of atoms on which the command shall act. You can use this to manipulate only a part of your molecule, e.g. if you are building a structure from subunits and you want to adjust their relative arrangement. As long as you stay in this menu, the molecular symmetry needs not be correct (so that you can try different movements and/or rotations), but as soon as you leave it, the geometry will be symmetrized according to the present Schönflies symbol. After you specified the atomic set to be considered, you get the following information:


You can thus specify the direction of movement (or the rotational axis) in the form 0. 0. 1. or simply z (which both describes the z-axis) or 1.3256 -3.333 0.2218 for an arbitrary axis. If you want to specify an axis which is related to your molecule, you may also enter two atomic indices which define it. After having specified the axis, you have to enter the distance of movement and the angle of rotation. If you want to perform a simple rotation, enter 0 for the distance of movement and if you want to simply move your structure, enter 0 for the rotational angle.

You can leave this menu and return to the geometry main menu by hitting <return> or by entering any command of the geometry main menu.