#
13 Data files

VIEWMOL uses a data file named `viewmolrc` for getting information about atoms and available input and output filters. There may be three of these files. VIEWMOL looks at first in the current directory for this file, then in the users HOME directory for a file `.viewmolrc` and finally in the directory where the environment variable `VIEWMOLPATH` points to. In one of these three locations such a file must be found. The file should contain the following data:

- Lines of the format:
  option <name of option> <name of input filter> [<command line options for input filter>] "<characteristic string>"
  These lines define the input filters for VIEWMOL and the command line options connected with them (i. e. you can change the command line option if you want). <option> is the command line option VIEWMOL expects on its command line or the word `default`. The input filter connected with `default` is used if no command line option is passed to VIEWMOL. If no default input filter is specified VIEWMOL displays a file selection box. <name of input filter> is the path to and name of the input filter executable. If the input filter requires command line option (e. g. a file name) they can be specified after the name of the input filter. `'%s'` is used as a placeholder for file names. The path or name of the input filter can contain environment variables or the string `$OSNAME`. The latter is replaced by the subdirectory name for the machine VIEWMOL is currently running on. "<characteristic string>" is a string which is used to identify the type of a particular file. The first 1024 characters of an input file passed to VIEWMOL are scanned for this string and the input filter connected with the string is then used to read the file. Therefore these strings have to be unique for each input filter and have to be in every file of a certain type within the first 1024 characters. Since most programs write their names out at the beginning these restrictions seem to be no problem.
- Lines of the format:
  output <reference to resources> <name of output filter> [<command line options for output filter>] `'%s'`
  These lines define the output filters for VIEWMOL. <reference to resources> is an arbitrary string which must refer to a resource in the `$VIEWMOLPATH/locale/en_US/Viewmol` file. This string is used to provide the label for the output filter in the output filter selection box. <name of output filter> is the path to and name of the output filter executable. All output filters should at least accept the name of the output file from their command lines. If additional parameters are required they can also be specified after the name of the output filter. `'%s'` is used as a placeholder for the output file name. Environment variables or the string `$OSNAME` can be used in the same way as for input filters.
- Lines of the format:
  <symbol> <rad> <rd> <gd> <bd> <rl> <gl> <bl> <surface>
  <symbol> is an atomic symbol, <rad> is the Van der Waals radius of this atom in Ångstrøms, <rd>, <gd> and <bd> are the red, green and blue color for the darkest part of this atom and <rl>, <gl> and <bl> are the red, green and blue color for the lightest part of the atom. There are five reserved strings for <symbol>. If <symbol> is `bd` the following description describes a hydrogen bond. The <rad> field is also interpreted as the radius of all bond sticks. All other fields are only applied to hydrogen bonds. `uc` specifies a unit cell corner. Radius and color given here affect the appearance of the unit cell. `ps` and `ms` specify the surface properties for the positive and negative isosurface, respectively, used to draw wave function related topics. In these cases the radius is not used. `??` specifies the properties for atoms where the atomic symbol could not be found. <surface> is an optional specification for the surface used when stick, ball, or CPK drawing with surfaces is activated. <surface> is a list of one or more of the following options
  - emission <r> <g> <b>
    The emission color of the surface. Using this option causes the surface to emit light. <r>, <g<, and <b> are the red, green and blue components for the light color.
  - ambient <r> <g> <b>
    The ambient light which is reflected by the surface. <r>, <g<, and <b> are the red, green and blue components for the light color.
  - specular <r> <g> <b>
    The specular light which is reflected by the surface. <r>, <g<, and <b> are the red, green and blue components for the light color.
  - shininess <n>
    A parameter which determines the kind of reflection. <n> can be in the range 0 ... 128.
  - alpha <n>
    This parameter determines the transparency of the surface. 0.0 indicates an opaque surface, 1.0 a fully transparent one.
  All color specifications can be between 0.0 and 1.0. The total length of a line specifying an atom is restricted to 132 characters. The keywords for the surface specifications can be abbreviated with the first two letters.

Any line starting with '#' is treated as a comment.

VIEWMOL makes extensive use of X Windows resources. All standard search algorithms for the location of the resources apply (see e. g. O'Reilly books on the X Window System). VIEWMOL has English resources compiled in. Resources for other languages are provided in the directory `$VIEWMOLPATH/locale` and might be installed as described in the installation section of this manual (p. ).

The following resources are used to specify the defaults. They can be overwritten in the user's `$HOME/.Xdefaults` file or, in part, by the configuration options available in the program. Defaults configurable from within the program are marked with an asterisk (*).

      Viewmol*geometry:                                    500x500+50+50  (*)
      Viewmol.history.geometry:                            500x250+50+590 (*)
      Viewmol.spectrum.geometry:                           500x250+50+590 (*)
      Viewmol.MODiagram.geometry:                          250x500+565+50 (*)
      Viewmol.Bell:                                              <no default>
      Viewmol.model:                                                 wire (*)
      Viewmol.drawingMode:                                        surface (*)
      Viewmol.bondType:                                        conjugated (*)
      Viewmol.sphereResolution:                                        20 (*)
      Viewmol.lineWidth:                                                0 (*)
      Viewmol.simplifyWhileRotating:                                False (*)
      Viewmol.interpolation:                                       linear (*)
      Viewmol.bondLength:                                           %7.4f Ang
      Viewmol.bondAngle:                                            %7.2f deg
      Viewmol.torsionAngle:                                         %7.2f deg
      Viewmol.wavenumbers:                                             0:5000
      Viewmol.isosurface:                                            0.05 (*)
      Viewmol.densityResolution:                                     0.01 (*)
      Viewmol.reservedColors:                                               0
      Viewmol.hydrogenBondThreshold:                                  2.0 (*)
      Viewmol.automaticRecalculation:                               False (*)
      Viewmol.thermoUnits:                                         joules (*)
      Viewmol*spectrumForm*amplitudeSlider.decimalPoints:                   2
      Viewmol*spectrumForm*amplitudeSlider.minimum:                      -250
      Viewmol*spectrumForm*amplitudeSlider.maximum:                       250
      Viewmol*spectrumForm*scaleSlider.decimalPoints:                       2
      Viewmol*spectrumForm*scaleSlider.minimum:                            50
      Viewmol*spectrumForm*scaleSlider.maximum:                           150
      Viewmol*thermoForm*pressureSlider.decimalPoints:                      2
      Viewmol*thermoForm*pressureSlider.minimum:                            1
      Viewmol*thermoForm*pressureSlider.maximum:                         1000
      Viewmol*wavefunctionForm*level.decimalPoints:                         3
      Viewmol*wavefunctionForm*level.minimum:                               1
      Viewmol*wavefunctionForm*level.maximum:                             100
      Viewmol*wavefunctionForm*grid.minimum:                                4
      Viewmol*wavefunctionForm*grid.maximum:                               40
      Viewmol*wavefunctionForm*grid.value:                                 20
      Viewmol*MODiagramForm*resolution.minimum:                             1
      Viewmol*MODiagramForm*resolution.maximum:                          1000
      Viewmol*MODiagramForm*resolution.decimalPoints:                       3
      Viewmol*MODiagramForm*resolution.value:                              10
      Viewmol*unitcellForm*avalue.minimum:                                 10
      Viewmol*unitcellForm*avalue.maximum:                                 50
      Viewmol*unitcellForm*avalue.decimalPoints:                            1
      Viewmol*unitcellForm*bvalue.minimum:                                 10
      Viewmol*unitcellForm*bvalue.maximum:                                 50
      Viewmol*unitcellForm*bvalue.decimalPoints:                            1
      Viewmol*unitcellForm*cvalue.minimum:                                 10
      Viewmol*unitcellForm*cvalue.maximum:                                 50
      Viewmol*unitcellForm*cvalue.decimalPoints:                            1
      Viewmol*unitcellForm*hvalue.minimum:                                 -5
      Viewmol*unitcellForm*hvalue.maximum:                                  5
      Viewmol*unitcellForm*kvalue.minimum:                                 -5
      Viewmol*unitcellForm*kvalue.maximum:                                  5
      Viewmol*unitcellForm*lvalue.minimum:                                 -5
      Viewmol*unitcellForm*lvalue.maximum:                                  5
      Viewmol*bondForm*thresholdSlider.minimum:                           100
      Viewmol*bondForm*thresholdSlider.maximum:                           250
      Viewmol*bondForm*thresholdSlider.decimalPoints:                       2
      Viewmol*bondForm*scaleRadius.minimum:                                 1
      Viewmol*bondForm*scaleRadius.maximum:                               200
      Viewmol*bondForm*scaleRadius.decimalPoints:                           2
      Viewmol*infoForm*text*rows:                                           6
      Viewmol*infoForm*text*columns:                                       80
      Viewmol.paperSize:                                               A4 (*)
      Viewmol.elementSortOrder:                                     C,H,N,O,S
      Viewmol.viewer*font:                                           variable
      Viewmol.spectrum*font:                                         variable
      Viewmol.history*font:                                          variable
      Viewmol.MODiagram*font:                                        variable
      Viewmol.viewer.background:                                    white (*)
      Viewmol.viewer.foreground:                                   gray75 (*)
      Viewmol.viewer.delay:                                                 0
      Viewmol*spectrum.spectrum.background:                         white (*)
      Viewmol*spectrum.spectrum.foreground:                         black (*)
      Viewmol*history.history.background:                           white (*)
      Viewmol*history.history.foreground:                           blue  (*)
      Viewmol*MODiagram.MODiagram.background:                       white (*)
      Viewmol*MODiagram.MODiagram.foreground:                       black (*)
      Viewmol.MODiagram.MODiagram.greekFont:
                                          -adobe-symbol-medium-r-normal--14-*
      Viewmol*foreground:                                           black (*)

The `Viewmol.Bell` resource is the only resource which does not have a default. As long as this resource is not set the standard keyboard bell is rung as soon as a selection in one of the windows is made by mouse click. This resource can be set to the name (and command line parameters) of any program which shall be run instead, preferably one which produces a nicer sound effect.

The `Viewmol.model` resource can be set to wire, stick, ball, or cpk. The `Viewmol.drawingMode` resource can be set to dot, line, or surface. The `Viewmol.bondType` resource can be set to single, multiple, or conjugated. The `Viewmol.interpolation` resource can be set to none, linear, or logarithmic. The resources for specifying formats for bond lengths, bond angles, and torsion angles have to contain a valid C format string for printing a floating point number. The resource for the bond lengths recognizes Ang, pm, bohr, and au in the format string as units and converts the bond lengths accordingly. The `Viewmol.reservedColors` resource can be used to limited the number of colors allocated by VIEWMOL if it runs in colormap mode. VIEWMOL tries to allocate as much colors as it can. This might interfere with others program. In this case `Viewmol.reservedColors` can be used to tell VIEWMOL to leave the specified number of colors unallocated. The `Viewmol.thermoUnits` resource can be set to joules, calories, or thermochemical calories. In case of the specifications for the sliders the values given for minimum and maximum have to be multiplied by 10decimalPoints. I. e., if the number of decimals is to be changed also minimum and maximum have to be changed. Paper sizes currently recognized are A5, A4, A3, Letter, Legal, and <width> x <heigth> where <width> and <height> are in millimeters.

The `Viewmol.viewer.foreground` resource is used for the color of the ground if perspective drawing is enabled. The `Viewmol.viewer.delay` resource can be set to the delay for an animation. If this resource is set to a value larger than zero VIEWMOL pauses the given number of microseconds after drawing a new frame of an animation.